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…
On this page
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
gateque 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
- Barra concreta. Não "deixe ótimo" — um artefato que você abre, roda ou mede. Adjetivo deixa o agente declarar vitória na primeira rodada.
- 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.
- 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.
- Sem limite de rodada. A barra decide quando acabou, não um cronograma.
O que este repositório acrescenta
| Só o prompt | gauntlet-kit | |
|---|---|---|
| Escolha da barra | você escreve a cada vez | proposta automática de uma biblioteca por domínio em bars/ |
| Estado do loop | no contexto do agente | em 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 agente | gate falha sem veredito e artefato de evidência |
| Empate | critério do juiz | contado como derrota, por projeto |
| Progresso | perguntar ao agente | página HTML ao vivo autossuficiente |
| Harness | copiar e colar por ferramenta | entrypoint 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.
donenã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
- gauntlet-kit — repositório — as quatro ideias, fases do protocolo, layout e limites honestos citados acima.
- 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.