Crush - Agente de codificação com IA para o terminal
(github.com/charmbracelet)- É um agente de codificação com IA que funciona no terminal e, ao integrar-se com diversos LLM (modelos de linguagem de grande porte), oferece suporte para escrita de código, automação de fluxo de trabalho e manutenção de contexto de código, entre outros recursos para aumentar a produtividade de código.
- É possível escolher vários modelos e alternar livremente entre eles no meio da sessão, além de oferecer suporte à manutenção de sessões/contextos por projeto.
- Oferece recursos voltados para desenvolvedores, como integração com LSP (Language Server Protocol), suporte a MCP (Model Context Protocol) extensível e exclusão via .gitignore e outros arquivos de ignore.
- Funciona em todos os principais ambientes de terminal, incluindo macOS, Linux, Windows e FreeBSD, e pode ser instalado por vários métodos, como gerenciador de pacotes, Go ou binário.
- Oferece, ao mesmo tempo, configuração intuitiva e personalização avançada, com variáveis de ambiente, configuração JSON e whitelist de ferramentas, com design pensado até para usuários avançados.
Crush
- É um agente de codificação com IA que roda no ambiente de terminal e permite integrar livremente os LLMs preferidos pelo desenvolvedor para oferecer suporte a escrita, edição e automação de código.
- Permite selecionar e alternar livremente entre vários modelos (Anthropic, OpenAI, Groq, OpenRouter etc.), além de gerenciar o contexto separadamente por sessão.
- Através de LSP (Language Server Protocol), obtém contexto adicional para cada linguagem e oferece assistência de código mais inteligente.
- Via MCP (Model Context Protocol) é possível coletar e usar informações adicionais de diversas fontes externas, como sistemas externos, HTTP e linha de comando.
Recursos principais
- Suporte a múltiplos modelos: integração com diversos LLMs, como OpenAI, Anthropic, Groq e OpenRouter, com possibilidade de adicionar outros.
- Trabalho baseado em sessão: separação e gerenciamento de múltiplas sessões e contextos por projeto.
- Troca flexível de modelo: mudança de modelo livre durante a sessão, mantendo o contexto existente.
- Integração com LSP: conexão com LSP dos idiomas Go, TypeScript, Nix e principais linguagens para reforçar o contexto de código.
- Extensibilidade: expansão fácil de recursos adicionais via protocolo MCP, com integrações externas HTTP/CLI/SSE, entre outros.
- Suporte amplo de plataformas: funcionamento em terminais de macOS, Linux, Windows (WSL, PowerShell), FreeBSD, OpenBSD e NetBSD.
- Configuração intuitiva: pode ser usado imediatamente sem configuração prévia e, quando necessário, oferece configuração JSON por projeto ou global.
- Recurso robusto de exclusão: gerenciamento de arquivos/diretórios excluídos do contexto por meio de
.gitignoree.crushignore. - Whitelist de ferramentas: oferece aprovação prévia e opção de execução automática ao rodar ferramentas; o flag
--yolopermite pular o prompt completo (use com cautela). - Provedores personalizados: é possível adicionar livremente APIs compatíveis com OpenAI e Anthropic e definir opções detalhadas.
Instalação e início
- Instalável por diversos gerenciadores e formatos, como Homebrew, NPM, Arch, Nix, Debian/Ubuntu, Fedora/RHEL, além de binário/Go.
- Na primeira execução, é necessário informar a chave da API do LLM preferido (OpenAI, Anthropic, Groq etc.), que também pode ser definida por variáveis de ambiente.
- Principais LLMs configuráveis via variável de ambiente:
OPENAI_API_KEY,ANTHROPIC_API_KEY,GROQ_API_KEY,OPENROUTER_API_KEY,GEMINI_API_KEY,VERTEXAI_PROJECT, entre outros.
Exemplos de configuração
- Aplicar opções avançadas por meio de arquivo JSON global ou por projeto (
./.crush.json,./crush.json,$HOME/.config/crush/crush.json). - Configuração de LSP: possível definir comandos específicos por linguagem.
{ "lsp": { "go": { "command": "gopls" }, "typescript": { "command": "typescript-language-server", "args": ["--stdio"] } } } - Configuração de MCP: exemplo de extensão externa com base em HTTP/CLI/SSE
{ "mcp": { "filesystem": { "type": "stdio", "command": "node", "args": ["/path/to/mcp-server.js"] } } } - Exclusão de arquivos e aprovação de ferramentas
- Excluir arquivos/pastas específicos com
.crushignore. - Pular prompt via whitelist de execução de ferramentas ou com o flag
--yolo.
- Excluir arquivos/pastas específicos com
Recursos para usuários avançados
- Registro de provedores personalizados: adicionar APIs compatíveis com OpenAI/Anthropic e definir opções detalhadas como preço e contexto.
- Logs: arquivo de logs por projeto, com verificações em tempo real por comandos CLI como
crush logsecrush logs --follow. - Opções de depuração: ativar logs detalhados via flag
--debugou configuração.
2 comentários
o aider é realmente bem ruim;;
Comentários do Hacker News
Acho estranho que a maioria dos agentes de IA para programação baseados em terminal esteja tentando enfeitar demais a UI de texto. Colocam muito espaço em branco, line art, widgets, ASCII art, gradientes e até animações. Mas faltam recursos básicos como keybindings completos do jeito que você quer, autocompletar com Tab, scrollback consistente ou renderização de texto sem flicker. Pelo menos esta ferramenta não foi escrita em node.js, então dá para esperar um desempenho melhor, com menos redraws desnecessários na saída do terminal. Mas, se você usa esperando algo como um REPL ou uma CLI, o modelo de interação até parece o mesmo, só que na prática funciona de um jeito totalmente diferente, e também tem uma sensação bem diferente das TUIs Unix da linha de editores ou leitores. Fico curioso se essa tendência veio só de copiar o Claude Code ou se começou antes. Por isso ainda prefiro o Aider. Ele oferece uma aparência e uma usabilidade mais próximas de um REPL
Essa ferramenta foi feita pela empresa Charm, e a missão deles é tornar o prompt de comando mais atraente. Eles já atuam nisso há anos, desde antes da febre dos LLMs. É uma empresa que cria frameworks e ferramentas de CLI para golang
O que eu gosto no terminal é o fluxo de trabalho centrado em rolagem, em que você digita comandos e consegue ver, em sequência, como um log, as ações e saídas de várias fontes e programas. O que eu realmente quero é um fluxo de trabalho poderoso, baseado em HTML, com rolagem e múltiplos programas. Mas essas tentativas recentes parecem juntar o pior dos dois lados. Uma boa UI eu prefiro encontrar em um sistema de renderização melhor
Essa tendência de text UI, na verdade, já era um estilo característico do charmbracelet antes mesmo de surgirem os agentes de IA. Eu até gosto porque, ao contrário das TUIs tradicionais, os keybindings são mais fáceis de descobrir de forma intuitiva
Um dos motivos de essas interfaces estarem atraindo fãs e desenvolvedores tão rapidamente hoje em dia provavelmente é que muita gente já está acostumada com editores estilo IDE com interface gráfica. Nem todo desenvolvedor trabalha só no terminal. (Eu ainda tenho dias em que nem abro X/Wayland)
Pelo menos dá para usar o Claude Code no emacs https://github.com/stevemolitor/claude-code.el
Uma das coisas boas desta ferramenta é que, por ainda estar em estágio inicial, o código é muito claro e modularizado. É um excelente blueprint para quem quiser projetar agentes, com chamadas de ferramentas, sessões, resumo automático, gerenciamento de persistência e afins. Vale muito a pena guardar este link de commit
Para quem queria realmente ler o que está acontecendo no GIF de demonstração, converti em vídeo mais lento com ffmpeg e postei aqui https://share.cleanshot.com/XBXQbSPP
Usei por uns 15 minutos com seriedade. Comparando com o Claude Code, os pontos fortes são a UI bonita, uma barra lateral útil para acompanhar arquivos alterados e custos, e uma UX de aceitação de mudanças bem fluida, com hotkeys e diffs fáceis de ver. Já os pontos fracos são que não dá para combinar vários modelos e que vários arquivos binários desnecessários são adicionados ao diretório. O init inicial cria um arquivo chamado CHARM.md, mas ele não combina com as informações que eu gostaria de compartilhar com o modelo. Por exemplo, ele não transmite que meus casos de teste em Go usam PascalCasing. Além disso, quando saio com Ctrl+C, meu terminal trava
A pergunta realmente importante é: quais desses agentes novos oferecem suporte decente a modelos locais? Quero eliminar a dependência de APIs externas e estou disposto a aceitar alguma perda de desempenho
Há uma issue em andamento para adicionar suporte a Ollama no Crush (já faz 2 semanas)
A maioria dos agentes funciona com endpoints compatíveis com OpenAI
O OpenHands permite configurar qualquer LLM que você quiser https://github.com/All-Hands-AI/OpenHands
O Aider também diz explicitamente que oferece suporte a modelos locais, embora eu não tenha testado pessoalmente https://aider.chat/docs/llms.html
Seria ótimo ter uma tabela comparando todas essas ferramentas novas, como Claude Code, opencode, aider e cortex. Não é fácil entender de relance como cada uma funciona ou no que se diferencia
Comparações ou benchmarks com modelos comerciais são muito difíceis por causa do custo. Quando escrevi um artigo recentemente, gastei mais de 10 mil dólares só para avaliar vários modelos comerciais SOTA. Comparar com modelos abertos saía barato, mas os revisores queriam comparação com os “melhores”, então não teve jeito. Além disso, a estrutura interna e a stack dos modelos comerciais não são transparentes e podem mudar a qualquer momento, então isso é muito ineficiente. Não acho desejável exigir sempre comparação com modelos comerciais em pesquisa acadêmica
Pelo que me lembro, opencode era o nome original, mas houve conflito entre os desenvolvedores e o nome foi alterado
Desempenho não depende só da ferramenta, mas também do modelo usado, da base de código (contexto) e da tarefa dada (prompt). Esses fatores não são independentes, e o desempenho varia bastante conforme a combinação. Por exemplo, Claude Sonnet 4 com Claude Code foi bom para implementar funcionalidades de backend em Python, enquanto Gemini 2.5 Pro foi melhor para mexer em código frontend em React. Ou seja, não dá para fixar todas as variáveis e comparar apenas a ferramenta; é preciso considerar a combinação ferramentamodelocontexto*prompt. O 16x Eval cobre parte disso, mas ainda não inclui elementos como a ferramenta https://eval.16x.engineer/
“glamorous” também é uma expressão usada no inglês britânico https://dictionary.cambridge.org/dictionary/english/glamorous
Estou usando o Crush nas últimas semanas e estou realmente animado. Acompanho a Charm há muito tempo, e eles são uma das poucas equipes que realmente entendem experiência do desenvolvedor e continuam criando ferramentas de que as pessoas gostam. O fato de terem entrado tão cedo nessa corrida de IA para programação também é um bom sinal. Dá para perceber claramente que é uma ferramenta feita por gente que realmente a usa
Surgiu mais uma, mas desta vez o design está realmente bom. Com certeza vou testar. Uma frustração que tenho com todas as ferramentas (EDIT: o opencode permite autenticação com github) é que eu não consigo autenticar diretamente, com a minha assinatura, em serviços de assinatura mensal como github copilot, claude code, openai codex, cursor etc. Seria muito bom se eu pudesse assinar o serviço e ainda ter liberdade para trocar a interface quando não gosto dela
Reforçado por LSP: o Crush usa LSP como contexto adicional, como costuma fazer de forma geral. Para mim, esse é o recurso mais interessante. Também me interessam os recursos de múltiplas sessões e projetos