Skip to main content

De Assistente a Agente: Uma Mudanca de Paradigma

A maioria das ferramentas de IA para linha de comando funciona como assistentes: você pergunta, elas respondem. O ChatCLI vai alem, transformando a IA em um agente autônomo que não apenas responde, mas age. O sistema de Plugins e IA Agentiva materializa essa visão:
  • Você: Define o objetivo e fornece as ferramentas (plugins)
  • O Agente: Orquestra a execução, conectando percepcao, raciocinio e ação para resolver problemas complexos
Esta não e apenas uma funcionalidade — e a fundacao para um novo modo de interagir com seu ambiente de desenvolvimento.

Arquitetura do Sistema de Plugins

Descoberta e Carregamento Automático

O ChatCLI utiliza um gerenciador de plugins inteligente que:
1

Monitora o diretório

Monitora ~/.chatcli/plugins/ usando fsnotify
2

Detecta mudancas

Detecta mudancas em tempo real (criacao, modificacao, remocao de arquivos)
3

Aplica debounce

Aplica debounce de 500ms para evitar recarregamentos múltiplos
4

Valida o contrato

Válida o contrato de cada plugin antes de carrega-lo
5

Recarrega automaticamente

Recarrega automaticamente sem necessidade de reiniciar o ChatCLI

Plugins Remotos (Server-Side)

Quando conectado a um servidor via chatcli connect, o client descobre automaticamente os plugins disponíveis no servidor. Esses plugins aparecem em /plugin list com a tag [remote] e são executados no servidor via gRPC — sem necessidade de instalar nada localmente.
O agente pode usar plugins remotos da mesma forma que plugins locais — a execução e transparente. Ao desconectar, plugins remotos são removidos automaticamente da listagem.

Plugins Builtin

Alguns plugins essenciais já vem embutidos no binario do ChatCLI e aparecem com a tag [builtin]. Plugins builtin não precisam de instalação e não podem ser desinstalados. Se você instalar uma versão customizada em ~/.chatcli/plugins/ com o mesmo nome, ela prevalece sobre o builtin.

Busca Flexivel de Plugins

O sistema aceita ambas as formas de invocação:
Internamente, o gerenciador normaliza automaticamente:

Configuração do Agente

Variáveis de Ambiente

Configure o comportamento do agente através de variáveis de ambiente:
Quando CHATCLI_AGENT_PARALLEL_MODE=true, o LLM orquestrador pode despachar 12 agents especialistas (FileAgent, CoderAgent, ShellAgent, GitAgent, SearchAgent, PlannerAgent, ReviewerAgent, TesterAgent, RefactorAgent, DiagnosticsAgent, FormatterAgent, DepsAgent) em paralelo. Veja a documentação completa.

O Ciclo ReAct: Raciocinio e Acao

O AgentMode implementa o framework ReAct (Reasoning and Acting), um loop iterativo transparente:
1

Raciocinio (Pensamento)

O agente analisa o objetivo e verbaliza seu plano:
2

Acao (Chamada de Ferramenta)

A IA formaliza sua decisão em uma chamada estruturada:
O parser também aceita a grafia curta <tool ... /> — modelos apoiados em outros agent CLIs (Devin, Codex, Claude Code) costumam encurtar a tag. O ChatCLI sempre emite a canônica <tool_call>, mas é liberal no que aceita.
3

Execução (Invocação do Plugin)

O ChatCLI intercepta e executa o plugin:
4

Observacao (Feedback)

O resultado e formatado e retornado para a IA:
5

Reiteracao

O ciclo recomeca até que o objetivo seja alcancado ou o limite de turnos seja atingido.

Gerenciamento de Plugins com /plugin

Comandos Disponíveis

Exemplo de Uso

Instalação de Plugins

Você está prestes a instalar código de terceiros que será executado em sua máquina. Revise o código-fonte antes de prosseguir.

Criando Plugins: O Guia Completo

O Contrato do Plugin

Todo plugin deve seguir estas regras:
1

