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:Plugins Remotos (Server-Side)
Quando conectado a um servidor viachatcli 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.
| Plugin | Domínio | Documentação |
|---|---|---|
@coder | Engenharia completa (read, write, patch, multipatch, exec, test, git) | Plugin @coder |
@read, @search, @tree | Tools atômicos narrow para read-only ops | Tools Atômicos |
@todo | Plano de tarefas do agente (TodoWrite parity) | Tools Atômicos |
@websearch, @webfetch | Acesso a web (DuckDuckGo/SearxNG + HTTP GET) | Web Tools |
@scheduler | Scheduler durável (schedule, wait, query, cancel) | Scheduler |
@park | Pausa o agente para retomar (delay, until, for_url, for_cmd) | Agent Park |
Busca Flexivel de Plugins
O sistema aceita ambas as formas de invocação:- Com @ (forma canonica)
- Sem @ (atalho conveniente)
Configuração do Agente
Variáveis de Ambiente
Configure o comportamento do agente através de variáveis de ambiente:| Variável | Tipo | Padrão | Descrição |
|---|---|---|---|
CHATCLI_AGENT_PLUGIN_MAX_TURNS | inteiro | 50 | Número máximo de iterações do ciclo ReAct. Evita loops infinitos (max: 200). |
CHATCLI_AGENT_PLUGIN_TIMEOUT | duracao | 15m | Tempo limite para execução de cada plugin. Aceita formato Go (30s, 5m, 1h). |
CHATCLI_AGENT_CMD_TIMEOUT | duracao | 10m | Timeout para comandos shell executados via @command (max: 1h). |
CHATCLI_AGENT_DENYLIST | string | - | Expressoes regulares separadas por ; para bloquear comandos perigosos. |
CHATCLI_AGENT_ALLOW_SUDO | booleano | false | Permite comandos sudo sem bloqueio automático (use com cautela). |
CHATCLI_AGENT_PARALLEL_MODE | booleano | false | Ativa orquestracao multi-agent com agents paralelos. |
CHATCLI_AGENT_MAX_WORKERS | inteiro | 4 | Máximo de workers (goroutines) executando agents em paralelo. |
CHATCLI_AGENT_WORKER_MAX_TURNS | inteiro | 10 | Máximo de turnos do mini ReAct loop de cada worker agent. |
CHATCLI_AGENT_WORKER_TIMEOUT | duracao | 5m | Timeout por worker agent individual. |
O Ciclo ReAct: Raciocinio e Acao
O AgentMode implementa o framework ReAct (Reasoning and Acting), um loop iterativo transparente:Gerenciamento de Plugins com /plugin
Comandos Disponíveis
| Comando | Descrição |
|---|---|
/plugin list | Lista todos os plugins instalados com metadados |
/plugin install <url> | Instala plugin de um repositório Git (linguagens compilada) |
/plugin show <nome> | Exibe descrição e sintaxe de uso |
/plugin inspect <nome> | Mostra metadados brutos, caminho e permissões |
/plugin uninstall <nome> | Remove plugin do sistema |
/plugin reload | Forca recarregamento manual (raramente necessário) |
Exemplo de Uso
- Listar plugins
- Ver detalhes
- Inspecionar metadados
Instalação de Plugins
Criando Plugins: O Guia Completo
O Contrato do Plugin
Todo plugin deve seguir estas regras: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)
Responder ao Contrato --metadata (Obrigatório)
Quando invocado com Todos os campos são obrigatórios:
--metadata, o plugin DEVE imprimir um JSON válido para stdout:name: Deve comecar com@description: Usado pela IA para decidir quando usar a ferramentausage: Sintaxe de invocaçãoversion: Versionamento semantico
Implementar --schema (Opcional, mas Recomendado)
O schema ajuda a IA a entender os parâmetros do plugin:
Comunicação via I/O Padrão
| Canal | Uso | Descrição |
|---|---|---|
stdout | Resultado | Saída principal enviada para a IA |
stderr | Logs/Progresso | Mensagens de status, avisos e erros |
stdin | Entrada de dados | Blocos grandes de texto (ex: código gerado) |
args | Parâmetros | Argumentos de linha de comando |
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
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
Verificar se o Plugin Foi Carregado
Verificar se o Plugin Foi Carregado
Execute
/plugin list. Se o plugin não aparecer:- Verifique permissões:
ls -l ~/.chatcli/plugins/— Deve mostrar-rwxr-xr-x(com ‘x’) - Teste o contrato
--metadata:~/.chatcli/plugins/seu-plugin --metadata— Deve retornar JSON valido - Ative logs de debug no
.env:
Testar Plugin Manualmente
Testar Plugin Manualmente
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
Resolver Problemas de Timeout
Resolver Problemas de Timeout
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
- Usar
@dockerhub redispara listar tags - Filtrar tags com “alpine”
- Selecionar a versão mais recente
- Executar
docker run redis:<tag-alpine> - 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
| Linguagem | Melhor Para | Vantagens |
|---|---|---|
| Go | Plugins de produção | Binarios estaticos, rapidos, portateis |
| Rust | Performance crítica | Segurança de memória, velocidade |
| Python | Prototipagem rapida | Ecossistema rico, facil debugging |
| Bash | Scripts de sistema | Integração nativa com shell |
| Node.js | Integração com APIs | NPM, async/await |
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
reasoningcurto (2 a 6 linhas) - Em seguida, emite apenas um
tool_callcom args JSON
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 comecarCompartilhe 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.