@kind, @deploy) que podem orquestrar ferramentas, interagir com APIs ou realizar qualquer lógica que você possa programar.
Para Usuários: Gerenciando Plugins
Listar plugins instalados
[builtin] (como @coder) e [remote] (de servidores conectados).
Instalar um plugin
Instale diretamente de um repositório Git:~/.chatcli/plugins/.
Ver detalhes de um plugin
Desinstalar um plugin
Recarregar plugins
O ChatCLI monitora automaticamente~/.chatcli/plugins/ e recarrega quando detecta mudanças (criação, remoção, modificação). Um debounce de 500ms evita recarregamentos múltiplos.
Para forçar um recarregamento manual:
Para Desenvolvedores: Criando um Plugin
O contrato do plugin
- Executável — O plugin deve ser um arquivo executável (qualquer linguagem)
- Localização — Colocado em
~/.chatcli/plugins/ - Nome do comando — O nome do arquivo vira o comando. Ex: arquivo
kind= comando@kind - Metadados (
--metadata) — Obrigatório. O executável deve responder a está flag com JSON:
- Schema (
--schema) — Opcional. Descreve os parâmetros aceitos:
- Comunicação (stdout vs stderr):
- stdout — Apenas o resultado final (retornado ao ChatCLI/IA)
- stderr — Logs de progresso, status e avisos (exibidos em tempo real ao usuário)
Exemplo: Plugin “Hello World” em Go
Compilação e instalação
Capability Interfaces (Opt-in)
Plugins podem expor capabilities através de interfaces Go opcionais. Plugins legados que não implementam continuam funcionando — todas as interfaces são fail-closed (default conservador). Implementando, o plugin participa de otimizações do orquestrador:
Exemplo — um plugin que quer auto-allow + paralelização + label customizado:
@read, @search, @tree, @todo) — veja Tools Atômicos — usam todas as capabilities relevantes como exemplo de referência.
Verificação de Assinatura
A partir desta versão, plugins requerem assinatura digital Ed25519 por padrão. Isso garante que apenas plugins de fontes confiáveis sejam carregados e executados.Como Funciona
Cada plugin deve ter um arquivo.sig correspondente no mesmo diretório:
Gerenciando Chaves Confiáveis
As chaves públicas Ed25519 ficam no diretório~/.chatcli/trusted-keys/:
1
Gerar um par de chaves
2
Assinar um plugin
3
Distribuir a chave pública
Compartilhe o arquivo
.pub com os usuários que devem confiar nos seus plugins. Eles devem colocá-lo em ~/.chatcli/trusted-keys/.Permissões de Arquivo
O diretório de plugins usa permissões 0o700 (somente o dono pode ler, escrever e executar). O ChatCLI verifica as permissões na inicialização e emite um aviso se estiverem mais permissivas.Modo de Desenvolvimento
Para desenvolvimento local, é possível desabilitar a verificação de assinatura:Plugins Remotos
Ao conectar a um servidor viachatcli connect, plugins do servidor são descobertos automaticamente:
- Aparecem em
/plugin listcom a tag[remote] - São executados no servidor (não baixados localmente por padrão)
- Plugins locais e remotos coexistem sem conflito