🐚 Ralph loop
O padrão mais bruto e mais famoso da casa: o Ralph loop (Geoffrey Huntley / HumanLayer). É um loop de shell infinito que repete o MESMO prompt sem parar. Cada volta muta o código — e esse código mutado vira o estado inicial da próxima volta.
O que ver: o mesmo prompt entra em todas as voltas (a seta não muda); o que muda é o código no meio, que carrega o progresso para a próxima iteração. É o estado externalizado da 4.1 levado ao extremo.
Objetivo do código abaixo
Rodar o mesmo prompt num laço infinito de shell, deixando o agente avançar a tarefa a cada volta — sem você re-digitar nada.
# O Ralph one-liner — cole no seu terminal, na raiz do projeto
# PROMPT.md contém a tarefa; troque o agente pela ferramenta que você usa.
while :; do cat PROMPT.md | npx --yes @sourcegraph/amp ; done
Como verificar / quando usar: rode num repositório descartável (de preferência num worktree isolado — tópico 3) com um git status aberto noutra aba: você verá commits/mudanças surgindo a cada volta. Use para tarefas grandes e repetitivas com verificação embutida; pare cedo — Huntley alerta que rodar demais produz "bizarre emergent behavior". O loop infinito é poderoso e perigoso na mesma medida: combine SEMPRE com guardrails (tópico 4).
⏰ Loops agendados
Owain Lewis (relatado) descreve a forma "frota": um loop é um job que o agente repete — acorda num agendamento ou evento, lê o estado do trabalho, faz UM job escopado dentro de permissões fixas, escreve o resultado, dorme, e repete. É o oposto do Ralph: disciplinado, pequeno, controlado.
O que ver: não é um agente gênio fazendo tudo — é uma frota de agentes pequenos, cada um com um job estreito e permissões fixas. A coordenação é externa (o control plane), não está na cabeça de nenhum agente.
🗂️ Manager (split)
Classifica o backlog: separa o que é fácil e de baixo risco do que precisa de humano. Não escreve código — só roteia trabalho.
🔧 Worker
Implementa os tickets de baixo risco e abre PRs. Nunca dá merge. O humano aprova no fim — a porta final fica com a gente.
Leia o fluxo: as Issues do GitHub são o control plane — a fila de trabalho compartilhada. O manager classifica, o worker implementa e abre PR, e a última porta (o merge) é sempre humana. Nenhum agente fecha o ciclo sozinho.
🌲 Worktrees, sandboxes e permissões fixas
Para rodar vários agentes em paralelo sem que eles pisem uns nos outros — e sem que algum faça algo irreversível — você precisa de isolamento. Três peças: worktrees, sandboxes e permissões fixas.
🌲 Worktree
Isola o trabalho paralelo: cada agente na sua árvore/branch, sem conflito de arquivos.
📦 Sandbox
Isola o ambiente: o agente roda num lugar onde estragar não custa nada de fora.
🔒 Permissões fixas
Definem o que ele PODE fazer: é assim que você deixa um loop rodar sem fazer algo irreversível.
💡 A ideia central das permissões fixas
Permissões fixas são o cinto de segurança do loop autônomo. Você decide ANTES o que o agente pode tocar (esses arquivos, esses comandos) e o que é proibido (prod, segredos, git push --force). Como ninguém está olhando a cada volta, o limite tem que estar no ambiente, não na sua atenção.
🛡️ Guardrails = o trabalho de verdade
O consenso grassroots da comunidade é direto: "os guardrails são o trabalho de verdade, não os agentes." O agente é a parte fácil. O difícil — e o que separa um sistema seguro de um desastre — é desenhar os limites. O worker abre PR, mas nunca dá merge; um humano aprova.
Objetivo do prompt abaixo
Dar ao agente da frota um contrato de permissões explícito — o que ele pode, o que é proibido, e onde tem que parar e pedir aprovação humana.
# Cole no topo do PROMPT.md do seu worker (ajuste os nomes ao seu repo)
REGRAS (não negociáveis):
- Trabalhe APENAS nos arquivos sob .
- Abra um Pull Request ao terminar. NUNCA dê merge você mesmo.
- NUNCA toque em produção, em segredos (.env, chaves) nem em CI/CD.
- PROIBIDO: git push --force, deletar branches, alterar o histórico.
- PARE e peça aprovação humana antes de: ,
ou .
- Se a verificação falhar 3 vezes, pare e escreva o que travou em BLOCKED.md.
Como verificar: rode o worker num worktree de teste e confira o resultado contra cada linha — abriu PR sem merge? não tocou em .env? parou quando bateu numa migração? Se alguma regra foi violada, o guardrail está fraco demais e o prompt precisa ser mais específico. O guardrail só é real quando você o testa contra um agente tentando contorná-lo.
🥊 Maker/checker adversarial & verification specialist
Você viu o Maker→Checker na Trilha 2. Aqui ele sobe de nível: o checker fica adversarial. Em vez de só conferir, um segundo agente (ou painel) tenta QUEBRAR o trabalho — é prompted para refutar, achar o buraco, provar que está errado.
🚨 Cuidado com a fonte: especulação, não fato
Hesamation leu o system prompt do Claude Code e interpretou que ele introduziria um subagente "verification specialist" — mas ele MESMO marcou isso como inferência especulativa, possivelmente inativa.
Trate o "verification specialist" como uma ideia útil de design, não como um recurso confirmado de nenhuma ferramenta. O padrão (separar quem faz de quem refuta) é sólido; a alegação específica sobre o system prompt é especulação.
A diferença adversarial: o checker não pergunta "está bom?", ele pergunta "como provo que está errado?". Só aprova quando NÃO consegue quebrar. Quem faz nunca dá a própria nota — é a regra de ouro da verificação levada ao ataque.
🕸️ Multi-agente / fan-out / orquestração
A frota cresce: um manager promptando agentes que promptam agentes — "Russian nesting dolls" (bonecas russas), aninhamento dentro de aninhamento. O padrão que organiza tudo é uma sequência: orquestrar → delegar (fan-out) → verificar.
Leia o fan-out: A (um orquestrador) → N (vários agentes em paralelo) → 1 (um verificador que junta tudo). O paralelismo dá velocidade; a verificação no fim impede que N erros independentes virem um produto bonito e quebrado.
🧠 Cross-trial memory (Reflexion)
O último padrão muda a unidade do loop: em vez de uma volta, um episódio inteiro. A cross-trial memory (memória entre tentativas, do paper Reflexion) faz o loop atravessar tentativas: agir → receber feedback → refletir em texto → guardar na memória episódica → tentar melhor na próxima.
| Passo | O que acontece |
|---|---|
| 1. Agir | o agente tenta resolver a tarefa (a "trial") |
| 2. Feedback | recebe um sinal de sucesso/falha (testes, avaliador, ambiente) |
| 3. Refletir | escreve em texto por que falhou e o que faria diferente |
| 4. Guardar | salva essa reflexão na memória episódica |
| 5. Tentar de novo | lê a memória e faz uma tentativa melhor — sem re-treinar nada |
🔗 Onde isso te leva
Reflexion é a versão "aprende com o erro" do loop. Combine com os outros padrões: um worker numa frota que GUARDA o que aprendeu fica melhor a cada ticket — sem você ajustar nada. É também a raiz da ideia de "comprehension debt" da 4.3: quanto mais o sistema aprende sozinho, menos você entende por que ele faz o que faz.
No padrão de frota agendada, quem dá o merge do PR?
🧾 Resumo do Módulo
Próximo:
4.3 — Riscos, custo e estudo de caso (o fecho do curso)