🧠 Por que Multi-Agentes?
Um único agente generalista não escala para tarefas complexas e paralelas. Agentes especializados executam tarefas simultâneas com contexto focado — como uma equipe em vez de um único funcionário.
🤖 Agente Único vs. Multi-Agentes
🎯 Agentes Especializados
Cada agente tem um CLAUDE.md específico, um conjunto de ferramentas limitado e um escopo claro. A especialização reduz erros e melhora qualidade.
# CLAUDE-ingester.md
Você é o Agente Ingester.
## Sua única responsabilidade
Processar arquivos de raw/ e criar/atualizar
notas em wiki/ seguindo as regras de
estrutura definidas em CLAUDE.md principal.
## Ferramentas permitidas
- Read: sim (raw/ e wiki/)
- Write: sim (apenas wiki/)
- Edit: sim (apenas wiki/)
- Bash: NÃO
## Nunca
- Modificar raw/
- Deletar notas existentes
- Fazer suposições — só o que está no raw/
# CLAUDE-auditor.md
Você é o Agente Auditor.
## Sua única responsabilidade
Verificar a saúde do vault: encontrar
órfãos, inconsistências, links quebrados
e notas desatualizadas.
## Ferramentas permitidas
- Read: sim (wiki/ apenas)
- Write: sim (audit-report.md apenas)
- Edit: NÃO
- Bash: NÃO
## Output
Sempre gere um relatório estruturado em
audit-report.md com severidade (P0/P1/P2)
🎭 O Orquestrador
O orquestrador é um agente de nível superior que delega tarefas, monitora resultados e coordena conflitos entre agentes especializados.
🎭 Loop do Orquestrador
orchestrator.py
import subprocess, threading, json
from pathlib import Path
def run_agent(agent_name: str, prompt: str, vault_path: str) -> str:
"""Executa um agente especializado via Claude Code CLI"""
result = subprocess.run(
["claude", "--print", "--dangerously-skip-permissions",
"--system-prompt", f"CLAUDE-{agent_name}.md", prompt],
cwd=vault_path, capture_output=True, text=True,
timeout=300
)
return result.stdout
def orchestrate_daily(vault_path: str):
"""Ciclo diário de orquestração paralela"""
results = {}
# Executar agentes em paralelo via threads
threads = [
threading.Thread(target=lambda: results.update({
"ingester": run_agent("ingester", "Ingira todos os arquivos novos em raw/", vault_path)
})),
threading.Thread(target=lambda: results.update({
"auditor": run_agent("auditor", "Audite o vault e gere audit-report.md", vault_path)
})),
threading.Thread(target=lambda: results.update({
"reporter": run_agent("reporter", "Atualize dashboard.md", vault_path)
}))
]
for t in threads: t.start()
for t in threads: t.join(timeout=600)
return results
⚔️ Resolução de Conflitos
Quando dois agentes modificam a mesma nota simultaneamente, podem ocorrer conflitos. A solução é design sem conflito: agentes com domínios exclusivos de escrita.
⚔️ Design Sem Conflito — Domínios Exclusivos
📡 Comunicação entre Agentes
Agentes se comunicam através de arquivos compartilhados — o vault como barramento de mensagens. Cada agente escreve seu output em um arquivo específico que outros agentes podem ler.
# agent-state.md (somente leitura)
## Status dos Agentes
Ingester:
last_run: 2024-03-20T22:00
files_processed: 12
status: completed ✅
Auditor:
last_run: 2024-03-20T22:05
issues_found: 3
status: completed ✅
Collector:
last_run: 2024-03-20T21:45
github_prs: 5
status: completed ✅
Reporter:
last_run: 2024-03-20T22:10
status: waiting_ingester ⏳
# Fase 1: Paralela (sem deps)
run_parallel([
collector, # raw/ ← APIs
auditor, # health check
])
# Fase 2: Ingester (deps: collector)
wait_for(collector)
run_agent(ingester) # raw/ → wiki/
# Fase 3: Reporter (deps: todos)
wait_for([ingester, auditor])
run_agent(reporter) # dashboard.md
# Total: 3 fases vs. 4 sequenciais
# Tempo: ~40% mais rápido
🔮 O Segundo Cérebro do Futuro
O sistema que construímos ao longo do curso é o estado da arte atual. Mas para onde estamos indo? A convergência de LLMs mais capazes, agentes autônomos e ferramentas de memória está criando algo fundamentalmente novo.
🔮 Visão: O Segundo Cérebro em 2026
Você percorreu as 3 trilhas do 2Cérebro: entendeu os fundamentos, implementou o sistema e agora domina conceitos avançados de grafos, escalabilidade, integrações e multi-agentes.