Como Iniciar
Use/agent ou /run, seguido da sua tarefa em linguagem natural:
O Ciclo do Agente
Como o Agente Funciona Internamente
O coração do modo agente é um loop ReAct (Reason + Act) implementado na funçãoprocessAIResponseAndAct(). Esse loop permite que a IA raciocine sobre o problema, execute ações e use os resultados para decidir os próximos passos.
O Loop ReAct
Cada turno do agente segue esta sequência:- Construção do histórico — O histórico de conversa é montado com um anchor reminder (lembrete de formato) anexado ao final. Esse anchor reforça para a IA o formato de resposta esperado, evitando que ela “esqueça” as instruções ao longo de conversas longas.
- Chamada ao LLM — O histórico completo é enviado ao provedor de IA configurado.
- Parse da resposta — A resposta é analisada para extrair raciocínio, explicações, chamadas de ferramentas e comandos.
- Execução das ações — Ferramentas e comandos são executados com os devidos controles de segurança.
- Injeção de feedback — O resultado da execução é injetado de volta no histórico como mensagem de contexto.
- Próximo turno — O loop retorna ao passo 1, até que a IA conclua a tarefa ou o limite de turnos seja atingido.
Composição do System Prompt
O system prompt do agente é montado dinamicamente a partir de várias fontes:- Contexto do workspace — Arquivos bootstrap como
SOUL.md,USER.mde memória persistente - Descrição das ferramentas — Lista completa dos plugins disponíveis e seus parâmetros
- Persona ativa — Se uma persona customizada estiver configurada, ela é incluída
- Instruções de formato — As
AgentFormatInstructionsque definem o formato esperado da resposta
Os modos
/agent, /coder e /run compartilham o mesmo loop ReAct. A diferença está apenas nas instruções de prompt — o /coder usa o CoderSystemPrompt que enfatiza edição de código, enquanto /agent usa instruções voltadas para execução de tarefas gerais.Formato de Resposta da IA
A resposta do LLM é parseada para identificar múltiplos elementos estruturados. Cada tipo de bloco tem um comportamento diferente na interface:| Elemento | Tag/Formato | Comportamento na UI |
|---|---|---|
| Raciocínio | <reasoning>...</reasoning> | Exibido como card com ícone de “cérebro” — pensamento interno da IA |
| Explicação | <explanation>...</explanation> | Exibido como card fixado — explicação voltada ao usuário |
| Resumo final | <final_summary>...</final_summary> | Resumo de encerramento da tarefa |
| Chamada de ferramenta | <tool_call>...</tool_call> | Invocação de plugin (file_edit, web_search, etc.) |
| Multi-agente | <agent_call>...</agent_call> | Despacha sub-tarefas para agentes paralelos (3+ tarefas independentes) |
| Comando shell | ```execute:shell ou ```bash | Bloco de comando para execução (formato legado) |
| Texto livre | Texto sem tags | Exibido como resposta de chat normal |
O parser é stateful (não baseado em regex) para lidar corretamente com tags XML que contenham atributos entre aspas com caracteres especiais.
Cancelamento e Ctrl+C
O agente suporta cancelamento gracioso em qualquer ponto da execução:- Durante chamada ao LLM —
Ctrl+Ccancela a requisição viacontext.WithCancel(). A resposta parcial recebida até aquele momento é descartada. - Verificação por turno — No início de cada turno do loop ReAct, o agente verifica
context.Done(). Se o contexto foi cancelado, o loop encerra imediatamente. - Tratamento de sinais —
SIGINTeSIGTERMsão capturados pela funçãorunWithCancellation(), que coordena o shutdown gracioso. - Fila type-ahead — Mensagens digitadas pelo usuário durante o processamento da IA são enfileiradas e processadas assim que o turno atual terminar. Isso evita perda de input.
Histórico e Compactação
O agente gerencia automaticamente o tamanho do histórico de conversa para evitar estourar o limite de tokens do modelo.Estratégia de Compactação
Quando o histórico ultrapassa 60% do budget de tokens do modelo, a compactação é ativada em 3 níveis progressivos:- Trimming — Mensagens de contexto injetadas (resultados de ferramentas, outputs de comandos) com mais de 3000 caracteres são truncadas, preservando início e fim.
- Sumarização — Mensagens intermediárias são resumidas pela própria IA, mantendo os pontos-chave.
- Truncamento de emergência — Se os níveis anteriores não forem suficientes, as mensagens mais antigas são removidas.
Checkpoint e /rewind
No início de cada interação do agente, um checkpoint do histórico é salvo. Isso permite usar/rewind (ou Esc+Esc) para retornar ao estado exato anterior à última ação do agente.
Interface do Plano de Ação
Após o planejamento, você verá uma tela dedicada com duas visualizações (alterne comp):
- Visão Compacta (Padrão)
- Visão Completa
Ideal para uma visão geral do fluxo, mostrando status e a primeira linha de cada comando.
Menu Interativo
O menu permite que você gerencie a execução com precisão:| Ação | Descrição |
|---|---|
[N] | Executar Comando N — executa um único passo do plano (ex: 1) |
a | Executar Todos — executa todos os comandos pendentes em sequência |
eN | Editar Comando N — abre o comando em um editor para modificação |
tN | Testar (Dry-Run) — simula a execução sem fazer alterações |
cN | Continuar de N — envia a saída para a IA e pede próximos passos |
pcN | Contexto Pré-Execução — adiciona informações para a IA refinar o comando |
acN | Contexto Pós-Execução — envia a saída com um novo contexto |
vN | Ver Saída — abre a saída completa em um pager (less) |
wN | Salvar Saída — salva a saída do comando em um arquivo temporário |
p | Alternar Plano — muda entre visão compacta e completa |
r | Redesenhar Tela — limpa a tela |
q | Sair — encerra o Modo Agente e retorna ao chat |
Segurança
Você sempre tem a palavra final. Nenhum comando é executado sem sua aprovação.Segurança do Modo Agente
O modo agente implementa múltiplas camadas de proteção para garantir execução segura de comandos.Allowlist de Comandos (CHATCLI_AGENT_SECURITY_MODE)
O ChatCLI usa uma allowlist de comandos com mais de 150 comandos pré-aprovados, organizados em 8 categorias:| Categoria | Exemplos |
|---|---|
| Operações de arquivo | ls, cp, mv, mkdir, find, stat |
| Processamento de texto | grep, sed, awk, sort, cut, jq |
| Desenvolvimento | git, go, npm, python, make, cargo |
| Containers | docker, kubectl, helm, podman |
| Rede | curl, wget, ping, dig, nslookup |
| Informações do sistema | ps, df, du, uname, whoami |
| Editores | vim, nano, code, emacs |
| Shell | echo, cat, head, tail, wc, tee |
- strict (padrão)
- permissive
Apenas comandos na allowlist podem ser executados. Qualquer comando fora da lista é bloqueado automaticamente.
Proteção de Caminhos Sensíveis (CHATCLI_AGENT_WORKSPACE_STRICT)
Quando habilitado, o agente só pode ler arquivos dentro do workspace atual. Caminhos sensíveis são sempre bloqueados:| Caminho | Motivo |
|---|---|
~/.ssh/ | Chaves SSH privadas |
~/.aws/ | Credenciais AWS |
~/.gcloud/ | Credenciais Google Cloud |
~/.kube/config | Credenciais Kubernetes |
/etc/shadow | Senhas do sistema |
*.pem, *.key | Certificados e chaves privadas |
Configuração de Shell (CHATCLI_AGENT_SOURCE_SHELL_CONFIG)
- Propriedade do arquivo — O arquivo deve pertencer ao usuário atual
- Tamanho do arquivo — Limite de segurança para evitar source de arquivos muito grandes
Sanitização de Saída de Comandos
O ChatCLI protege contra injeção de prompt na saída de comandos:- Detecção de injeção de prompt — Padrões suspeitos na saída (ex: instruções para a IA ignorar regras) são detectados e sanitizados antes de serem injetados no contexto
- Limite de tamanho — Saídas de comandos são truncadas para evitar consumo excessivo de tokens
Histórico Unificado e Contexto
O modo agente compartilha o mesmo histórico de conversa que o chat e o coder. Isso significa que você pode:- Iniciar uma conversa no chat, entrar no
/agent, e a IA terá todo o contexto anterior - Usar
/compactpara reduzir o histórico quando ficar grande - Usar
/rewind(ou Esc+Esc) para voltar a um ponto anterior da conversa
Configuração do Modo Agente
O comportamento do agente pode ser ajustado via variáveis de ambiente:| Variável | Padrão | Descrição |
|---|---|---|
CHATCLI_AGENT_PLUGIN_MAX_TURNS | 50 | Número máximo de turnos do loop ReAct. Máximo permitido: 200. |
CHATCLI_AGENT_CMD_TIMEOUT | 10m | Timeout para execução de comandos shell. Máximo: 1 hora. |
CHATCLI_AGENT_PLUGIN_TIMEOUT | 15m | Timeout para execução de plugins (file_edit, web_search, etc.). |
CHATCLI_AGENT_DENYLIST | (vazio) | Padrões regex separados por ; para bloquear comandos. Ex: rm\s+-rf;curl.*|.*sh |
CHATCLI_AGENT_ALLOW_SUDO | false | Se true, permite execução de comandos com sudo. |
CHATCLI_AGENT_PARALLEL_MODE | true | Habilita despacho multi-agente via <agent_call> para tarefas paralelas. |
CHATCLI_AGENT_MAX_WORKERS | 4 | Máximo de goroutines simultâneas do dispatcher multi-agent. |
CHATCLI_AGENT_WORKER_MAX_TURNS | 10 | Máximo de turnos por worker individual. |
CHATCLI_AGENT_WORKER_TIMEOUT | 5m | Timeout por worker. |
CHATCLI_AGENT_<NAME>_MODEL | (vazio) | Override de modelo para um agent embarcado específico (ex.: CHATCLI_AGENT_PLANNER_MODEL=claude-opus-4-6). Veja Multi-Agent. |
CHATCLI_AGENT_<NAME>_EFFORT | (vazio) | Override de effort para um agent embarcado específico (ex.: CHATCLI_AGENT_FORMATTER_EFFORT=low). |
One-Shot Mode (flag -p)
O modo one-shot permite execução não-interativa de uma única instrução, ideal para scripts e automação:Como funciona
- A instrução é enviada ao LLM como um único turno (sem loop ReAct).
- Uma animação de pensamento é exibida enquanto a IA processa.
- Se a flag
--auto-executeestiver ativa, o primeiro bloco de comando da resposta é executado automaticamente — mas apenas após passar pela verificação de comandos perigosos. - O resultado é exibido e o processo encerra.
Workspace e payloads grandes
Toda sessão de/agent recebe um diretório scratch isolado (exposto via CHATCLI_AGENT_TMPDIR) onde a IA pode escrever scripts temporários e ler arquivos de overflow do orçamento de resultados — sem precisar mexer na árvore do projeto. Quando um tool result é truncado, o caminho do arquivo completo é incluído no preview e a IA pode abri-lo com read_file.
Para análises sobre payloads grandes (Prometheus /metrics, logs verbosos), prefira a tool delegate_subagent: ela executa em janela de contexto isolada e devolve apenas o resumo final.
Detalhes em Workspace de Sessão e Subagent Delegation.
Próximos Passos
Modo Coder
IA que lê, edita e testa código em loop automatizado.
Workspace de Sessão
Scratch dir isolado para scripts temporários e leitura de overflows.
Subagent Delegation
Delegar análises pesadas com contexto isolado.
Controle de Conversa
Use /compact e /rewind para gerenciar o histórico.
Gerenciamento de Sessões
Salve e reutilize seu trabalho entre projetos.