Base: anatomia do loop|INEMA.CLUB-PRO

Aula 3 · 18 min

Os motores de loop hoje: /goal, /loop, Ralph, routines, codex exec

Há cinco jeitos comuns de pôr um agente em loop, e eles respondem de forma diferente a duas perguntas: o que dispara o próximo turno e quem decide parar. Escolher errado custa caro: um /loop esperando uma condição que nunca vem, um /goal que acredita no que o agente disse. Aqui fica só o que a documentação oficial confirma, lida em 19/10/2026.

Começar a aula
Cronômetro, motor de passo, temporizador mecânico, peça em forma de nuvem e módulo de servidor enfileirados numa bancada escura.

Nesta aula você vai

  1. 1/goal: por condição, com um avaliador que só lê a conversa
  2. 2/loop e routines: por tempo ou por evento, e onde cada um roda
  3. 3Ralph e codex exec: a sessão descartável dentro de um laço seu
  4. 4Uma regra simples para escolher

Objetivo: escolher o motor de loop certo para uma tarefa sabendo onde roda, o que dispara o próximo turno, quem decide parar e o limite de cada um.

01Cinco motores, cinco limites

Clique em cada motor: o que dispara o próximo turno, quem decide parar e o limite que a doc oficial dá.

Role a página: cada etapa abaixo acende a sua parte do diagrama.

  1. 1/6

    /goal

    Depois de cada turno, um modelo pequeno julga a sua condição: atingida, não atingida ou impossível. É um Stop hook baseado em prompt, por sessão. Limite: o avaliador não roda comandos nem lê arquivos, só julga a conversa; a prova tem que estar impressa. Não muda o modo de permissão. Com -p roda até o fim numa chamada.

  2. 2/6

    /loop

    Repete um prompt num intervalo fixo (/loop 5m …) ou escolhido pelo Claude a cada volta, de 1 minuto a 1 hora. Limites: é da sessão e só dispara com o Claude Code aberto e ocioso; mínimo de 1 minuto; tarefa recorrente expira em 7 dias; o auto-ritmado não volta no --resume. Serve para vigiar, não para perseguir condição.

  3. 3/6

    Ralph

    Técnica descrita por Geoffrey Huntley: em sua forma pura, um laço de bash que chama o agente com o mesmo prompt, sem fim. Cada sessão é descartável; o que sobra está nos arquivos e no git. A Anthropic cita o padrão como convergência da comunidade. Limite: não tem parada nem verificação de fábrica; quem põe é você (aulas 6 e 7).

  4. 4/6

    Routines

    Configuração salva (prompt, repositórios, conectores) que roda na infraestrutura da Anthropic, com o notebook fechado. Limites: está em research preview (comportamento e limites podem mudar); trabalha num clone novo, sem acesso aos seus arquivos locais; intervalo mínimo de 1 hora na agenda.

  5. 5/6

    codex exec

    Roda o Codex sem interface: recebe o pedido por argumento ou stdin, trabalha e sai. Por padrão a sandbox é só leitura; --sandbox workspace-write libera edição. --json dá os eventos em JSONL, -o grava a última mensagem, exec resume --last continua a anterior. Limite: não é um loop; o laço, o teste e a parada ficam num script seu (o loop headless é o curso 2).

  6. 6/6

    Duas perguntas escolhem o motor

    O próximo turno vem de uma condição, de um relógio ou de um laço seu? E quem decide parar: um avaliador que lê a conversa, você, ou um teste que roda de verdade? O motor que roda o teste fora da conversa é o mais difícil de enganar.

Fontes: docs oficiais do Claude Code (/goal, scheduled tasks, routines) e do Codex (modo não interativo), lidas em 19/10/2026; ghuntley.com/ralph.

02Qual usar

Uma regra de bolso a partir dos limites acima.

1. Tarefa com fim que se prova

Migrar um módulo até compilar e passar os testes, esvaziar uma fila de issues. A condição precisa ter um estado final, o comando que prova e o que não pode mudar no caminho.

Ponha um teto na própria condição, como a doc sugere: "ou pare depois de 20 turnos".

Condiçãopython3 -m pytest -q tests/ imprime 6 passed, nenhum arquivo em tests/ foi modificado, ou pare depois de 15 turnos

03Os cinco em uma linha cada

Comandos da documentação oficial e do artigo do Ralph. Rode só os que você vai usar na prática.

Claude Code · /goal interativo e sem interface
/goal python3 -m pytest -q tests/ imprime 6 passed e git diff --stat -- tests/ sai vazio, ou pare depois de 15 turnos
/goal clear

claude -p "/goal CHANGELOG.md tem uma entrada para cada PR desta semana" --output-format stream-json --verbose
Claude Code · /loop por tempo
/loop 5m confira se o deploy terminou e me diga o que aconteceu
/loop confira se o CI passou e responda aos comentários de revisão
Ralph · a forma pura (ghuntley.com/ralph)
while :; do cat PROMPT.md | claude-code ; done
Codex · uma execução sem interface
codex exec "conte os arquivos .md desta pasta e responda só com o número"
codex exec --sandbox workspace-write "crie ola.txt com a palavra ola"
codex exec --json "resuma a estrutura do repositório" > eventos.jsonl
codex exec resume --last "agora corrija o que você encontrou"
Simulação: exemplo ilustrativo

Do jeito que está, o laço não tem parada nem verificação: roda até você apertar Ctrl+C. O nome do executável no artigo é o do autor; na sua máquina seria claude -p ou codex exec -. Nas aulas 6 e 7 você acrescenta o critério e os tetos que faltam.

04Prática

Na sua máquina. São execuções curtas: gastam pouco da sua cota.

E1 · Um /goal com prova na saída

10 min

Numa pasta vazia com git iniciado, abra o Claude Code e rode: /goal o arquivo ola.txt existe e cat ola.txt imprime ola na conversa, ou pare depois de 5 turnos.

Pronto quando: cat ola.txt → ola, e o status do goal no Claude Code mostra a condição como atingida, com a contagem de turnos.

E2 · codex exec só leitura

5 min

Na mesma pasta, peça ao Codex sem interface para contar arquivos, gravando a última mensagem num arquivo.

Pronto quando: codex exec -o resposta.txt "quantos arquivos .txt há nesta pasta? responda só com o número"; echo "saída: $?" → saída: 0, e grep -cE '^[0-9]+$' resposta.txt → 1 (a resposta é uma linha só com um número; o critério confere o formato, não o que o modelo respondeu).

E3 · Escolha justificada

10 min

Liste três tarefas reais suas num arquivo motores.md, uma por linha, no formato tarefa → motor → por quê (gatilho e quem decide parar).

Pronto quando: grep -c '→.*→' motores.md → 3, e nenhuma tarefa com fim verificável ficou com /loop.

05Teste da aula

Pergunta 1 de 5

Sua condição do /goal é "todos os testes passam". O agente escreve "rodei os testes, todos passam" sem mostrar a saída. O que acontece?competência

06Em três frases

Gatilho e juizCada motor difere no que dispara o próximo turno (condição, tempo, laço, evento) e em quem decide parar.
Limites oficiais/goal julga só a conversa; /loop vive na sessão e expira em 7 dias; routines rodam na nuvem sem seus arquivos; codex exec é uma execução, não um loop.
Ralph é a baseUm laço que chama o agente com estado em arquivos; parada e verificação você acrescenta.

Para ir além

Aula anteriorPróxima aula