Orquestração Multi-Agente Claude DevFleet
Quando Usar
Use esta habilidade quando precisar despachar múltiplos agentes Claude Code para trabalhar em tarefas de codificação em paralelo. Cada agente executa em um worktree git isolado com ferramentas completas.
Configuração
O servidor DevFleet é um projeto separado, não incluso no ECC. Instale e execute-o a partir de seu repositório primeiro: https://github.com/LEC-AI/claude-devfleet
Em seguida, conecte a instância em execução via MCP:
claude mcp add devfleet --transport http http://localhost:18801/mcp
Antes do primeiro uso, verifique se o processo ouvindo na porta 18801 é o binário DevFleet que você instalou (consulte SECURITY.md sobre servidores MCP localhost).
Como Funciona
Usuário → "Construa uma API REST com autenticação e testes"
↓
plan_project(prompt) → project_id + DAG de missões
↓
Mostrar plano ao usuário → obter aprovação
↓
dispatch_mission(M1) → Agente 1 é gerado no worktree
↓
M1 completa → merge automático → despacho automático de M2 (depends_on M1)
↓
M2 completa → merge automático
↓
get_report(M2) → arquivos_alterados, o_que_foi_feito, erros, próximos_passos
↓
Relatar de volta ao usuário
Ferramentas
| Ferramenta | Finalidade |
|---|---|
plan_project(prompt) | A IA divide uma descrição em um projeto com missões encadeadas |
create_project(nome, caminho?, descrição?) | Criar um projeto manualmente, retorna project_id |
create_mission(project_id, título, prompt, depends_on?, auto_dispatch?) | Adicionar uma missão. depends_on é uma lista de IDs de missão (ex.: ["abc-123"]). Defina auto_dispatch=true para iniciar automaticamente quando as dependências forem atendidas. |
dispatch_mission(mission_id, modelo?, max_turns?) | Iniciar um agente em uma missão |
cancel_mission(mission_id) | Parar um agente em execução |
wait_for_mission(mission_id, tempo_limite_segundos?) | Bloquear até que uma missão seja concluída (veja nota abaixo) |
get_mission_status(mission_id) | Verificar o progresso da missão sem bloquear |
get_report(mission_id) | Ler relatório estruturado (arquivos alterados, testados, erros, próximos passos) |
get_dashboard() | Visão geral do sistema: agentes em execução, estatísticas, atividade recente |
list_projects() | Navegar por todos os projetos |
list_missions(project_id, status?) | Listar missões em um projeto |
Nota sobre
wait_for_mission: Isso bloqueia a conversa por atétempo_limite_segundos(padrão 600). Para missões longas, prefira fazer polling comget_mission_statusa cada 30–60 segundos, para que o usuário veja atualizações de progresso.
Fluxo de Trabalho: Planejar → Despachar → Monitorar → Relatar
- Planejar: Chame
plan_project(prompt="...")→ retornaproject_id+ lista de missões com cadeiasdepends_oneauto_dispatch=true. - Mostrar plano: Apresente ao usuário os títulos, tipos e a cadeia de dependências das missões.
- Despachar: Chame
dispatch_mission(mission_id=<id_primeira_missão>)na missão raiz (comdepends_onvazio). As missões restantes são despachadas automaticamente à medida que suas dependências são concluídas (porqueplan_projectdefineauto_dispatch=truenelas). - Monitorar: Chame
get_mission_status(mission_id=...)ouget_dashboard()para verificar o progresso. - Relatar: Chame
get_report(mission_id=...)quando as missões forem concluídas. Compartilhe os destaques com o usuário.
Concorrência
O DevFleet executa até 3 agentes simultaneamente por padrão (configurável via DEVFLEET_MAX_AGENTS). Quando todas as vagas estão ocupadas, missões com auto_dispatch=true entram em fila no monitor de missões e são despachadas automaticamente à medida que as vagas são liberadas. Verifique get_dashboard() para o uso atual de vagas.
Exemplos
Totalmente automático: planejar e lançar
plan_project(prompt="...")→ mostra o plano com missões e dependências.- Despache a primeira missão (aquela com
depends_onvazio). - As missões restantes são despachadas automaticamente à medida que as dependências são resolvidas (elas têm
auto_dispatch=true). - Relate com o ID do projeto e a contagem de missões para que o usuário saiba o que foi lançado.
- Faça polling com
get_mission_statusouget_dashboard()periodicamente até que todas as missões atinjam um estado terminal (completed,failedoucancelled). get_report(mission_id=...)para cada missão terminal — resuma os sucessos e destaque falhas com erros e próximos passos.
Manual: controle passo a passo
create_project(name="Meu Projeto")→ retornaproject_id.create_mission(project_id=project_id, title="...", prompt="...", auto_dispatch=true)para a primeira missão (raiz) → captureroot_mission_id.create_mission(project_id=project_id, title="...", prompt="...", auto_dispatch=true, depends_on=["<root_mission_id>"])para cada tarefa subsequente.dispatch_mission(mission_id=...)na primeira missão para iniciar a cadeia.get_report(mission_id=...)quando terminar.
Sequencial com revisão
create_project(name="...")→ obtenhaproject_id.create_mission(project_id=project_id, title="Implementar funcionalidade", prompt="...")→ obtenhaimpl_mission_id.dispatch_mission(mission_id=impl_mission_id), depois faça polling comget_mission_statusaté concluir.get_report(mission_id=impl_mission_id)para revisar os resultados.create_mission(project_id=project_id, title="Revisão", prompt="...", depends_on=[impl_mission_id], auto_dispatch=true)— inicia automaticamente, pois a dependência já foi atendida.
Diretrizes
- Sempre confirme o plano com o usuário antes de despachar, a menos que ele tenha dito para prosseguir.
- Inclua títulos e IDs das missões ao relatar o status.
- Se uma missão falhar, leia seu relatório antes de tentar novamente.
- Verifique
get_dashboard()para disponibilidade de vagas de agente antes de despachar em lote. - As dependências das missões formam um DAG — não crie dependências circulares.
- Cada agente executa em um worktree git isolado e faz merge automático ao concluir. Se ocorrer um conflito de merge, as alterações permanecem no branch do worktree do agente para resolução manual.
- Ao criar missões manualmente, sempre defina
auto_dispatch=truese quiser que elas sejam acionadas automaticamente quando as dependências forem concluídas. Sem essa flag, as missões permanecem no statusdraft.