Aula 04 · planejamento

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.

⏱ ~10 min · 📝 3 componentes interativos · 🧑‍💻 Baseado em shareAI-lab · s04_subagent.py

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?

Interativo

Widget 1 · Pai vs Filho · comparação do tamanho do contexto

Duas estratégias para a mesma tarefa. Clique em Executar e observe o comprimento final das mensagens[] em ambos os lados e a estimativa total do token.

🧠 父 agent 亲自做
messages: 0 · ~0 tokens
🎯 spawn subagent
messages: 0 · ~0 tokens
Interativo

Widget 2 · Verdadeiro ou Falso · Direitos e responsabilidades dos agentes pai e filho

6 T/Fs para testar sua compreensão dos limites de isolamento.

答对 0 / 6
Interativo

Widget 3 · Quando gerar · Quais tarefas são adequadas para serem atribuídas ao subagente?

Você recebe 6 descrições de tarefas, decida se (A) o agente pai faz isso sozinho ou (B) o subagente de geração. Não existe um “direito absoluto”, mas existem vantagens e desvantagens óbvias.

答对 0 / 6