Ser um Executável

  • Binario compilado (Go, Rust, C++) ou
  • Script com shebang (#!/usr/bin/env python3, #!/bin/bash)
  • Localizado em ~/.chatcli/plugins/
  • Permissao de execução obrigatoria (chmod +x)
2

Responder ao Contrato --metadata (Obrigatório)

Quando invocado com --metadata, o plugin DEVE imprimir um JSON válido para stdout:
Todos os campos são obrigatórios:
  • name: Deve comecar com @
  • description: Usado pela IA para decidir quando usar a ferramenta
  • usage: Sintaxe de invocação
  • version: Versionamento semantico
3

Implementar --schema (Opcional, mas Recomendado)

O schema ajuda a IA a entender os parâmetros do plugin:
4

Comunicação via I/O Padrão

Regra de Ouro: stdout para apenas o resultado final, stderr para todo o resto (logs, progresso, erros).

Exemplo Completo: Plugin @hello em Go

Este exemplo demonstra todas as melhores praticas:

Compilacao e Instalação

1

Compilar

2

Dar permissao de execução (CRITICO!)

3

Mover para o diretório de plugins

4

Verificar instalação

Testando o Plugin

A IA responde com base no stdout do plugin. Exemplo: “O plugin retornou: Ola, Edilson! A hora agora e Mon, 02 Jan 2024 14:30:00 UTC.”

Debugging de Plugins

Execute /plugin list. Se o plugin não aparecer:
  1. Verifique permissões: ls -l ~/.chatcli/plugins/ — Deve mostrar -rwxr-xr-x (com ‘x’)
  2. Teste o contrato --metadata: ~/.chatcli/plugins/seu-plugin --metadata — Deve retornar JSON valido
  3. Ative logs de debug no .env:
Antes de usar no agente, teste diretamente:
  • Testar metadados: ~/.chatcli/plugins/seu-plugin --metadata
  • Testar schema: ~/.chatcli/plugins/seu-plugin --schema
  • Testar execução: ~/.chatcli/plugins/seu-plugin arg1 arg2
Se o plugin está sendo interrompido:
  • Aumentar timeout globalmente: export CHATCLI_AGENT_PLUGIN_TIMEOUT=30m
  • Ou no .env: CHATCLI_AGENT_PLUGIN_TIMEOUT=30m

Exemplo Avancado: Plugin Docker Hub

Este exemplo demonstra integração com API externa:

Caso de Uso

O agente ira:
  1. Usar @dockerhub redis para listar tags
  2. Filtrar tags com “alpine”
  3. Selecionar a versão mais recente
  4. Executar docker run redis:<tag-alpine>
  5. Validar que o container está rodando

Linguagens Suportadas

Qualquer linguagem que possa criar um executável, interagir com I/O padrão (stdin/stdout/stderr) e processar argumentos de linha de comando.

Recomendações por Caso de Uso


Segurança e Melhores Praticas

Validação de Entrada

Sempre valide argumentos antes de processar. Use os.Exit(1) para sinalizar erros ao ChatCLI.

Tratamento de Erros

Exit code diferente de 0 sinaliza erro para o ChatCLI. Envie mensagens de erro via stderr.

Timeouts Internos

Use context.WithTimeout para evitar que operações externas travem o plugin indefinidamente.

Logs Informativos

Envie progresso via stderr para que o usuário acompanhe a execução do plugin em tempo real.

Plugins no Modo /coder

O modo /coder e especializado em engenharia de software e utiliza o plugin @coder para executar suas ações. O @coder e um plugin builtin — já vem embutido no ChatCLI e funciona sem instalação. No /coder, a IA emite chamadas de ferramenta em um formato estrito:
  • Primeiro, escreve um bloco reasoning curto (2 a 6 linhas)
  • Em seguida, emite apenas um tool_call com args JSON
Exemplos de chamadas reais (que a IA emite no /coder):
Veja mais em Modo Coder e Plugin @coder.

Próximos Passos

Exemplos de Plugins

Explore os plugins de exemplo no repositório

Crie seu Primeiro Plugin

Siga o template @hello nesta página para comecar

Compartilhe com a Comunidade

Publique plugins no GitHub para o ecossistema ChatCLI

Contribua

Contribua com plugins para o ecossistema ChatCLI

O sistema de plugins e a sua porta de entrada para a verdadeira automacao. Comece a construir suas ferramentas e transforme seu terminal em um colega de equipe.