工具与集成指南
将 Crush 连接到 CheapTokens:crushrc provider、model、key
用两条 crushrc 命令将 CheapTokens 添加到 Crush:一个 completions provider 和一个带真实限制的模型;密钥来自环境变量。

要将 Crush 连接到 CheapTokens,请在你的 crushrc 中放入两条命令:provider add,带上基础 URL https:/ 和 -;以及 model add,带上完整的模型 id。然后打开 Crush,按 Ctrl+l,选择模型并给它一个任务。密钥保存在环境变量中,而不是文件中。
如果你参考的是旧版指南,它很可能修改的是 crush.json。Crush 仍会读取该文件,但其 README 称其已弃用:当前配置是 crushrc,并且从 v0.99.0(2026 年 10 月 29 日)起,provider --type 描述的是 API 格式,而不是厂商。来源为 Crush README 和发布说明,核查于 2026 年 11 月 10 日;该日期的最新稳定版为 v0.100.0。
安装 Crush#
选择你已有的任意包管理器即可。Crush 是单个二进制文件,所以走哪条路都一样。
安装 Crush
Homebrew
brew install charmbracelet/tap/crushnpm
npm install -g @charmland/crushwinget
winget install charmbracelet.crushGo
go install github.com/charmbracelet/crush@latestREADME 还列出了 apt 和 yum 仓库、Scoop、Nix、Arch 和 FreeBSD。运行一次 crush 确认它能启动,然后退出。
将 CheapTokens 写入 crushrc#
README 将 crushrc 描述为“只是带有一些 Crush 专用内建命令的 Bash”。这就是全部诀窍:你写 shell,而 provider add 和 model add 是 Crush 能理解的命令。Crush 按以下顺序查找该文件:./.crushrc、./crushrc,然后是 ~/。
所以由你决定它放在哪里。项目本地的 .crushrc 只对一个仓库生效;~/.config/crush/ 中的那个则对所有地方生效。第一次尝试时,全局的那个更容易。
首先把密钥放入你的 shell。在 CheapTokens 仪表盘中创建它并导出(下面的值是占位符):
export CHEAPTOKENS_API_KEY="your-key-here"然后打开 ~/ 并写入:
provider add cheaptokens --type completions \
--base-url "https://api.cheaptokens.dev/v1" \
--api-key "$CHEAPTOKENS_API_KEY"
model add cheaptokens/deepseek-ai/DeepSeek-V4-Flash-0731 \
--name "DeepSeek-V4-Flash" \
--context-window 380000 \
--default-max-tokens 32768有几个细节值得再看一眼:
-是 Crush 对非 OpenAI 自身的 OpenAI 兼容 provider 的称呼。- type completions responses用于 OpenAI 代理,messages用于 Anthropic 兼容的 provider。旧的openai-compat仍然可用,并会被迁移。- 基础 URL 以
/v1结尾。这是 CheapTokens 用于 OpenAI 风格 Chat Completions 的地址;完整端点列表见 CheapTokens 文档。 $CHEAPTOKENS_由 shell 展开,因此文件中不含密钥,项目中的API_ KEY .crushrc可以安全地提交到 git。- 模型 id 是完整的那个,
deepseek-。像ai/ DeepSeek- V4- Flash- 0731 deepseek-这样的短 id 会被 API 拒绝。provider 名称后面还有第二个斜杠,因为 id 本身包含一个斜杠。v4- flash -是 DeepSeek-V4-Flash 取整后的 380K,- context- window 380000 -是它的每次回答上限。这些是模型在 CheapTokens 中的真实限制:380K 上下文,每次回答最多 32,768 个 token。请把它们写入- default- max- tokens 32768 model add,而不是保留 README 中的示例值(64000 和 5000)。

