O Crush é um assistente de programação de IA que é executado no terminal, desenvolvido pela equipe do Charmbracelet. Ele ajuda os desenvolvedores a codificar, depurar e gerenciar projetos de forma eficiente no terminal, integrando o Modelo de Linguagem Grande (LLM). O Crush é compatível com vários modelos, permitindo que os usuários alternem entre eles, é compatível com o Protocolo de Servidor de Linguagem (LSP) para contexto de código e fornece extensões do Protocolo de Contexto de Modelo (MCP). Compatível com uma ampla gama de sistemas operacionais, incluindo macOS, Linux e Windows, para desenvolvedores que preferem um terminal, o Crush tem um design limpo que se concentra na usabilidade e no desempenho, e foi projetado para tornar a codificação mais eficiente.
Lista de funções
- Suporte a vários modelos de linguagem grande (LLMs), como OpenAI, Anthropic ou modelos nativos (por exemplo, Ollama), com a capacidade de alternar modelos no meio do caminho.
- Integração do Language Server Protocol (LSP), que fornece autocompletar de código, verificação de sintaxe e outras funções.
- Oferece suporte ao protocolo de contexto de modelo (MCP), ampliando a funcionalidade via HTTP, stdio ou SSE.
- Oferece gerenciamento de várias sessões, permitindo alternar entre projetos e manter o contexto.
- Suporta a execução em todas as plataformas, incluindo macOS, Linux, Windows (PowerShell e WSL), FreeBSD e muito mais.
- Oferece arquivos de configuração flexíveis que suportam configuração global ou em nível de projeto.
- Uma lista de modelos suportados pela comunidade (Catwalk) para facilitar aos usuários a adição ou atualização de modelos.
- Fornece recursos de geração de código e depuração para otimizar os fluxos de trabalho de ponta a ponta.
Usando a Ajuda
Processo de instalação
O Crush oferece suporte a vários métodos de instalação para diferentes sistemas operacionais e gerenciadores de pacotes. Veja a seguir as etapas detalhadas de instalação:
Instalação via Homebrew (macOS/Linux)
- Abra um terminal e execute o seguinte comando:
brew install charmbracelet/tap/crush
- Aguarde a conclusão da instalação e digite
crush --version
Verifique se a instalação foi bem-sucedida.
Instalação via NPM (multiplataforma)
- Certifique-se de que o Node.js esteja instalado.
- É executado no terminal:
npm install -g @charmland/crush
- Verifique a versão:
crush --version
.
Instalação via Arch Linux
- Use o Gerenciador de pacotes do Yay:
yay -S crush-bin
- Verifique a instalação:
crush --version
.
Instalação via Nix
- Execute o seguinte comando:
nix run github:numtide/nix-ai-tools#crush
- ou instalado via NUR:
nix-channel --add https://github.com/nix-community/NUR/archive/main.tar.gz nur nix-channel --update nix-shell -p '(import <nur> { pkgs = import <nixpkgs> {}; }).repos.charmbracelet.crush'
Instalação via Debian/Ubuntu
- Adicione a fonte do software Charm:
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list
- Atualizar e instalar:
sudo apt update && sudo apt install crush
Instalação via Fedora/RHEL
- Adicione o repositório Yum:
echo '[charm] name=Charm baseurl=https://repo.charm.sh/yum/ enabled=1 gpgcheck=1 gpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.repo
- Instalar o Crush:
sudo yum install crush
Verificar a instalação
Após a conclusão da instalação, execute crush --version
Verifique as informações da versão. Se o número da versão for exibido, a instalação foi bem-sucedida.
Configuração de chaves de API
O Crush precisa ser configurado com uma chave de API para que o modelo de idioma grande funcione corretamente. Veja a seguir as etapas de configuração:
- Obter a chave da API:
- Os provedores de modelos compatíveis incluem OpenAI, Anthropic, Groq ou OpenRouter.
- Visite o site oficial do provedor para se registrar e obter uma chave de API.
- Configure a chave:
- Execute-o em um terminal
crush config
Entre no modo de configuração. - Digite a chave da API e salve quando solicitado.
- Execute-o em um terminal
- Suporte a modelos locais:
- Se estiver usando um modelo local (por exemplo, Ollama), será necessário configurar a interface compatível com OpenAPI. Exemplo:
{ "$schema": "https://charm.land/crush.json", "providers": { "ollama": { "type": "openai", "base_url": "http://127.0.0.1:11434/v1", "api_key": "ollama", "models": [ { "id": "devstral", "name": "devstral", "context_window": 131072 } ] } } }
- Salve o arquivo de configuração no diretório do projeto ou
~/.crush/config.json
.
- Se estiver usando um modelo local (por exemplo, Ollama), será necessário configurar a interface compatível com OpenAPI. Exemplo:
Principais recursos do uso do Crush
geração de código
- No terminal, digite
crush code
e, em seguida, descreve as necessidades, como, por exemplo:crush code "编写一个 Python 函数,计算斐波那契数列"
- O Crush chama o LLM configurado, gera o código e o exibe.
- Se o código não envolver o bloco corretamente, o
CRUSH.md
para adicionar regras:```python # 代码示例
depuração de código
- importação
crush debug
, cole o código problemático. - O Crush analisará o código e recomendará uma correção.
- Depuração aprimorada com LSP:
- Configure um servidor LSP, como o Go's
gopls
::{ "$schema": "https://charm.land/crush.json", "lsp": { "go": { "command": "gopls" }, "typescript": { "command": "typescript-language-server", "args": ["--stdio"] } } }
- O Crush usa LSPs para fornecer verificação de sintaxe e sugestões complementares.
- Configure um servidor LSP, como o Go's
Gerenciamento de sessões
- Criar uma nova sessão:
crush session new <项目名>
. - Sessões de troca:
crush session switch <项目名>
. - Visualizar a lista de sessões:
crush session list
. - As sessões mantêm o contexto, garantindo que os fluxos de trabalho de diferentes projetos não entrem em conflito.
Funções estendidas (MCP)
- Configure o servidor MCP:
{ "mcp": { "transport": "http", "endpoint": "http://example.com/mcp" } }
- O Crush amplia a funcionalidade acessando ferramentas ou serviços externos por meio do MCP.
Validação de arquivos de liberação
O Crush fornece verificação de assinatura para garantir que os arquivos baixados sejam seguros:
- Faça o download da versão e dos arquivos de assinatura (por exemplo
checksums.txt
echecksums.txt.sig
). - Execute o comando verify:
cosign verify-blob \ --certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \ --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \ --cert 'https://github.com/charmbracelet/crush/releases/download/v0.1.11/checksums.txt.pem' \ --signature 'https://github.com/charmbracelet/crush/releases/download/v0.1.11/checksums.txt.sig' \ ./checksums.txt
- A saída mostra "Verified OK", indicando que o arquivo é seguro.
cenário do aplicativo
- Codificação eficiente de terminais
- À medida que os desenvolvedores escrevem código no terminal, o Crush gera rapidamente trechos de código, oferece sugestões de depuração e reduz o tempo gasto com a mudança para um navegador ou IDE.
- Gerenciamento de projetos cruzados
- Para os desenvolvedores que gerenciam vários projetos, o recurso de gerenciamento de sessões do Crush permite salvar o contexto de diferentes projetos e alternar rapidamente entre os ambientes de trabalho.
- Desenvolvimento de modelos locais
- Os desenvolvedores que usam modelos locais, como o Ollama, podem usar o Crush para gerar e depurar códigos em um ambiente sem rede.
- Trabalho em equipe
- As equipes podem unificar seu ambiente de desenvolvimento e colaborar com mais eficiência compartilhando arquivos de configuração e bibliotecas de modelos do Catwalk.
QA
- Quais sistemas operacionais são compatíveis com o Crush?
- O Crush é compatível com macOS, Linux, Windows (incluindo PowerShell e WSL), FreeBSD, OpenBSD e NetBSD.
- Como faço para alternar entre diferentes LLMs?
- Execução em uma sessão
crush model switch <模型名>
ou especificar o modelo em um arquivo de configuração.
- Execução em uma sessão
- O Crush é compatível com o uso off-line?
- Com modelos locais (como o Ollama) e configuração local, o Crush pode ser executado totalmente off-line.
- Como resolver o problema de renderização do bloco de código?
- existir
CRUSH.md
para adicionar regras de bloco de código ou verificar as configurações de formato de saída do LLM.
- existir