Deixe o agente gerenciar seu próprio progresso
“O agente pode acompanhar seu próprio progresso – e eu posso ver isso.” Deixe o modelo criar sua própria lista e então use um pequeno mecanismo para que ele lembre de atualizar a lista.
autoplanejamento estruturado
Claude Code muitas vezes precisa executar vários passos ao trabalhar: grep para encontrar referências → ler alguns arquivos → alterar o código → executar testes. Se você deixar o modelo “avançar pelo tato”, verá que ele se sai bem nos primeiros passos, depois começa a esquecer no meio e finalmente desiste no meio do caminho.
A solução para s03 é fornecer uma ferramenta de manifesto: o modelo ajusta sua própria ferramenta todo para inserir itens de tarefa nele, e TodoManager verifica a estrutura, persiste e retorna a visualização atual. Isto tem duas vantagens:
- O modelo é forçado a explicitar "o que fazer" - apenas escrevê-lo ajuda a esclarecer seu pensamento.
- Os humanos podem ver o que estão pensando. A experiência de depuração é dez vezes melhor.
# visualização TODO, cada item é estruturado [] #1: grep "TODO" em src/ [>] #2: leia src/app.py e liste os comentários # em andamento [] #3: gerar remarcação resumida [] #4: escreva para TODO_LIST.md (0/4 concluído)
Uma regra rígida: há apenas um in_progress por vez
TodoManager.update() Há uma verificação:
se in_progress_count > 1: raise ValueError("Apenas uma tarefa pode estar em andamento por vez")
Pode parecer duro, mas na verdade está ajudando o modelo. Se você permitir 3 “ações” ao mesmo tempo, ele começará a lutar em todos os lugares e nunca terminará nenhuma delas. Avanço forçado de uma única missão, é forçado a completar cada uma antes de abrir a próxima.
O widget abaixo permite que você atue como modelo, envie várias cargas de tarefas e veja quais passam na verificação e quais são rejeitadas.
Lembrete irritante: nenhuma atualização por 3 rodadas consecutivas? cutuque
Mesmo que a ferramenta de tarefas seja fornecida, o modelo ocasionalmente "esquecerá" de atualizar a lista - ele fez muitas coisas, mas in_progress ainda está preso no item 2. A movimentação em s03 é um contador muito simples:
rounds_since_todo = 0 while Verdadeiro: resposta = LLM(mensagens, ferramentas) ... used_todo = qualquer(b.name == "todo" para b em usos de ferramentas) rounds_since_todo = 0 se used_todo else rounds_since_todo + 1 se rounds_since_todo >= 3: results.append({"type":"text", "text":"<reminder>Atualize seus todos.</reminder>"})
Quando a contagem chegar a 3, inclua um lembrete na próxima rodada de mensagens do usuário. Quando o modelo vir isso, ele ajustará instintivamente o todo. Isto consiste em usar meios de engenharia para transformar uma restrição suave ("Por favor, mantenha-a atualizada") em um estímulo forçado.
Qual é o nome dessa rotina?
Nos círculos de design de agentes, isso é chamado de autoplanejamento estruturado com toques suaves — dando ao modelo um estado estruturado no qual ele deve escrever, complementado por lembretes oportunistas. O Código Claude usa um padrão semelhante no código real, mas mais restrito (baixa frequência, redação neutra).
Por que não escrever "atualizar tarefas a cada passo" no prompt do sistema? Escrever é possível, mas a obediência do modelo às instruções gerais no prompt do sistema diminuirá à medida que a conversa aumenta. Dividir as instruções em “lembretes que são constantemente reinjetados” é muito mais estável.