README 只展示了带简单 id(deepseek/)的 model add。你的 id 多了一个斜杠,所以下一步中的模型选择器才是真正的检验:如果模型出现在 cheaptokens 下,说明该行被按预期读取了。
想在同一余额下使用另一个模型?再添加一行 model add,带上它自己的 id 和限制。GLM-5.3-Flash 是 zai-(390K 上下文,每次回答最多 8,192 个 token),MiniMax-M2.7 是 MiniMaxAI/(180K 上下文,每次回答最多 8,192 个 token)。请让 - 等于或低于你所添加模型的回答上限。
打开 Crush 并运行第一个任务#
在项目文件夹中启动 crush。按 Ctrl+l 打开模型选择器,从 cheaptokens 组中选择 DeepSeek-V4-Flash。README 没有描述用于默认模型的 crushrc 命令,所以选择器就是办法。

现在给它一个小的、可检查的任务,比如:Read this repo and tell me which file starts the app, in two lines. 一个能说出真实文件名的回答意味着整条链路都正常:密钥、基础 URL、模型 id。
自己试试试一试:你按 Ctrl+l,但模型不在列表中。你首先检查什么?显示答案
文件位置和变量。Crush 按优先级查找配置:./.crushrc、./crushrc、~/。检查项目中没有其他内容不同的 .crushrc 或 crushrc,并确认 provider 是添加在你编辑的那个文件中。而且 echo $CHEAPTOKENS_ 必须在你启动 crush 的同一个 shell 中打印出密钥。
权限提示是有意存在的。crushrc 中的 permissions allow <tools> 让指定工具无需询问即可运行;--yolo 会跳过所有提示,README 本身也说使用它要非常小心。
一次编码会话的成本#
终端中的智能体步骤是输入密集型的:Crush 每次都会发送历史记录、文件内容和工具输出,并收到一个适度的回答。假设平均每步发送 30,000 个 token,接收 2,000 个。在 DeepSeek-V4-Flash 上,该步骤花费 $0.00065,而且价格在任何时段都相同,没有高峰时段。把输入和输出加在一起计算,这比 OpenRouter 的参考价格更便宜。
换成你自己的数字:40 个这样的步骤组成的一次会话,只需拖动一个滑块。
成本计算器
Crush 中编码智能体的一天
每次请求的输入 token 数: 30,000 · 每次请求的输出 token 数: 2,000 · 每日请求数: 40
| 模型 | 每天 | 每月 |
|---|---|---|
| GLM-5.3-Flash$0.02$0.04 | $0.0272 | $0.816 |
| DeepSeek-V4-Flash$0.015$0.10 | $0.026 | $0.78 |
| MiniMax-M2.7$0.05$0.15 | $0.072 | $2.16 |
每步的输入会随着会话进行而增长,所以对于长会话,要对照 380K 窗口来检查,而不是看平均值。每个模型当前的每 token 价格在定价页面上。
如果它不工作#
Crush 会在你的项目中写入日志 .。在猜测之前先读它:
crush logs --tail 500
crush logs --follow
crush --debug你也可以把 option debug true 放入 crushrc 以保持调试输出开启。然后将你看到的内容与 API 返回的 HTTP 状态码进行匹配:
- 401:密钥已发送但未被识别:拼写错误或密钥已被替换。重新创建或复制它。
- 402:余额或密钥限额已用完。完全不带密钥的请求看起来也一样,所以在你启动
crush的 shell 中运行echo $CHEAPTOKENS_。如果密钥存在,就充值余额。API_ KEY - 429:短时间内请求过多。等待
Retry-After的值后重试。 - 400 或“model not found”:查看模型 id。它必须是文档中的完整 id,带有厂商前缀。
如果你是从 crush.json 迁移过来的,请注意 ~/ 是 Crush 的状态,不是配置;不要手动编辑它。
要在其他工具中进行相同设置,请参阅将 Aider 连接到 CheapTokens 和将 Kilo Code 连接到 CheapTokens。廉价 DeepSeek 的模型页面列出了此处所用模型的限制。



