Crush ist ein KI-Programmierassistent, der im Terminal läuft und vom Charmbracelet-Team entwickelt wurde. Durch die Integration des Large Language Model (LLM) unterstützt Crush mehrere Modelle, zwischen denen der Benutzer flexibel wechseln kann, sowie das Language Server Protocol (LSP) für den Codekontext und Erweiterungen des Model Context Protocol (MCP). Kompatibel mit einer Vielzahl von Betriebssystemen, einschließlich macOS, Linux und Windows, für Entwickler, die ein Terminal bevorzugen, hat Crush ein klares Design, das sich auf Benutzerfreundlichkeit und Leistung konzentriert, und wurde entwickelt, um die Codierung effizienter zu machen.
Funktionsliste
- Unterstützung für mehrere Large Language Models (LLMs) wie OpenAI, Anthropic oder native Modelle (z.B. Ollama), mit der Möglichkeit, das Modell auf halbem Weg zu wechseln.
- Integration des Language Server Protocol (LSP), das Codevervollständigung, Syntaxprüfung und andere Funktionen bietet.
- Unterstützt das Model Context Protocol (MCP) und erweitert die Funktionalität über HTTP, stdio oder SSE.
- Bietet eine Multi-Session-Verwaltung, die es ermöglicht, zwischen Projekten zu wechseln und den Kontext beizubehalten.
- Unterstützt die Ausführung auf allen Plattformen, einschließlich macOS, Linux, Windows (PowerShell und WSL), FreeBSD und mehr.
- Bietet flexible Konfigurationsdateien, die die Konfiguration auf Projektebene oder global unterstützen.
- Eine Liste der von der Gemeinschaft unterstützten Modelle (Catwalk), um es den Benutzern zu erleichtern, Modelle hinzuzufügen oder zu aktualisieren.
- Bietet Code-Generierung und Debugging-Funktionen zur Optimierung von End-to-End-Workflows.
Hilfe verwenden
Einbauverfahren
Crush unterstützt mehrere Installationsmethoden für verschiedene Betriebssysteme und Paketmanager. Nachfolgend finden Sie die detaillierten Installationsschritte:
Installation über Homebrew (macOS/Linux)
- Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus:
brew install charmbracelet/tap/crush
- Warten Sie, bis die Installation abgeschlossen ist, und geben Sie
crush --version
Überprüfen Sie, ob die Installation erfolgreich war.
Installation über NPM (plattformübergreifend)
- Stellen Sie sicher, dass Node.js installiert ist.
- Läuft im Terminal:
npm install -g @charmland/crush
- Überprüfen Sie die Version:
crush --version
.
Installation über Arch Linux
- Verwenden Sie den Yay Package Manager:
yay -S crush-bin
- Überprüfen Sie die Installation:
crush --version
.
Installation über Nix
- Führen Sie den folgenden Befehl aus:
nix run github:numtide/nix-ai-tools#crush
- oder über NUR installiert:
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'
Installation über Debian/Ubuntu
- Fügen Sie die Charm-Softwarequelle hinzu:
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
- Aktualisieren und installieren:
sudo apt update && sudo apt install crush
Installation über Fedora/RHEL
- Fügen Sie das Yum-Repository hinzu:
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
- Crush installieren:
sudo yum install crush
Überprüfen der Installation
Nachdem die Installation abgeschlossen ist, führen Sie crush --version
Überprüfen Sie die Versionsinformationen. Wenn die Versionsnummer angezeigt wird, war die Installation erfolgreich.
API-Schlüssel konfigurieren
Damit das große Sprachmodell ordnungsgemäß funktioniert, muss Crush mit einem API-Schlüssel konfiguriert werden. Nachfolgend finden Sie die Konfigurationsschritte:
- Abrufen des API-Schlüssels:
- Zu den unterstützten Modellanbietern gehören OpenAI, Anthropic, Groq oder OpenRouter.
- Besuchen Sie die offizielle Website des Anbieters, um sich zu registrieren und den API-Schlüssel zu erhalten.
- Konfigurieren Sie den Schlüssel:
- Starten Sie es in einem Terminal
crush config
Rufen Sie den Konfigurationsmodus auf. - Geben Sie den API-Schlüssel ein und speichern Sie, wenn Sie dazu aufgefordert werden.
- Starten Sie es in einem Terminal
- Unterstützung für lokale Modelle:
- Wenn Sie ein lokales Modell (z. B. Ollama) verwenden, müssen Sie die OpenAPI-konforme Schnittstelle konfigurieren. Beispiel:
{ "$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 } ] } } }
- Speichern Sie die Konfigurationsdatei im Projektverzeichnis oder
~/.crush/config.json
.
- Wenn Sie ein lokales Modell (z. B. Ollama) verwenden, müssen Sie die OpenAPI-konforme Schnittstelle konfigurieren. Beispiel:
Hauptmerkmale der Verwendung von Crush
Codegenerierung
- Geben Sie in das Terminal
crush code
und beschreibt dann die Bedürfnisse, wie z. B.:crush code "编写一个 Python 函数,计算斐波那契数列"
- Crush ruft den konfigurierten LLM auf, erzeugt den Code und zeigt ihn an.
- Wenn der Code den Block nicht korrekt umbricht, wird die
CRUSH.md
Datei, um Regeln hinzuzufügen:```python # 代码示例
Code-Fehlersuche
- Einfuhr
crush debug
fügen Sie den problematischen Code ein. - Crush wird den Code analysieren und eine Lösung vorschlagen.
- Verbessertes Debugging mit LSP:
- Konfigurieren Sie einen LSP-Server, z. B. den von Go
gopls
::{ "$schema": "https://charm.land/crush.json", "lsp": { "go": { "command": "gopls" }, "typescript": { "command": "typescript-language-server", "args": ["--stdio"] } } }
- Crush verwendet LSPs zur Syntaxprüfung und für ergänzende Vorschläge.
- Konfigurieren Sie einen LSP-Server, z. B. den von Go
Sitzungsmanagement
- Erstellen Sie eine neue Sitzung:
crush session new <项目名>
. - Sitzungen umschalten:
crush session switch <项目名>
. - Sehen Sie sich die Liste der Sitzungen an:
crush session list
. - Sitzungen behalten den Kontext bei und stellen sicher, dass Arbeitsabläufe aus verschiedenen Projekten nicht miteinander in Konflikt geraten.
Erweiterte Funktionen (MCP)
- Konfigurieren Sie den MCP-Server:
{ "mcp": { "transport": "http", "endpoint": "http://example.com/mcp" } }
- Crush erweitert die Funktionalität durch den Zugriff auf externe Tools oder Dienste über den MCP.
Validierung von Freigabedateien
Crush bietet eine Signaturprüfung, um sicherzustellen, dass die heruntergeladenen Dateien sicher sind:
- Laden Sie die Freigabe- und Signaturdateien herunter (z. B.
checksums.txt
undchecksums.txt.sig
). - Führen Sie den Befehl verify aus:
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
- Die Ausgabe zeigt "Verified OK" an, was bedeutet, dass die Datei sicher ist.
Anwendungsszenario
- Effiziente Kodierung von Terminals
- Wenn Entwickler Code im Terminal schreiben, generiert Crush schnell Codeschnipsel, bietet Debugging-Vorschläge und reduziert den Zeitaufwand für den Wechsel zu einem Browser oder einer IDE.
- Projektübergreifendes Management
- Entwickler, die mehrere Projekte verwalten, können mit der Sitzungsverwaltung von Crush den Kontext verschiedener Projekte speichern und schnell zwischen Arbeitsumgebungen wechseln.
- Entwicklung eines lokalen Modells
- Entwickler, die lokale Modelle wie Ollama verwenden, können Crush nutzen, um Code in einer netzunabhängigen Umgebung zu generieren und zu debuggen.
- Teamarbeit
- Teams können ihre Entwicklungsumgebung vereinheitlichen und effizienter zusammenarbeiten, indem sie Konfigurationsdateien und Catwalk-Modellbibliotheken gemeinsam nutzen.
QA
- Welche Betriebssysteme werden von Crush unterstützt?
- Crush unterstützt macOS, Linux, Windows (einschließlich PowerShell und WSL), FreeBSD, OpenBSD und NetBSD.
- Wie kann ich zwischen verschiedenen LLMs wechseln?
- Laufen in einer Sitzung
crush model switch <模型名>
, oder geben Sie das Modell in einer Konfigurationsdatei an.
- Laufen in einer Sitzung
- Unterstützt Crush die Offline-Nutzung?
- Mit lokalen Modellen (wie z. B. Ollama) und lokalen Konfigurationen kann Crush vollständig offline laufen.
- Wie lässt sich das Problem der Darstellung von Codeblöcken lösen?
- existieren
CRUSH.md
Datei, um Codeblockregeln hinzuzufügen, oder überprüfen Sie die Einstellungen des LLM-Ausgabeformats.
- existieren