Skip to main content
O Modo Agente transforma o ChatCLI de um assistente passivo em um executor proativo. Delegue uma tarefa completa, e a IA cria, apresenta e — com sua aprovação — executa um plano de ação.

Como Iniciar

Use /agent ou /run, seguido da sua tarefa em linguagem natural:
A IA responderá com um Plano de Ação: uma lista de comandos estruturados para revisão.

O Ciclo do Agente


Como o Agente Funciona Internamente

O coração do modo agente é um loop ReAct (Reason + Act) implementado na função processAIResponseAndAct(). 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:
  1. 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.
  2. Chamada ao LLM — O histórico completo é enviado ao provedor de IA configurado.
  3. Parse da resposta — A resposta é analisada para extrair raciocínio, explicações, chamadas de ferramentas e comandos.
  4. Execução das ações — Ferramentas e comandos são executados com os devidos controles de segurança.
  5. Injeção de feedback — O resultado da execução é injetado de volta no histórico como mensagem de contexto.
  6. Próximo turno — O loop retorna ao passo 1, até que a IA conclua a tarefa ou o limite de turnos seja atingido.
O número máximo de turnos é configurável (padrão: 50, máximo: 200). Quando o limite é atingido, o agente encerra o loop e exibe o último estado ao usuário.

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.md e 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 AgentFormatInstructions que 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 LLMCtrl+C cancela a requisição via context.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 sinaisSIGINT e SIGTERM são capturados pela função runWithCancellation(), 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.
Se a IA estiver “travada” em um loop longo, pressione Ctrl+C uma vez para cancelar o turno atual. Você pode então reformular sua instrução.

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:
  1. Trimming — Mensagens de contexto injetadas (resultados de ferramentas, outputs de comandos) com mais de 3000 caracteres são truncadas, preservando início e fim.
  2. Sumarização — Mensagens intermediárias são resumidas pela própria IA, mantendo os pontos-chave.
  3. Truncamento de emergência — Se os níveis anteriores não forem suficientes, as mensagens mais antigas são removidas.
Em todos os níveis, as 8 mensagens mais recentes são sempre preservadas para manter o contexto imediato.

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 com p):
Ideal para uma visão geral do fluxo, mostrando status e a primeira linha de cada comando.

O menu permite que você gerencie a execução com precisão:
Use tN (testar) para verificar o que um comando fará. Se ok, execute com N. Se der errado, use cN para pedir à IA que corrija o plano.

Segurança

Comandos perigosos (rm -rf, sudo, mkfs, dd) são bloqueados por padrão. O ChatCLI exigirá confirmação explícita antes de permitir sua execução.
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:
Apenas comandos na allowlist podem ser executados. Qualquer comando fora da lista é bloqueado automaticamente.
Para adicionar comandos personalizados a allowlist:
Se um comando legítimo for bloqueado no modo strict, adicione-o via CHATCLI_AGENT_ALLOWLIST em vez de mudar para o modo permissive.
Exemplo: comando bloqueado e como permitir

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)

Mudança importante: O source de arquivos de configuração do shell (~/.bashrc, ~/.zshrc) agora é opt-in. Em versões anteriores, o source era feito implicitamente. Se seus comandos dependem de aliases ou funções do shell, habilite explicitamente.
Quando habilitado, o ChatCLI valida:
  • 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
Para uma visão completa de todas as medidas de segurança, consulte a documentação de Segurança e Hardening.

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 /compact para reduzir o histórico quando ficar grande
  • Usar /rewind (ou Esc+Esc) para voltar a um ponto anterior da conversa
Além disso, o agente recebe automaticamente o contexto do workspace (arquivos bootstrap como SOUL.md, USER.md, e memória persistente) no system prompt.

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

  1. A instrução é enviada ao LLM como um único turno (sem loop ReAct).
  2. Uma animação de pensamento é exibida enquanto a IA processa.
  3. Se a flag --auto-execute estiver ativa, o primeiro bloco de comando da resposta é executado automaticamente — mas apenas após passar pela verificação de comandos perigosos.
  4. O resultado é exibido e o processo encerra.
O one-shot com --auto-execute não pede confirmação para comandos seguros. Certifique-se de confiar na instrução antes de usar essa combinação em scripts.

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.