Lide com grandes problemas para um agente recém-aberto
"O isolamento do processo oferece isolamento do contexto gratuitamente." O agente filho faz o trabalho sujo e o agente pai coleta apenas o resumo limpo.
O dilema do agente pai
Imagine que você pediu a Claude Code para "descobrir como esse repositório Rust de 100.000 linhas lida com a simultaneidade". Abordagem intuitiva: faz ls, cat, grep e pesquisas no contexto principal.
Problema: Esta rodada de exploração acumulará 30 resultados de ferramentas em mensagens[], cada um com vários milhares de tokens. No momento em que ele realmente começa a escrever a resposta, o contexto já foi preenchido pelo processo de exploração - o limite superior será acionado após mais algumas etapas e a resposta ainda será confusa.
Solução para s04: Passe a tarefa de exploração para um novo agente. O novo agente começa em messages=[], explora o seu próprio e, finalmente, retorna apenas o resumo ao agente pai. O contexto pai possui apenas mais uma frase: "A ferramenta de tarefa foi ajustada uma vez e o resultado foi XXX", o que é refrescante.
def run_subagent(prompt: str) -> str: sub_messages = [{"role":"user", "content": prompt}] # Novo contexto for _ dentro intervalo(30): # Limite superior de segurança para evitar perda de controle resposta = client.messages.create(..., mensagens=sub_messages, ferramentas=CHILD_TOOLS, ...) ... # Somente o último texto é retornado, todo o raciocínio intermediário é descartado return "".join(b.text para b in resposta.content se hasattr(b, "texto"))
Comparação de contexto de pai e filho
Este widget simula uma tarefa real: "Listar todos os locais neste warehouse que chamam API obsoleta". Você pode executá-lo com duas estratégias: (A) o agente pai faz isso sozinho; (B) gerar um subagente. Compare os tamanhos dos dois últimos contextos à esquerda e à direita.
CHILD_TOOLS: Quais ferramentas o subagente pode obter?
Há um detalhe na implementação do s04 que é fácil de ignorar: o subagente não consegue obter a ferramenta de tarefa.
# O subagente só pode usar ferramentas básicas e não pode gerar neto CHILD_TOOLS = [bash, read_file, write_file, edit_file] #O agente pai tem mais uma ferramenta de tarefa PARENT_TOOLS = CHILD_TOOLS + [tarefa]
Por quê? Evite que o despacho recursivo se torne uma explosão de árvore. Um subagente gera quatro subagentes e há dezenas de chamadas simultâneas em apenas algumas rodadas. Nem o token nem o limite de velocidade da API podem lidar com isso. A convenção de s04: spawn é plano e uma camada de pai → filho é uma camada. Este também é o caso na implementação real do Código Claude - é proibido chamar novamente a ferramenta Tarefa na ferramenta Tarefa.
visível e invisível
Vamos resolver os direitos e responsabilidades: Qual das seguintes perguntas você acha que é V e qual F você acha?