O ChatCLI é uma aplicação de linha de comando (CLI) avançada que integra modelos de Linguagem de Aprendizado (LLMs) poderosos (como OpenAI, StackSpot, GoogleAI, ClaudeAI, xAI e Ollama -> Modelos Locais) para facilitar conversas interativas e contextuais diretamente no seu terminal. Projetado para desenvolvedores, cientistas de dados e entusiastas de tecnologia, ele potencializa a produtividade ao agregar diversas fontes de dados contextuais e oferecer uma experiência rica e amigável.
- Recursos Principais
- Instalação
- Configuração
- Uso e Comandos
- Processamento Avançado de Arquivos
- Modo Agente
- Estrutura do Código e Tecnologias
- Contribuição
- Licença
- Contato
- Suporte a Múltiplos Provedores: Alterne entre OpenAI, StackSpot, ClaudeAI, GoogleAI, xAI e Ollama ->
Modelos locais. - Experiência Interativa na CLI: Navegação de histórico, auto-completação e feedback visual (
"Pensando..."). - Comandos Contextuais Poderosos:
@history– Insere os últimos 10 comandos do shell (suporta bash, zsh e fish).@git– Adiciona informações do repositório Git atual (status, commits e branches).@env– Inclui as variáveis de ambiente no contexto.@file <caminho>– Insere o conteúdo de arquivos ou diretórios com suporte à expansão de~e caminhos relativos.@command <comando>– Executa comandos do sistema e adiciona a saída ao contexto.@command -i <comando>– Executa comandos interativos do sistema eNÃOadiciona a saída ao contexto.@command --ai <comando> > <contexto>– Executa um comando e envia a saída diretamente para a LLM com contexto adicional.
- Exploração Recursiva de Diretórios: Processa projetos inteiros ignorando pastas irrelevantes (ex.:
node_modules,.git). - Configuração Dinâmica e Histórico Persistente: Troque provedores, atualize configurações em tempo real e mantenha o histórico entre sessões.
- Robustez: Retry com backoff exponencial para lidar com falhas de API.
- Go (versão 1.23+): Disponível em golang.org.
- Clone o Repositório:
git clone https://github.com/diillson/chatcli.git cd chatcli - Instale as Dependências e Compile:
Para compilar com informações de versão:
go mod tidy go build -o chatcli
Isso injeta dados de versão no binário, acessíveis viaVERSION=$(git describe --tags --always --dirty 2>/dev/null || echo "dev") COMMIT_HASH=$(git rev-parse --short HEAD) BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") go build -ldflags "\ -X github.com/diillson/chatcli/version.Version=${VERSION} \ -X github.com/diillson/chatcli/version.CommitHash=${COMMIT_HASH} \ -X github.com/diillson/chatcli/version.BuildDate=${BUILD_DATE}" \ -o chatcli main.go
/versionouchatcli --version.
go install github.com/diillson/chatcli@latestO binário será instalado em $GOPATH/bin, permitindo que você o execute diretamente como chatcli se o diretório estiver no seu PATH.
O ChatCLI utiliza variáveis de ambiente para se conectar aos provedores de LLM e definir seu comportamento. A maneira mais fácil é criar um arquivo .env na raiz do projeto.
- Geral:
CHATCLI_DOTENV– (Opcional) Define o caminho do seu arquivo.env.LOG_LEVEL(debug,info,warn,error)LLM_PROVIDER(OPENAI,STACKSPOT,CLAUDEAI,GOOGLEAI,XAI)ENV- (Opcional) Define como o log será exibido (dev,prod), Padrão:dev.devele mostra os logs direto no terminal e salva no arquivo de log.prodele apenas salva no arquivo de log mantendo um terminal mais limpo.
- Provedores:
OPENAI_API_KEY,OPENAI_MODEL,OPENAI_ASSISTANT_MODEL,OPENAI_MAX_TOKENS,OPENAI_USE_RESPONSESCLAUDEAI_API_KEY,CLAUDEAI_MODEL,CLAUDEAI_MAX_TOKENS,CLAUDEAI_API_VERSIONGOOGLEAI_API_KEY,GOOGLEAI_MODEL,GOOGLEAI_MAX_TOKENSOLLAMA_ENABLED,OLLAMA_BASE_URL,OLLAMA_MODEL,OLLAMA_MAX_TOKENSXAI_API_KEY,XAI_MODEL,XAI_MAX_TOKENSCLIENT_ID,CLIENT_SECRET,SLUG_NAME,TENANT_NAME(para StackSpot)
# Configurações Gerais
LOG_LEVEL=info
ENV=prod
LLM_PROVIDER=CLAUDEAI
LOG_FILE=app.log
LOG_MAX_SIZE=300MB
HISTORY_MAX_SIZE=300MB
# Configurações do OpenAI
OPENAI_API_KEY=sua-chave-openai
OPENAI_MODEL=gpt-4o-mini
OPENAI_ASSISTANT_MODEL=gpt-4o-mini
OPENAI_USE_RESPONSES=true # use a Responses API (ex.: para gpt-5)
OPENAI_MAX_TOKENS=60000
# Configurações do StackSpot
CLIENT_ID=seu-cliente-id
CLIENT_SECRET=seu-cliente-secreto
SLUG_NAME=seu-slug-stackspot
TENANT_NAME=seu-tenant-name
# Configurações do ClaudeAI
CLAUDEAI_API_KEY=sua-chave-claudeai
CLAUDEAI_MODEL=claude-3-5-sonnet-20241022
CLAUDEAI_MAX_TOKENS=20000
CLAUDEAI_API_VERSION=2023-06-01
# Configurações do Google AI (Gemini)
GOOGLEAI_API_KEY=sua-chave-googleai
GOOGLEAI_MODEL=gemini-2.5-flash
GOOGLEAI_MAX_TOKENS=50000
# Configurações da xAI
XAI_API_KEY=sua-chave-xai
XAI_MODEL=grok-4-latest
XAI_MAX_TOKENS=50000
# Configurações da Ollama
OLLAMA_ENABLED=true #Obrigatório para habilitar API do Ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=gpt-oss:20b
OLLAMA_MAX_TOKENS=5000Inicie a aplicação com ./chatcli e comece a conversar.
Execute prompts em uma única linha, ideal para scripts e automações.
- Exemplos rápidos:
chatcli -p "Explique rapidamente este repositório." chatcli -p "@git @env Monte um release note enxuto." chatcli -p "@file ./src --mode summary Faça um panorama da arquitetura."
- Entrada via
stdin(Pipes):git diff | chatcli -p "Resuma as mudanças e liste possíveis impactos."
- Flags disponiveis no oneshoot:
-pou--prompt: texto a enviar para a LLM em uma única execução.--provider: sobrescreve o provedor de LLM em tempo de execução (OPENAI,OPENAI_ASSISTANT,CLAUDEAI,GOOGLEAI,STACKSPOT,XAI).--model: escolhe o modelo do provedor ativo (ex.:gpt-4o-mini,claude-3-5-sonnet-20241022,gemini-2.5-flash, etc.)--max-tokens: Define a quantidade maxima de tokens usada para provedor ativo.--timeouttimeout da chamada one-shot (padrão: 5m)--no-animdesabilita animações (útil em scripts/CI).--agent-auto-execexecuta automaticamente o primeiro comando sugerido pelo agente (modo agente).
Observação: as mesmas features de contexto funcionam dentro do texto do --prompt, como @file, @git, @env, @command e o operador > para adicionar contexto. Lembre-se de colocar o prompt entre aspas duplas no shell para evitar interpretações indesejadas.
- Gerenciamento de Sessão:
/session save <nome>,/session load <nome>,/session list,/session delete <nome>,/session new
- Configuração e Status:
/switch,/reload,/configou/status(exibe configurações de runtime, provedor e modelo em uso).
- Geral:
/help: Exibe a ajuda./exit: Para Sair do ChatCLI./versionou/v: Mostra a versão, o hash do commit e a data de compilação.Ctrl+C(uma vez): Cancela a operação atual.Ctrl+C(duas vezes) ouCtrl+D: Encerra a aplicação.
- Contexto:
@history,@git,@env,@file,@command.
O comando @file <caminho> é a principal ferramenta para enviar arquivos e diretórios, com suporte à expansão de caminhos (~).
- Modo Padrão (
full): Processa todo o conteúdo de um arquivo ou diretório, truncando-o se o limite de tokens for excedido. Ideal para projetos pequenos a médios. - Modo de Resumo (
summary): Retorna apenas a estrutura de diretórios, lista de arquivos com tamanhos e estatísticas gerais. Útil para obter uma visão geral sem o conteúdo. - Modo Inteligente (
smart): O ChatCLI atribui uma pontuação de relevância a cada arquivo com base em sua pergunta e inclui somente os mais pertinentes.@file --mode smart ~/meu-projeto/ Como funciona o sistema de login?
- Modo de Chunks (
chunked): Para projetos grandes, divide o conteúdo em pedaços (chunks) gerenciáveis, enviando um de cada vez.
Após o envio do primeiro chunk, use /nextchunk para processar o próximo. O sistema fornece feedback visual sobre o progresso e o número de chunks restantes. Para gerenciar falhas, use /retry, /retryall ou /skipchunk.
O Modo Agente permite que a IA interaja com seu sistema, sugerindo ou executando comandos para automatizar tarefas complexas ou repetitivas.
Inicie o agente com /agent <consulta> ou /run <consulta>. O agente irá sugerir comandos que você pode aprovar ou refinar.
- Refinamento: Use
pCNpara adicionar contexto antes de executar o comandoN. - Adicionando contexto ao output: Após a execução, use
aCNpara adicionar informações ao output do comandoNe obter uma nova resposta da IA.
Perfeito para scripts e automação.
- Modo Padrão (Dry-Run): Apenas sugere o comando e sai.
chatcli -p "/agent liste todos os arquivos .go neste diretório" - Modo de Execução Automática: Use a flag
--agent-auto-execpara que o agente execute o primeiro comando sugerido (comandos perigosos são bloqueados automaticamente).chatcli -p "/agent crie um arquivo chamado test_file.txt" --agent-auto-exec
O projeto é modular e organizado em pacotes:
cli: Gerencia a interface e o modo agente.config: Lida com a configuração via constantes.llm: Lida com a comunicação e gerência dos clientes LLM.utils: Contém funções auxiliares para arquivos, Git, shell, HTTP, etc.models: Define as estruturas de dados.version: Gerencia informações de versão.
Principais bibliotecas Go utilizadas: Zap, go-prompt, Glamour, Lumberjack e Godotenv.
Contribuições são bem-vindas!
- Fork o repositório.
- Crie uma nova branch para sua feature:
git checkout -b feature/minha-feature. - Faça seus commits e envie para o repositório remoto.
- Abra um Pull Request.
Este projeto está licenciado sob a Licença MIT.
Para dúvidas ou suporte, abra uma issue no repositório.
ChatCLI une a potência dos LLMs com a simplicidade da linha de comando, oferecendo uma ferramenta versátil para interações contínuas com IA diretamente no seu terminal. Aproveite e transforme sua experiência de produtividade! 🗨️✨