Crush 接入
把 QCode.cc 配成 Charm Crush 的自定义 provider:crush.json 里 type=anthropic + base_url,终端里用 Claude
Crush 接入¶
Crush 是 Charm 出品的终端 AI 编程 Agent(Go 编写,TUI 优先)。它支持自定义 provider,可以把 QCode.cc 配成上游。
命名提示:Crush 最初叫 "Open Code",后来改名以避免与 OpenCode 混淆。两者是不同的项目。
走哪条腿¶
Crush 的自定义 provider 支持 anthropic 与 openai-compat 两种 type。要用 Claude 就选 anthropic——QCode 的 OpenAI 端点不接受 Claude 模型(见 接入点与 API 格式)。
| 你想用的模型 | type |
base_url |
|---|---|---|
| Claude | anthropic |
https://api.qcode.cc/api |
| GPT 系 / 国产四家族 | openai-compat |
https://api.qcode.cc/openai/v1 |
安装¶
# Homebrew
brew install charmbracelet/tap/crush
# 或从 Releases 下载预编译二进制
# https://github.com/charmbracelet/crush/releases
验证(以实际输出为准,不要对照文档里的版本号):
crush --version
配置¶
在项目根目录建 crush.json(或放到用户级配置目录,路径以官方文档为准):
{
"$schema": "https://charm.land/crush.json",
"providers": {
"qcode": {
"type": "anthropic",
"base_url": "https://api.qcode.cc/api",
"api_key": "$QCODE_KEY",
"extra_headers": { "anthropic-version": "2023-06-01" },
"models": [
{
"id": "claude-sonnet-5",
"name": "QCode Sonnet 5",
"cost_per_1m_in": 2,
"cost_per_1m_out": 10,
"context_window": 1000000,
"default_max_tokens": 8192
},
{
"id": "claude-haiku-4-5",
"name": "QCode Haiku 4.5",
"cost_per_1m_in": 1,
"cost_per_1m_out": 5,
"context_window": 200000,
"default_max_tokens": 4096
}
]
}
}
}
密钥用环境变量注入,不写进配置文件:
export QCODE_KEY="cr_你的QCode密钥"
字段说明:
| 字段 | 说明 |
|---|---|
type |
anthropic = 走 Anthropic 原生 Messages 协议 |
base_url |
填到 /api 为止。Crush 会自己拼 /v1/messages |
api_key |
支持 $变量名 形式的环境变量展开 |
extra_headers |
Anthropic 协议需要 anthropic-version |
models[] |
必须显式列出可用模型;id 要与 qcode.cc/models 上的 id 逐字符一致 |
国内用户把域名换成
https://asia.qcode.cc/api(香港节点),Key 不变。cost_per_1m_*只影响 Crush 自己的用量估算显示,不影响实际计费。
验证¶
crush run "reply with exactly: OK"
返回 OK 即接通。
判断是不是真的走到了 QCode:故意把 base_url 改成一个不存在的路径再跑一次,
应当看到明确的 404 并回显完整 URL,例如:
404 Not Found {"error":"Not Found","message":"Route /api/xxx/v1/messages not found"}
看到这个报错说明 Crush 确实在拼 base_url + /v1/messages,配置生效了。
(这一步是阴性对照:只看到成功不能证明配置生效,可能是走了别的 provider。)
常用用法¶
# 交互模式
crush
# 非交互
crush run "把这个函数改成异步的"
# 管道
cat README.md | crush run "把它写得更清楚" > README.new.md
# 指定工作目录 + 调试日志
crush --debug --cwd /path/to/project
# 自动接受全部权限(谨慎)
crush --yolo
常见问题¶
model_not_available_on_endpoint¶
type 写成了 openai-compat 而模型是 Claude。改成 type: "anthropic",
base_url 填 https://api.qcode.cc/api。
401 Invalid API key¶
环境变量没注入,或密钥带了空格。确认 echo $QCODE_KEY 输出以 cr_ 开头。
模型下拉里看不到¶
Crush 只显示 models[] 里显式列出的模型。加一条记录再重启。
相关文档¶
- 接入点与 API 格式 — 协议 × 模型家族真源表
- OpenCode 集成 — 另一个终端 Agent(与 Crush 是不同项目)
- 国产模型接入 — GLM / Kimi / DeepSeek / Qwen