Multi-agent — coordenar múltiplos agentes
TL;DR
Multi-agent em Claude Code é o padrão de ter um agente orquestrador que define o plano e despacha sub-agents para executar partes independentes. O orquestrador não executa código — gerencia. Cada sub-agent executa em contexto limpo com escopo bem definido. O valor: tarefas em paralelo com contexto isolado, sem a degradação de uma sessão monolítica longa.
Papéis no sistema multi-agent
Orquestrador
Responsabilidades:
- Receber o objetivo de alto nível
- Decompor em tarefas independentes
- Definir o contexto mínimo de cada tarefa
- Despachar sub-agents
- Revisar e integrar os resultados
- Identificar dependências entre tarefas
O orquestrador não implementa. Ele planeja e coordena.
Sub-agents
Responsabilidades:
- Executar uma tarefa específica com contexto fornecido
- Reportar resultado e problemas encontrados
- Não tomar decisões de arquitetura além do escopo recebido
Um sub-agent não sabe o que os outros sub-agents estão fazendo — e não deveria.
Estrutura de um sistema multi-agent
Objetivo: "Implementar sistema de pagamentos"
↓
Orquestrador: decompõe em 4 tarefas
↓
┌──────────────┬──────────────┬──────────────┬──────────────┐
│ Sub-agent 1 │ Sub-agent 2 │ Sub-agent 3 │ Sub-agent 4 │
│ PaymentSvc │ WebhookSvc │ UI checkout │ Testes e2e │
│ (paralelo) │ (paralelo) │ (paralelo) │ (depende 1-3)│
└──────────────┴──────────────┴──────────────┴──────────────┘
↓
Orquestrador: revisa, integra, commita
Decomposição efetiva pelo orquestrador
O primeiro trabalho do orquestrador é mapear dependências:
"Antes de despachar sub-agents, vou mapear as dependências:
Tarefa 1: PaymentService (src/services/payment.ts)
→ Depende de: src/config/stripe.ts (já existe)
→ Nenhuma tarefa depende dela para começar
Tarefa 2: WebhookService (src/services/webhooks.ts)
→ Depende de: PaymentService (precisa dos tipos de Payment)
→ Aguarda Tarefa 1 completar
Tarefa 3: UI de checkout (src/components/Checkout.tsx)
→ Depende de: tipos de Payment (src/interfaces/payment.ts)
→ Pode rodar em paralelo com Tarefa 1
Tarefa 4: Testes e2e (tests/e2e/payment.test.ts)
→ Depende de: Tarefas 1, 2, 3 completas
Plano: Despachar Tarefas 1 e 3 em paralelo.
Depois despachar Tarefa 2 quando 1 completar.
Despachar Tarefa 4 quando 2 e 3 completarem."
Prompt de dispatch com contexto cirúrgico
O orquestrador prepara o contexto do sub-agent com precisão:
"Sub-agent para PaymentService:
OBJETIVO: Implementar src/services/payment.ts
CONTEXTO RELEVANTE:
- src/interfaces/payment.ts — tipos (já definidos, não altere)
- src/config/stripe.ts — Stripe client configurado
- src/services/orders.ts — exemplo do padrão de serviço a seguir
- src/utils/logger.ts — use este logger, nunca console.log
- src/utils/errors.ts — AppError para erros de negócio
TESTES: tests/services/payment.test.ts (já escritos, faça passar)
ESCOPO: apenas src/services/payment.ts
NÃO MEXA em: routes, interfaces, outros serviços
PRONTO QUANDO: todos os testes em tests/services/payment.test.ts passam"
Coordenação de resultados
Depois que sub-agents completam:
"PaymentService e CheckoutUI completaram.
Agora revise os dois antes de despachar WebhookService:
1. src/services/payment.ts usa os tipos de src/interfaces/payment.ts
corretamente? O WebhookService vai depender desses tipos.
2. src/components/Checkout.tsx consome a API do PaymentService
da forma esperada? Se não, corrija antes de continuar.
Reporte: os outputs são compatíveis entre si?"
Anti-padrões no multi-agent
Orquestrador que implementa
❌ Errado:
"Enquanto espero o sub-agent do PaymentService,
vou implementar eu mesmo o WebhookService..."
✓ Correto:
"Enquanto espero o sub-agent do PaymentService,
vou revisar os requisitos do WebhookService e preparar
o contexto para o próximo dispatch."
Sub-agent com escopo vago
❌ Errado:
"Implemente o sistema de pagamentos"
✓ Correto:
"Implemente src/services/payment.ts conforme os tipos em
src/interfaces/payment.ts. Faça passar tests/services/payment.test.ts.
Não mexa em outros arquivos."
Sub-agents dependentes em paralelo
❌ Errado:
Despachar WebhookService em paralelo com PaymentService
quando WebhookService importa tipos de PaymentService.
✓ Correto:
Aguardar PaymentService completar.
Revisar os tipos exportados.
Então despachar WebhookService com esses tipos como contexto.
Multi-agent com worktrees
Para isolamento máximo, cada sub-agent pode trabalhar em sua própria worktree:
# Orquestrador cria worktrees
git worktree add ../proj-payment feat/payment-service
git worktree add ../proj-checkout feat/checkout-ui
# Sub-agents rodam em worktrees separadas
# Terminal 1: cd ../proj-payment && claude (sub-agent para payment)
# Terminal 2: cd ../proj-checkout && claude (sub-agent para checkout)Cada sub-agent tem arquivos completamente separados — sem conflito possível, mesmo editando arquivos adjacentes.
Quando multi-agent faz sentido
Faz sentido quando:
- O objetivo tem ≥3 partes independentes que levam horas cada
- Você consegue definir critério de pronto para cada parte
- As partes têm interfaces bem definidas entre si
- O projeto tem boa cobertura de testes (sub-agents precisam saber quando terminaram)
Não faz sentido quando:
- A tarefa é pequena o suficiente para uma sessão
- As partes são profundamente interdependentes
- Você não sabe o suficiente para definir o escopo de cada sub-agent
- A arquitetura ainda está sendo decidida (decida antes de despachar)
Veja também
- 07 - Sub-agents e dispatch — como criar e instruir sub-agents
- 06 - Sessões paralelas — worktrees para isolamento físico
- 01 - Plan Mode — planejar a decomposição antes de despachar
- Time e Automação — multi-agent em contexto de time
- Workflows — índice do galho