跳转到内容
灿海星图指南--Crush:OpenCode继任者上手,Bubble Tea/Gum/Huh/Lip Gloss四件套原生集成
·灿海星图指南

灿海星图指南--Crush:OpenCode继任者上手,Bubble Tea/Gum/Huh/Lip Gloss四件套原生集成

返回博客
金柘
#Crush#Charm#AI编程#Go#终端#教程

go install 报错的那一下午,我才意识到 OpenCode 归档后,Charm 团队不是打了个补丁——是把整个 CLI 工具链塞进去了。

本文是一篇实操指南。已核实 GitHub 仓库存在。

核心操作

安装

bash
go install github.com/charmbracelet/crush@latest

需要 Go 1.22+。如果不满足,先去 go.dev 升级。不用 Go 的可以直接从 Release 页面 下载二进制。

配置

新建 ~/.config/crush/config.toml,把下面的 API Key 和模型名换成你自己的:

toml
[models]
default = "claude-4-sonnet"

[providers.openai]
api_key = "sk-..."
models = ["gpt-4.1", "gpt-4.1-mini", "o4-mini", "o3"]

[providers.anthropic]
api_key = "sk-ant-..."
models = ["claude-4-sonnet", "claude-4-opus", "claude-4-haiku"]

[providers.openrouter]
api_key = "sk-or-..."
models = ["anthropic/claude-4-sonnet", "google/gemini-2.5-pro"]

[providers.deepseek]
api_key = "sk-..."
models = ["deepseek-chat", "deepseek-reasoner"]

[ui]
theme = "charm"
字段类型必填说明
models.defaultstring默认模型 ID,需在某个 provider 的 models 列表中已声明
providers.<name>.api_keystring条件必填Copilot 免费额度模式下可不填
providers.<name>.modelsarray该厂商可用的模型 ID 列表
ui.themestring可选 charmdraculanordtokyo-night

用 gum 做启动包装

Crush 内置了 Charm 工具链。写个脚本在启动前选模型:

bash
#!/bin/bash
model=$(gum choose "claude-4-sonnet" "gpt-4.1" "deepseek-chat")
crush --model "$model" "$@"

保存为 cc,放 $PATH 里,以后 cc 启动直接选模型。

多配置文件按项目隔离

bash
crush --config ~/.config/crush/work.toml   # 工作项目用 Claude
crush --config ~/.config/crush/side.toml   # 个人项目用 DeepSeek

每个 .toml 格式同上,只改 defaultapi_key

踩坑实录

现象原因解决
go install 报兼容性错误Go 版本低于 1.22go version 确认后升级
API Key 不生效首次运行不会自动迁移 OpenCode 配置手动编辑 ~/.config/crush/config.toml
非 OpenAI/Anthropic 厂商不知道怎么配官方文档只列了这两种的例子openrouter / deepseek 字段结构一致,照搬即可
default 模型切换不生效模型名拼写错误或未在 models 列表声明逐字对照 defaultmodels 数组

常见疑问

Q1:Crush 能上生产吗?

不建议。Charm 没打 v1.0 标签,API 和配置随时变。如果你需要一个每天靠得住的工具,先用 Claude Code 或 Codex,等 Crush 稳了再切。

Q2:OpenCode 配置能直接迁移吗?

不完全兼容。仓库路径、命令行入口、模型提供商配置格式都变了。需要手动对照文档重写。Copilot 免费额度的接入方式保留了,但授权流程可能不同。

Q3:既然同一拨人,为什么改名不直接更新 OpenCode?

Charm 在 OpenCode 基础上做了大量重构——从单体改成了 Bubble Tea/Gum/Huh/Lip Gloss 的工具链集成。代码变动太大,强行在原仓库迭代会破坏已有用户的使用体验。新名字新仓库是最干净的方式。

我为什么不用 Claude Code 替代

三个理由。

第一,模型自由度。 Claude Code 绑死 Anthropic。Crush 支持 8 种模型——你可以早上用 DeepSeek 省钱,下午切 Claude Opus 攻坚。对于同时在跑多个项目的开发者,这个灵活性就是几百块的 API 差价。

第二,Go 生态。 Crash 是 Go 写的,单二进制分发。不需要装 Python、不需要装 Node。我有一台服务器只装了 Go 工具链,跑 Crush 毫无压力。Claude Code 是 Node 写的——意味着你得装 npm、搞 node_modules 版本冲突。

第三,Charm 全家桶。 如果你已经在用 Gum(交互脚本)、Huh(表单)、Lip Gloss(终端样式),Crush 不是孤立的工具——它是 Charm 生态的一个节点。用 gum 写启动脚本、用 huh 做配置向导、用 lipgloss 调终端主题——这些事 Claude Code 做不到。

但话说回来——如果你需要一个已经验证过的、每天出活的编程助手,Claude Code 更稳。Crush 还在早期。我现在的策略是:新项目用 Claude Code 搭骨架,探索性工作用 Crush 同时跑多个模型对比。


本文数据来源于 GitHub 公开仓库(charmbracelet/crush),截至 2026 年 6 月 30 日。