ArtificialGuyBR

Home / Blog / Fixing things

Gauntlet Kit: um loop que continua construindo até vencer

Protocolo de agente para qualquer agente de código: barra de qualidade concreta, crítico independente, A/B cego contra referência real e gate que falha sem e…

2 sources cited Fixing things

Gauntlet Kit: um loop que continua construindo até vencer

TL;DR

  • A ferramenta transforma "construa X" num loop: constrói, recebe veredito de um crítico independente contra uma barra de qualidade real, reconstrói, até vencer.
  • Quatro ideias fazem o trabalho: barra concreta que você abre ou mede, construtor ≠ crítico, A/B cego com rótulo removido e ordem aleatória, e sem limite de rodada.
  • O artigo entrega um prompt; aqui você tem protocolo executável com estado do loop em disco, que sobrevive a compactação, e um gate que falha sem veredito e artefato de evidência.
  • Zero dependência, Node 18+; Playwright só se você quiser screenshot automático.

O que é e para quem

O gauntlet-kit empacota o Gauntlet Loop para qualquer agente de código — Claude Code, Codex, Cursor, Copilot, Gemini CLI ou qualquer coisa que leia AGENTS.md. O método vem de Matt Shumer, que construiu um FPS de 55.000 linhas com cara de AAA a partir de um único prompt, fazendo os agentes compararem o próprio trabalho com screenshots reais de Call of Duty e continuarem até vencer; Ben Tossell escreveu sobre o método.

É para quem tem um agente que produz algo que funciona e parece pronto em uma rodada, e não tem como saber se ficou bom de verdade. O README resume a interface em duas linhas: aponte o seu harness para o repositório e diga o que quer construído.

As quatro ideias

  1. Barra concreta. Não "deixe ótimo" — um artefato que você abre, roda ou mede. Adjetivo deixa o agente declarar vitória na primeira rodada.
  2. Construtor não é o crítico. O construtor lembra por que fez cada escolha e vai defendê-la; o veredito vem de um contexto novo que nunca viu o raciocínio.
  3. A/B cego. Remova o rótulo e aleatorize a ordem, senão o crítico pontua "o nosso" com generosidade e o loop acaba cedo.
  4. Sem limite de rodada. A barra decide quando acabou, não um cronograma.

O que este repositório acrescenta

Só o promptgauntlet-kit
Escolha da barravocê escreve a cada vezproposta automática de uma biblioteca por domínio em bars/
Estado do loopno contexto do agenteem disco, sobrevive a compactação e retomada
A/B cego"faça uma comparação cega"par aleatorizado em disco, mapa escondido do juiz
"Pronto"a palavra do agentegate falha sem veredito e artefato de evidência
Empatecritério do juizcontado como derrota, por projeto
Progressoperguntar ao agentepágina HTML ao vivo autossuficiente
Harnesscopiar e colar por ferramentaentrypoint para Claude Code, Codex, Cursor, Copilot, Gemini

Como roda

Fase 0  fixar a barra     →  concreta, inspecionável, externa, acima do seu nível
Fase 1  decompor          →  4–12 partes julgáveis de forma independente
Fase 2  o gauntlet         →  por parte: construtor → captura → A/B cego → crítico novo → lacuna → repetir
Fase 3  suavizar           →  fazer o trabalho de vários agentes parecer um produto
Fase 4  parar              →  venceu, retorno decrescente ou orçamento. Nunca "parece bom agora"

Rodar são três comandos e uma forma de acompanhar:

node scripts/gauntlet.mjs status     # cada parte, rodada, lacuna atual
node scripts/gauntlet.mjs progress   # escreve progress/live.html
node scripts/gauntlet.mjs gate       # sai com 1 se falta evidência em alguma parte

O protocolo completo está em gauntlet/LOOP.md e as restrições duras em gauntlet/RULES.md. Os dois são escritos para o agente executar, não para você ler, embora sejam curtos. O ledger — partes, rodadas, vereditos, evidências — fica em gauntlet/state/, e agents/ guarda os cartões de prompt de decompositor, construtor, crítico, juiz cego e suavizador.

O conselho do README sobre acompanhar é uma linha: assista de longe, porque interromper o construtor no meio da rodada custa a rodada.

Limites honestos

O README lista cinco, e eles são a parte útil:

  • Barra ruim produz resultado ruim com confiança. A barra é a única coisa que merece sua atenção.
  • É caro. Muitos agentes, muitas rodadas, token de verdade: computação trocada por qualidade.
  • Tem coisa que não vira barra. Se a saída não pode ser inspecionada, comparada ou medida, o método não tem onde agarrar.
  • O crítico ainda pode errar. Ele é calibrado para ser duro e para preferir a referência, o que custa rodadas extras — de propósito, porque a falha oposta termina o loop cedo.
  • done não é won. Parte que empaca em retorno decrescente é reportada como empacada, com a lacuna residual.

Quando usar, quando não usar

Use quando a parte difícil é gosto e não correção — uma landing page, o feel de um jogo, a ergonomia de um CLI — e você tem uma referência real para comparar. A barra pode ser a página de um concorrente, um screenshot, uma spec ou uma medida, mas precisa ser algo que um crítico consiga olhar.

Não use quando a saída não pode ser inspecionada nem medida, e não pule a Fase 0: barra vaga é o modo de falha que produz resultado ruim com confiança. E leia o status antes de acreditar numa vitória — done não é won.

Sources

  1. gauntlet-kit — repositório — as quatro ideias, fases do protocolo, layout e limites honestos citados acima.
  2. README.md — comandos, layout, crédito e licença (MIT).

Página do projeto: Gauntlet Kit

É um pacote independente e não afiliado ao método.

FAQ

Precisa de chave de API ou serviço? Não. O README afirma zero dependência e Node 18+; Playwright só é necessário para screenshot automático.

O que faz o loop parar? A barra, não um limite de rodada — o README lista vitória, retorno decrescente ou orçamento, e nunca "parece bom agora".

Por que empate conta como derrota? Por projeto, para que crítico generoso não encerre o loop cedo numa comparação que estava empatada.

Onde fica o estado do loop? Em disco, no gauntlet/state/, então sobrevive a compactação e retomada, e o gate falha quando uma parte não tem veredito e evidência.