
Crush 是 Charm(就是做 Bubbles、Glow、Lipgloss 那套终端 UI 库的公司)出品的终端 AI 编程助手,定位是「你终端里的编程新搭档」:你的工具、你的代码、你的工作流,全部接进你选的任意大模型。它是一个纯 TUI(终端图形界面)应用,没有服务端、没有云绑定,装上即用。截至本文写作时,Crush 在 GitHub 上收获约 2.9 万 Star,main 分支每天都有提交,属于高度活跃项目。
为什么值得用它?第一,它原生支持几乎所有主流模型供应商——Anthropic、OpenAI、Gemini、OpenRouter、Groq、DeepSeek,甚至本地 Ollama,你可以在会话中途无缝切换模型而不丢上下文。第二,它带 LSP 增强和 MCP 扩展,能力比普通聊天机器人强得多。第三,Charm 生态的终端 UI 体验在开源界是天花板级别,颜值和交互都在线。本文从零开始,把 Crush 在 Linux / macOS / Windows 上装好、配上 API Key、接上本地 Ollama 模型,直到第一次让它帮你改代码。
一、项目介绍与适用场景
Crush 是一个跑在终端里的 Agent 式编程助手:你在项目目录里敲 crush,它进入一个全屏 TUI,读你的代码库、执行命令、改文件、跑测试,全程在你眼皮底下。它适合:
- 重度终端用户:不想离开 iTerm / Alacritty / VS Code 内置终端,想要一个能直接干活的 AI 搭档。
- 多模型党:今天用 Claude、明天用 GPT、后天想跑本地 Ollama,不想被某一家锁死。
- 服务器 / SSH 场景:没有图形界面的远程开发机,通过 SSH 就能获得完整的 Agent 编程能力。
- 团队内部统一工具链:用
crushrc把团队约定、MCP 服务器、模型偏好沉淀成可分发的配置。
二、核心功能逐条拆解
- 多模型接入:官方 README 列出 20+ 环境变量对应的供应商(
ANTHROPIC_API_KEY、OPENAI_API_KEY、GEMINI_API_KEY、OPENROUTER_API_KEY等),按ctrl+l打开模型选择器切换。 - 会话中途切模型:换模型保留上下文,不用重新解释一遍项目背景。
- 多会话:每个项目维护多个工作会话,会话管理器里挑历史对话继续。
- LSP 增强:像 IDE 一样加载语言服务器(gopls、typescript-language-server、nil),给 Agent 提供精确的符号上下文。
- MCP 扩展:支持
stdio、http、sse三种传输方式接 MCP 服务器,把 GitHub、Linear、数据库等工具接进 Agent。 - 本地模型:通过
provider add ollama --type ollama --base-url http://localhost:11434/v1/自动发现 Ollama 模型,完全离线可用。 - crushrc 配置:用 Bash 写配置,原生跨平台(含 Windows),优先级从项目级
./.crushrc到全局~/.config/crush/crushrc。 - Agent Skills:支持 Agent Skills 开放标准,从
~/.config/crush/skills/等目录自动发现技能包。 - 权限控制:默认每次工具调用都要你确认,
permissions allow view edit可放行常用工具,--yolo可跳过全部确认(慎用)。 - 可观测:日志落在
./.crush/logs/crush.log,crush logs --follow实时跟踪。
三、全套官方链接
| 类型 | 链接 |
|---|---|
| GitHub 仓库 | https://github.com/charmbracelet/crush |
| 官方文档 | 仓库 README + docs/ 目录(https://github.com/charmbracelet/crush/tree/main/docs) |
| 官方 Demo | 无独立 Demo 站点(TUI 应用,本地运行) |
| License | FSL-1.1-MIT(Functional Source License,满 2 年后自动转为 MIT,见仓库 LICENSE.md) |
四、硬件与环境前置要求
Crush 是一个用 Go 编写的单二进制 TUI 程序,自身资源占用极小:
- 操作系统:macOS、Linux、Windows(PowerShell 与 WSL)、Android、FreeBSD、OpenBSD、NetBSD 均为官方支持(README「Works Everywhere」)。
- 终端:任意支持真彩色的现代终端。
- Node.js(仅 npm 安装方式):需要本机有 Node 18+。
- Go(仅源码安装方式):需要 Go 1.22+。
- 模型侧:调用云端 API 只需网络;跑本地模型需先装 Ollama 并备好显卡内存。
- 内存 / CPU:Crush 本体 < 100MB 内存即可,真正吃资源的是你选的模型。
出处:官方 README「Installation」「Works Everywhere」段。
五、多平台安装步骤
Crush 官方不提供服务端部署方式,它是纯客户端 TUI,按官方 README 各平台安装方式逐一给出。
5.1 macOS 安装(Homebrew)
官方 README 原文:
brew install charmbracelet/tap/crush
解释:charmbracelet/tap 是 Charm 官方 Homebrew tap,安装后直接可用 crush 命令。
验证:
crush --version
5.2 Linux 安装(Debian/Ubuntu APT 仓库)
官方 README 给出的完整三行:
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
sudo apt update && sudo apt install crush
逐段解释:
- 第一行:建 APT 官方 keyring 目录。
- 第二行:下载 Charm 官方 GPG 公钥并 dearmor 成可被 APT 读取的格式。
- 第三行:把 Charm 仓库写进 sources.list.d。
- 第四行:刷新索引并安装 crush。
Fedora/RHEL 用户按 README:
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
sudo yum install crush
Arch 用户:yay -S crush。
5.3 Windows 安装(Winget / Scoop)
官方 README 原文:
# Winget
winget install charmbracelet.crush
# Scoop
scoop bucket add charm https://github.com/charmbracelet/scoop-bucket.git
scoop install crush
5.4 通用:npm 与 Go 安装
npm(官方 README):
npm install -g @charmland/crush
Go(官方 README):
go install github.com/charmbracelet/crush@latest
Solaris 上需加 tag:go install -tags sqlite3_dotlk github.com/charmbracelet/crush@latest(README 原话)。
六、配置文件全部参数解释
Crush 可以零配置开箱即用,但要接自己的模型供应商就要写 crushrc。官方说明:crushrc 就是带 Crush 内置命令的 Bash 脚本,按优先级加载:
| 优先级 | Unix 路径 | Windows 路径 |
|---|---|---|
| 1 | ./.crushrc(项目级) |
.\.crushrc |
| 2 | ./crushrc |
.\crushrc |
| 3 | ~/.config/crush/crushrc(全局) |
%USERPROFILE%\.config\crush\crushrc |
官方 README 给出的完整示例:
# Add Ollama.
provider add ollama --type ollama --base-url "http://localhost:11434/v1"
# Register a model on Ollama.
model add ollama/llama3.3 --name "Llama 3.3" --context-window 128000
# Auto-approve some tools.
permissions allow view edit
# Add an MCP server, with a GitHub API token stored in 1Password.
mcp add github \
--type http \
--url "https://api.github.com/mcp/" \
--header Authorization "Bearer $(op read 'op://my-secret-key')"
常用内置命令参数表:
| 命令 | 作用 | 关键参数 | 示例 | 改错后果 |
|---|---|---|---|---|
provider add |
注册模型供应商 | --type(ollama/completions/messages/llamacpp 等)、--base-url、--api-key |
provider add deepseek --type completions --base-url https://api.deepseek.com/v1 --api-key "$DEEPSEEK_API_KEY" |
type 选错(用 responses 打了非 OpenAI 端点)会请求格式报错 |
model add |
注册模型 | --name、--context-window、--default-max-tokens、--price-input/output |
model add deepseek/deepseek-chat --name "Deepseek V3" --context-window 64000 |
context-window 填小会导致长上下文被截断 |
permissions allow/deny |
工具白/黑名单 | 工具名列表 | permissions allow view ls grep edit |
放行 bash 等于让 Agent 随便执行命令 |
mcp add |
加 MCP 服务器 | --type http/stdio/sse、--url、--command、--header、--timeout |
见上 | 超时太短会导致 MCP 工具频繁失败 |
lsp add |
加语言服务器 | --command、--args、--env |
lsp add go --command "gopls" |
LSP 起不来时 Agent 拿不到精确符号 |
option |
全局开关 | debug、debug-lsp、notifications、provider-auto-update、disable-skill |
option debug true |
无 |
环境变量(官方 README 表格):
| 变量 | 对应供应商 |
|---|---|
ANTHROPIC_API_KEY |
Anthropic |
OPENAI_API_KEY |
OpenAI |
GEMINI_API_KEY |
Google Gemini |
OPENROUTER_API_KEY |
OpenRouter |
GROQ_API_KEY |
Groq |
DEEPSEEK_API_KEY |
DeepSeek(需配合上面 provider add) |
CRUSH_DISABLE_METRICS=1 |
关闭匿名指标 |
DO_NOT_TRACK=1 |
遵循 Do Not Track 约定 |
CRUSH_DISABLE_PROVIDER_AUTO_UPDATE=1 |
关闭自动从 Catwalk 更新模型表 |
七、启动、后台与日常使用
7.1 启动
cd your-project
crush
首次启动进入 TUI,按 ctrl+l 打开模型选择器,选一个供应商(如 Anthropic)粘贴 API Key,或直接用 Charm 官方 Hyper 订阅。预期:进入对话界面,输入框在底部。
7.2 后台常驻与开机自启
Crush 是交互式 TUI,官方没有提供常驻服务端模式(它是客户端工具,不是服务)。它天然在你当前终端里前台运行;配合 tmux / screen 可以让远程 SSH 会话不断:
tmux new -s dev
crush
# Ctrl+B 然后 D 脱离;下次 tmux attach -t dev 回来
修改端口:Crush 作为客户端不监听端口;它连接的是远程模型 API,所以「端口」概念发生在你自托管模型时(如 Ollama 默认 11434,改 Ollama 的 OLLAMA_HOST 即可,再在 crushrc 里改 --base-url)。
7.3 日志
crush logs # 最近 1000 行
crush logs --tail 500
crush logs --follow # 实时跟踪
日志文件位置:./.crush/logs/crush.log(项目相对路径)。
八、功能实操教程
第 1 步:装好后 cd 到一个 Git 仓库,敲 crush 进入 TUI。
第 2 步:按 ctrl+l 在模型选择器里选 Anthropic(或你已配好 Key 的供应商),粘贴 API Key。
第 3 步:输入「/init 让 Crush 分析这个项目」——它会扫描代码库并生成 AGENTS.md 项目上下文文件(官方 README「Initialization」段)。
第 4 步:直接用自然语言下任务,比如「帮我把这个函数加上错误处理并写测试」。Crush 会:读文件 → 提议修改 → 请求你确认 → 落盘 → 跑测试。
第 5 步:中途想换模型?按 ctrl+l 选另一个,上下文保留。
第 6 步(接本地模型,离线场景):先装好 Ollama 并 ollama pull qwen3:30b,然后在 crushrc 里写:
provider add ollama --type ollama --base-url "http://localhost:11434/v1/" --discover-models true
重启 crush,模型选择器里就能看到本地模型。
第 7 步:按 ctrl+p 打开命令面板,选 Themes 换主题(默认 charmtone-panther,可选 gruvbox-dark、keanu)。
九、全套报错故障排查
报错 1: crush: command not found
原因分析:PATH 没刷新或 shell 没重载。
解决方案:重新打开终端;brew 版确认 brew doctor 正常;deb 版确认 /etc/apt/sources.list.d/charm.list 写对了。
报错 2: 模型选择器里选了供应商但 401 / 403。
原因分析:API Key 没配对或额度用完。
解决方案:echo $ANTHROPIC_API_KEY 确认环境变量在当前 shell 里;或直接在模型选择器里重新粘贴。
报错 3: 连本地 Ollama 报 connection refused。
原因分析:Ollama 没起,或没监听 11434。
解决方案:ollama serve 先跑起来;curl http://localhost:11434 验证;远程服务器上 Ollama 默认只绑 127.0.0.1,需 OLLAMA_HOST=0.0.0.0 ollama serve。
报错 4: Linux 下复制粘贴不好用。
原因分析:官方 Q&A 明确:Linux/BSD + Wayland 需要 wl-copy/wl-paste,X11 需要 xclip/xsel。
解决方案:sudo apt install wl-clipboard(Wayland)或 sudo apt install xclip(X11)。
报错 5: Agent 每次改文件都问一遍,嫌烦。
原因分析:默认安全策略。
解决方案:在 crushrc 里 permissions allow view edit ls grep;完全信任再加 --yolo 启动(官方 WARNING:非常危险)。
报错 6: 公司内网拉不到模型列表更新。
原因分析:Crush 默认从 Catwalk 拉模型元数据。
解决方案:export CRUSH_DISABLE_PROVIDER_AUTO_UPDATE=1,或 option provider-auto-update false。
十、升级、回滚与卸载
升级:
- brew:brew upgrade crush
- apt:sudo apt update && sudo apt install --only-upgrade crush
- npm:npm update -g @charmland/crush
- Go:go install github.com/charmbracelet/crush@latest
备份建议:~/.config/crush/(含 crushrc、themes、skills)和项目里的 .crushrc、.crush/ 目录。
回滚:包管理器降级到上一个版本号;或直接 go install github.com/charmbracelet/crush@v具体版本。
卸载:brew uninstall crush / sudo apt remove crush / npm uninstall -g @charmland/crush;配置残留删 ~/.config/crush/ 与各项目下 .crushrc。
十一、商用许可与合规风险提示
Crush 采用 FSL-1.1-MIT(Functional Source License),这是一种「源码可见 + 延时转 MIT」的特殊许可:你可以自由查看、修改源码、内部使用,但在 license 生效满 2 年之前,不能把 Crush 本身作为托管服务对外提供(即不能直接拿它去做一个「类似 Crush 的 SaaS」卖钱)。满 2 年后自动转为 MIT,限制消失。个人、团队内部用它辅助写代码完全合规;但如果你想基于 Crush 二次开发一个商业产品对外卖,需要仔细读 LICENSE.md 的年限与条款。模型侧费用按你选的供应商 API 计费;本地 Ollama 模型另受模型权重协议约束。Crush 默认采集匿名指标,可 export CRUSH_DISABLE_METRICS=1 或 export DO_NOT_TRACK=1 关闭。
参考链接
- GitHub 仓库:https://github.com/charmbracelet/crush
- README(安装 / 配置 / MCP / Skills):https://github.com/charmbracelet/crush/blob/main/README.md
- License:https://github.com/charmbracelet/crush/blob/main/LICENSE.md
- 发布页(各平台二进制):https://github.com/charmbracelet/crush/releases