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: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. Funciona em /agent E /coder. O spinner mostra
(N na fila)em tempo real conforme você pressiona Enter — não é preciso esperar o turn fechar pra ver o contador subir.
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: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:- 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: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: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.