/coder e o /agent em um sistema de orquestracao onde o LLM despacha agents especialistas em paralelo para resolver tarefas complexas de forma mais rapida e eficiente.
Ativacao
O modo multi-agent e ativado por padrao. Para desativa-lo, defina:Quando desativado, o
/coder e o /agent funcionam exatamente como antes — sem nenhum impacto.Arquitetura
<agent_call>:
Dois Modos de Execucao
O orquestrador possui dois mecanismos de execucao, escolhendo o mais adequado por contexto:| Modo | Sintaxe | Quando Usar |
|---|---|---|
| agent_call | <agent_call agent="..." task="..." /> | Novas fases de trabalho, tarefas paralelas, leitura exploratoria, refatoracao multi-arquivo |
| tool_call | <tool_call name="@coder" args="..." /> | Fixes rapidos, diagnostico de erros, patches pontuais, validacao pos-agent. IMPORTANTE: multiplos tool_calls independentes devem ser emitidos em uma UNICA resposta |
Guia de Decisao
| Situacao | Modo |
|---|---|
| Ler multiplos arquivos + buscar referencias | agent_call (file + search em paralelo) |
| Corrigir um erro de compilacao | tool_call (patch direto) |
| Escrever novo modulo + testes | agent_call (coder + shell) |
| Verificar resultado de um agent | tool_call (read/exec rapido) |
| Fix apos falha de agent | tool_call (diagnostico preciso) |
| Retomar apos fix aplicado | agent_call (proxima fase) |
Agents Especialistas Embarcados
FileAgent (Leitura e Analise)
FileAgent (Leitura e Analise)
Acesso: Somente leitura (
read, tree, search)Skills:batch-read— Script acelerador: le N arquivos em goroutines paralelas sem chamar o LLMfind-pattern— Busca padroes em arquivosanalyze-structure— Analisa estrutura de codigomap-deps— Mapeia dependencias entre modulos
CoderAgent (Escrita e Modificacao)
CoderAgent (Escrita e Modificacao)
Acesso: Leitura/Escrita (
write, patch, read, tree)Skills:write-file— Criacao de novos arquivospatch-file— Modificacao precisa de codigo existentecreate-module— Geracao de boilerplaterefactor— Renomeacao e refatoracao segura
ShellAgent (Execucao e Testes)
ShellAgent (Execucao e Testes)
Acesso: Execucao (
exec, test)Skills:run-tests— Script acelerador: executago test ./... -jsone parseia resultadosbuild-check— Script acelerador: executago build ./... && go vet ./...lint-fix— Correcao automatica de lint
GitAgent (Controle de Versao)
GitAgent (Controle de Versao)
Acesso: Git ops (
git-status, git-diff, git-log, git-changed, git-branch, exec)Skills:smart-commit— Script acelerador: coleta status + diff para commit inteligentereview-changes— Script acelerador: analisa alteracoes com changed + diff + logcreate-branch— Criacao de branches
SearchAgent (Busca no Codebase)
SearchAgent (Busca no Codebase)
Acesso: Somente leitura (
search, tree, read)Skills:find-usages— Encontra usos de simbolosfind-definition— Encontra definicoesfind-dead-code— Detecta codigo mortomap-project— Script acelerador: mapeia projeto em paralelo (tree + interfaces + structs + funcs)
PlannerAgent (Raciocinio Puro)
PlannerAgent (Raciocinio Puro)
Acesso: Nenhum (sem tools — puro raciocinio LLM)Skills:
analyze-task— Analise de complexidade e riscoscreate-plan— Criacao de plano de execucaodecompose— Decomposicao de tarefas complexas
ReviewerAgent (Revisao de Codigo e Qualidade)
ReviewerAgent (Revisao de Codigo e Qualidade)
Acesso: Somente leitura (
read, search, tree)Skills:review-file— Analisa arquivo para bugs, code smells, violacoes SOLID e issues de segurancadiff-review— Script acelerador: revisa alteracoes staged via git-diff e git-changedscan-lint— Script acelerador: executago vetestaticchecke categoriza issues
TesterAgent (Testes e Cobertura)
TesterAgent (Testes e Cobertura)
Acesso: Leitura/Escrita/Execucao (
read, write, patch, exec, test, search, tree)Skills:generate-tests— Geracao de testes abrangentes para funcoes e pacotes (LLM-driven)run-coverage— Script acelerador: executago test -coverprofilee parseia cobertura por funcaofind-untested— Script acelerador: encontra funcoes exportadas sem testes correspondentesgenerate-table-test— Geracao de table-driven tests idiomaticos em Go
RefactorAgent (Transformacoes Estruturais)
RefactorAgent (Transformacoes Estruturais)
Acesso: Leitura/Escrita (
read, write, patch, search, tree)Skills:rename-symbol— Script acelerador: renomeia simbolo em todos os.go, ignorando strings e comentariosextract-interface— Extrai interface a partir dos metodos de um tipo concretomove-function— Move funcao entre pacotes ajustando importsinline-variable— Substitui variavel pelo seu valor em todos os pontos de uso
DiagnosticsAgent (Troubleshooting e Investigacao)
DiagnosticsAgent (Troubleshooting e Investigacao)
Acesso: Leitura/Execucao (
read, search, tree, exec)Skills:analyze-error— Parseia mensagens de erro e stack traces mapeando para localizacoes no codigocheck-deps— Script acelerador: executago mod tidy,go mod verifye verifica saude das dependenciasbisect-bug— Guia investigacao para encontrar o commit que introduziu um bugprofile-bottleneck— Executa benchmarks ou pprof e analisa hotspots de performance
FormatterAgent (Formatacao e Estilo)
FormatterAgent (Formatacao e Estilo)
Acesso: Escrita/Execucao (
read, patch, exec, tree)Skills:format-code— Script acelerador: executagofmt -w(ougoimports -w) nos arquivos Gofix-imports— Script acelerador: executagoimportspara organizar importsnormalize-style— Aplica convencoes de naming e estilo consistentes (LLM-driven)
DepsAgent (Gerenciamento de Dependencias)
DepsAgent (Gerenciamento de Dependencias)
Acesso: Leitura/Execucao (
read, exec, search, tree)Skills:audit-deps— Script acelerador: executago mod verifyegovulncheckpara auditoriaupdate-deps— Script acelerador: lista dependencias desatualizadas com atualizacoes disponiveis (dry-run)why-dep— Script acelerador: explica por que uma dependencia existe viago mod whyego mod graphfind-outdated— Encontra todas as dependencias com versoes mais novas disponiveis
Agents Customizados como Workers
Agents personas definidos em~/.chatcli/agents/ sao automaticamente carregados como workers no sistema de orquestracao ao iniciar o /coder ou /agent. O LLM pode despacha-los via <agent_call> com o mesmo ReAct loop, leitura paralela e recuperacao de erros dos agents embarcados.
Como Funciona
Criacao do CustomAgent
Para cada agent encontrado, cria um
CustomAgent que implementa a interface WorkerAgentMapeamento de Tools
O campotools do YAML frontmatter mapeia ferramentas estilo Claude Code para subcomandos do @coder:
| Tool no YAML | Comando(s) @coder | Descricao |
|---|---|---|
Read | read | Ler conteudo de arquivos |
Grep | search | Buscar padroes em arquivos |
Glob | tree | Listar diretorios |
Bash | exec, test, git-status, git-diff, git-log, git-changed, git-branch | Execucao e operacoes git |
Write | write | Criar/sobrescrever arquivos |
Edit | patch | Edicao precisa (search/replace) |
Exemplo de Agent Customizado
Regras de Protecao
- Sem tools = read-only: Agents sem campo
toolsrecebem automaticamenteread,search,treee sao marcados como read-only - Duplicatas ignoradas: Se dois agents tiverem o mesmo nome, apenas o primeiro e registrado
Skills: Scripts vs Descritivas
Cada agent possui dois tipos de skills:- Skills Executaveis (Scripts Aceleradores)
- Skills Descritivas
Sequencias pre-definidas de comandos que bypassam o LLM para operacoes mecanicas e repetitivas, executando diretamente no engine:
Skills V2 (Pacotes)
Skills V2 sao diretorios contendo:SKILL.md— Conteudo principal com frontmatter- Subskills (
.md) — Documentos de conhecimento adicional scripts/— Scripts executaveis registrados automaticamente no worker
read e executar scripts com exec durante sua operacao autonoma.
Estrategia de Recuperacao de Erros
Quando umagent_call falha, o orquestrador segue um protocolo de recuperacao inteligente:
Diagnostico via tool_call
Usa
tool_call direto para ler arquivos relevantes e entender o erro (ja tem o contexto)Fix via tool_call
Patches, correcoes de arquivo e retentativas sao mais rapidos e seguros via
tool_callRegra chave: Recuperacao de erros =
tool_call (rapido, preciso). Novas fases de trabalho = agent_call (paralelo, escalavel).Configuracao
| Variavel | Padrao | Descricao |
|---|---|---|
CHATCLI_AGENT_PARALLEL_MODE | true | Ativa/desativa o modo multi-agent |
CHATCLI_AGENT_MAX_WORKERS | 4 | Maximo de goroutines simultaneas |
CHATCLI_AGENT_WORKER_MAX_TURNS | 10 | Maximo de turnos por worker |
CHATCLI_AGENT_WORKER_TIMEOUT | 5m | Timeout por worker |
Exemplo de .env
Seguranca Anti-Race
O sistema implementa multiplas camadas de protecao contra condicoes de corrida:FileLockManager
Mutex per-filepath (caminhos absolutos normalizados). Operacoes de escrita adquirem lock; leituras nao bloqueiam.
Historico Isolado
Cada worker mantem seu proprio
[]models.Message, sem compartilhamento.LLM Clients Independentes
Cada worker cria sua propria instancia de LLM client via factory pattern.
Engine Stateless
Cada worker instancia seu proprio
engine.Engine fresh.Context Tree
O contexto pai pode cancelar todos os workers via
context.WithCancel.Policy Enforcement
Workers respeitam integralmente o
coder_policy.json (allow/deny/ask). Acoes com policy “ask” pausam o spinner e exibem um prompt de seguranca serializado para o usuario.Governanca de Seguranca no Modo Paralelo
Os workers paralelos respeitam todas as regras do arquivocoder_policy.json (global e local). Isso significa que acoes como write, patch, exec passam pela mesma verificacao de policies que o modo sequencial.
Comportamento por Tipo de Regra
| Regra | Comportamento no Worker |
|---|---|
| allow | Acao executada automaticamente, sem interrupcao |
| deny | Acao bloqueada silenciosamente; worker recebe erro [BLOCKED BY POLICY] |
| ask | Worker pausa, spinner e suspenso, e um prompt de seguranca e exibido ao usuario |
Serializacao de Prompts
Quando multiplos workers precisam de aprovacao simultaneamente, os prompts sao serializados via mutex — apenas um prompt e exibido por vez. Apos a resposta do usuario, o proximo worker na fila recebe seu prompt. Isso evita:- Sobreposicao visual de prompts no terminal
- Conflito de leitura no stdin
- Spinner renderizando sobre o prompt de seguranca
Prompt com Contexto do Agent
O prompt de seguranca no modo paralelo exibe informacoes contextuais sobre qual agent esta solicitando a acao:Respeito ao Provedor/Modelo em Runtime
Os workers paralelos utilizam sempre o provedor e modelo ativos no momento do despacho. Se o usuario trocar de provedor (ex.: de Anthropic para Google AI) via/switch, os proximos despachos de agents usarao o novo provedor corretamente.
Fluxo de Execucao (Exemplo)
Dispatcher cria goroutines
FileAgent e SearchAgent rodam em paralelo, cada um com seu LLM client e mini ReAct loop isolado (dentro do limite maxWorkers).
Recuperacao de erros (se necessario)
Se testes falharem, usa
tool_call para diagnostico e fix rapido.Maximizacao de Paralelismo
O sistema de prompts do ChatCLI instrui explicitamente a IA a maximizar paralelismo em todos os niveis:- tool_call: Operacoes independentes (ler 3 arquivos, buscar + ler) devem ser emitidas em uma UNICA resposta, nao em turnos separados
- agent_call: Para 3+ tarefas independentes, preferir
agent_callque roda em goroutines paralelas - Per-turn anchor: A cada turno do ReAct loop, um lembrete rereforca a necessidade de paralelismo
Compatibilidade
CHATCLI_AGENT_PARALLEL_MODE=false: tudo funciona exatamente como antes- Tags
<tool_call>continuam funcionando mesmo com parallel mode ativo - Nenhuma assinatura de funcao existente foi alterada
- O package
cli/agent/workers/e completamente isolado e nao impacta funcionalidades existentes