delegate_subagent permite ao agente principal delegar uma sub-tarefa focada para uma instância separada do loop ReAct, com janela de contexto própria. O subagente executa, gasta seus próprios tokens e retorna apenas o resumo final — os tool calls intermediários e os outputs brutos ficam isolados na sub-sessão e não poluem o contexto do pai.
Esse padrão é o que projetos como o Claude Code chamam de “Task” subagents, e resolve um problema clássico: análises sobre payloads grandes (Prometheus /metrics, logs verbosos, busca exaustiva no repo) que acabariam consumindo dezenas de milhares de tokens só com dados brutos no histórico do agente principal.
Quando usar
| Cenário | Use delegate_subagent? |
|---|---|
Resumir um endpoint /metrics de 50K caracteres extraindo apenas top-3 hotspots | ✅ Sim — payload bruto fica no subagente, só o resumo volta |
| Encontrar todos os call sites de uma função no repo | ✅ Sim — varredura larga, resposta curta |
| Analisar 200KB de logs e identificar a stack trace relevante | ✅ Sim |
| Ler 1 arquivo conhecido e fazer um patch | ❌ Não — overhead da delegação não vale para tarefas pequenas |
| Executar 3 ações independentes em paralelo | ❌ Use <agent_call> multi-agent — paraleliza melhor |
| Tarefa que precisa do contexto acumulado da conversa | ❌ Não — subagente não vê o histórico do pai |
Sintaxe
A tool é exposta comodelegate_subagent no native function calling e como subcomando delegate do @coder no formato XML:
- Native (preferido)
- XML (/coder mode)
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
description | string | Não | Rótulo curto exibido nos logs (ex: "analisar metrics"). |
prompt | string | Sim | Instruções completas para o subagente. Seja explícito sobre o formato de saída esperado — o subagente não tem acesso ao histórico do pai. |
tools | array de strings | Não | Allowlist de subcomandos do engine que o subagente pode usar. Default: conjunto read-only (read, search, tree, git-*). |
read_only | boolean | Não | Se true (default), bloqueia write, patch, exec. Defina false para conceder o conjunto completo de tools. |
max_turns | integer | Não | Limite de iterações do loop ReAct interno do subagente. Default: 15. |
O que o pai recebe
A saída devolvida ao agente principal é a string final do subagente, prefixada por um cabeçalho com metadados de telemetria:Limites e proteções
| Limite | Default | Variável de override |
|---|---|---|
| Profundidade máxima de delegação aninhada | 2 | CHATCLI_AGENT_SUBAGENT_MAX_DEPTH |
| Iterações ReAct por subagente | 15 | CHATCLI_AGENT_SUBAGENT_MAX_TURNS |
| Tamanho máximo do output devolvido ao pai | ~30 KB | MaxWorkerOutputBytes (constante interna) |
delegate_subagent aninhado incrementa.
Tools allowlist
Por padrão, o subagente recebe um conjunto read-only seguro:read_only: false e listar quais quer:
read_only: true + tools: [...] com algum tool de escrita resulta em bloqueio na hora da execução — read_only tem precedência.
Diferenças de outras formas de delegação
| Aspecto | delegate_subagent | <agent_call> | Tool call inline |
|---|---|---|---|
| Contexto | Janela própria, isolada do pai | Janela própria, isolada do pai | Mesmo contexto do pai |
| Paralelismo | Sequencial (um por vez) | Paralelo (várias tags numa só resposta) | Paralelo via batch |
| Escolha de agent | Loop ReAct genérico | Catálogo de agents especializados | N/A |
| Roteamento por modelo | Não — usa o cliente do pai | Sim — Model hint no agent | Não |
| Indicado para | Análises focadas que produzem resumo | Tarefas paralelas com tipos de expertise diferentes | Operações triviais e baratas |
Exemplo completo — análise de métricas
Cenário: o usuário pede para diagnosticar um pico de memória. Semdelegate_subagent, o agente faria web_fetch no /metrics, receberia 50K chars no contexto e gastaria tokens analisando o output bruto turno após turno.
Com delegação:
webfetch (já com filter aplicado), faz uma segunda passada se precisar, e devolve um resumo de ~500 chars. O agente principal entrega esse resumo ao usuário sem ter visto o payload bruto.
Próximos Passos
Multi-Agent
Para tarefas paralelas em vez de delegação isolada.
Session Workspace
O scratch dir compartilhado entre pai e subagente.
Resultados de Tools
Como o output do subagente é truncado se for grande demais.
Web Tools
Filtros do
@webfetch que combinam com delegação.