Guia

Um fluxo noturno para agentes de código

A promessa é simples. Você vai dormir com uma lista de tarefas e acorda com pull requests. A maioria das primeiras tentativas termina de outro jeito. Sai um diff gigante que ninguém consegue revisar, ou um agente travado em uma pergunta desde a 1 da manhã. A diferença não é o modelo. É como o trabalho é empacotado. Este é o fluxo que gera manhãs revisáveis.

Escreva as tarefas como faria para um prestador novo

Uma tarefa noturna não tem a quem perguntar. Ela precisa levar o próprio contexto. Cada tarefa deve caber em um parágrafo e responder três perguntas. O que está errado ou faltando. Como é o pronto. Como provar.

## Task: paginate the /orders endpoint
Problem: GET /orders returns every order. Large accounts time out.
Done: accepts ?cursor and ?limit (max 100), returns next_cursor.
Proof: new tests in tests/orders_pagination.test.ts pass; existing tests pass.
Do not: change the response shape of existing fields.

Mantenha as tarefas pequenas. Duas a quatro horas de trabalho humano é o tamanho ideal. Maior do que isso, divida. Uma tarefa que o agente termina em vinte minutos também serve. Coloque as tarefas em um arquivo no repositório ou em issues que o agente consiga ler. Um arquivo é o mais simples.

Uma tarefa, uma branch, um worktree

As tarefas não podem compartilhar uma árvore de trabalho. Duas tarefas editando a mesma cópia geram um diff que ninguém consegue desembaraçar. Os worktrees do Git dão a cada tarefa a sua própria pasta no mesmo repositório.

git worktree add ../work/orders-pagination -b agent/orders-pagination
git worktree add ../work/retry-webhooks -b agent/retry-webhooks

Cada branch tem a sua própria execução do agente e o seu próprio pull request. De manhã você revisa um por vez. Se um estiver ruim, você fecha e os outros ficam intactos.

Decida o que o agente faz sozinho

Defina o modo de permissão e a lista de negação antes da primeira execução, não depois. O guia para rodar o Claude Code sem supervisão tem os ajustes exatos. A versão curta para o trabalho noturno é esta. Editar arquivos à vontade. Rodar a suíte de testes à vontade. Fazer commit e push da branch da tarefa à vontade. Abrir um pull request. Nada mais sem perguntar, e nada que saia do repositório.

O loop de execução

Um script pequeno inicia uma execução headless por tarefa, no worktree dela, com um teto de turnos e um arquivo de log. É só isto.

#!/bin/sh
# run-overnight.sh: one agent run per task file in tasks/
for task in tasks/*.md; do
  name=$(basename "$task" .md)
  dir="../work/$name"
  git worktree add "$dir" -b "agent/$name" 2>/dev/null
  (
    cd "$dir" || exit 1
    claude -p "Complete the task in $task. Commit on this branch, push it, and open a pull request with gh pr create. Stop when the tests pass or when you are blocked, and say which." \
      --permission-mode acceptEdits \
      --max-turns 80 \
      > "../logs/$name.log" 2>&1
  )
done

Rode dentro do tmux para que a conexão SSH não importe. As tarefas rodam uma depois da outra. Execuções em paralelo são possíveis, mas disputam CPU e o seu limite de uso, e deixam os logs mais difíceis de ler. Comece em sequência.

Deixe os testes serem o juiz

O prompt manda o agente parar quando os testes passarem. Depois, o seu CI roda os mesmos testes no pull request. Se o agente disse verde e o CI diz vermelho, você sabe antes de ler uma linha do diff. Proteja a main para que nada entre sem essa verificação. Esta é a proteção mais valiosa do fluxo e não custa nada.

A revisão da manhã, em dez minutos

  • Abra a lista de pull requests. Compare com a lista de tarefas. Os que faltam estão nos logs.
  • Leia o log de tudo que parou como bloqueado. Normalmente é uma credencial faltando ou uma tarefa ambígua. Corrija o texto da tarefa, não o agente.
  • Revise os pull requests verdes do menor para o maior. Faça merge dos que estão certos. Feche os errados com uma linha dizendo por quê, e copie essa linha para o arquivo de tarefas de amanhã.
  • Apague os worktrees e as branches que já entraram, para que a noite de hoje comece limpa.
git worktree remove ../work/orders-pagination
git branch -d agent/orders-pagination

O que entregar primeiro

Alguns trabalhos combinam mais com a noite do que outros. Comece por estes e amplie conforme a confiança cresce.

  • Testes que falham ou são instáveis, com um comportamento esperado claro.
  • Atualizações de dependências em que a suíte de testes é o juiz.
  • Refatorações mecânicas em muitos arquivos.
  • Testes que faltam para código que já funciona.
  • Erros de tipo, erros de lint e avisos de descontinuação.

Deixe para o dia as decisões de design, tudo que mexe com cobrança ou autenticação e tudo que os testes não conseguem verificar. De dia você pode responder perguntas.

A máquina por baixo

Tudo isso supõe uma máquina que ainda está rodando às 4 da manhã. Um notebook que entra em repouso é o motivo mais comum para uma execução noturna não produzir nada. O guia sobre repouso resolve isso em um Mac seu, e um Mac para agentes hospedado já vem com isso resolvido.

Perguntas frequentes

Quantas tarefas um agente consegue fazer em uma noite?

+

Em sequência, geralmente de quatro a oito do tamanho de duas a quatro horas. Depende de quanto tempo os testes levam e dos limites de uso do seu plano. A qualidade cai mais rápido que a quantidade quando as tarefas são vagas, então invista o seu tempo no texto das tarefas.

Devo rodar o Claude Code e o Codex no mesmo backlog?

+

Não nas mesmas tarefas. Dê a cada um as suas próprias tarefas e os seus próprios worktrees. Rodar os dois na mesma tarefa gera dois pull requests concorrentes e dobra a revisão.

E se o agente abrir um pull request que muda muito mais do que a tarefa?

+

Feche e adicione uma linha Do not à tarefa. Sair do escopo é a falha noturna mais comum, e o texto da tarefa é a solução. Um limite rígido de turnos também ajuda.

O agente pode fazer merge dos próprios pull requests?

+

Pode, mas não deve. Proteja a main e exija revisão humana. O objetivo do fluxo todo é você revisar de manhã com a cabeça descansada.

Guias relacionados