OpenCode 终端账单:把按量调用拆成一张可核对的小票
01 / 先约定:这张小票是算例,不是实测报价
在终端里让 OpenCode 修一个错误,最终花费不能只看最后生成了多少行代码。要核对账单,就得把输入、输出、缓存读取和缓存写入分别列出来,再乘以对应单价。本文不声称完成过某次真实测试,也不把演算价格冒充 CheapRelay 的在售报价。
为了让计算可以复核,下面统一假设使用人民币结算,每百万 Token 的费率分别为:普通输入 2 元、输出 8 元、缓存读取 0.20 元、缓存写入 2.50 元。这四个数字仅用于演算,不对应任何具体模型。实际使用时,请把它们替换成所选模型的当前价格,并确认币种、计费分类和缓存规则。
02 / 把终端前端与付费后端分开配置
OpenCode 官方文档支持自定义 OpenAI 兼容提供商,也允许设置 baseURL。接入时,认证凭据、自定义提供商标识和模型配置需要对应起来;只填密钥,并不等于完成了提供商配置。模型可以通过 /models 选择。([docs.opencode.ai](https://docs.opencode.ai/docs/providers/?utm_source=openai))
CheapRelay 提供按量付费的 API 中转,一个密钥可以访问多个模型系列,没有月费或订阅费,并按实际 Token 计费,包括缓存读取和写入。对这个场景,可以使用其 /v1 兼容入口;不要把面向另一种原生协议的 /v1beta 入口直接混用。
配置字段要对照已安装版本的文档。官方不同版本的示例存在差异,不宜把旧版的 provider、npm、options 与新版的 providers、package、settings 拼成一份配置。先确认版本,再填写入口、密钥与准确的模型标识。([docs.opencode.ai](https://docs.opencode.ai/docs/providers/?utm_source=openai))
03 / 一次修复任务的小票:合计 0.56 元
现在假设一次任务的全部请求累计产生以下用量。这不是一次请求的上下文长度,也不是对修复难度的预测。为避免重复收费,本算例把普通输入、缓存读取和缓存写入定义为互不重叠的三个桶;实际账单应遵循服务端的字段定义。
- ■ 普通输入:120,000 Token ÷ 1,000,000 × 2 元=0.24 元。
- ■ 输出:20,000 Token ÷ 1,000,000 × 8 元=0.16 元。
- ■ 缓存读取:300,000 Token ÷ 1,000,000 × 0.20 元=0.06 元。
- ■ 缓存写入:40,000 Token ÷ 1,000,000 × 2.50 元=0.10 元。
- ■ 总计:0.24+0.16+0.06+0.10=0.56 元。
这张小票共有 480,000 Token,但不能用一个笼统的“Token 单价”直接相乘。普通输入占总费用约 42.9%,输出占 28.6%,两项缓存费用合计占 28.6%;百分比经过四舍五入。这里真正值得追问的是每一项从何而来,而不是单纯追求总 Token 数更小。
04 / 返工一次,为什么预算从 0.56 元变成 0.68 元
继续使用同一组假设费率。如果追加一轮修改产生 20,000 个普通输入 Token、5,000 个输出 Token,以及 200,000 个缓存读取 Token,且没有新增缓存写入,那么追加费用就是 0.04+0.04+0.04=0.12 元。整项任务随之变成 0.68 元。
这个算例不证明缓存一定命中,也不证明返工只需一轮。它只是说明:第一次结果的费用不是任务最终成本。核对时,应把后续修改和重试中实际产生的计费记录一起纳入,而不是只抄第一条成功请求。
还可以做一个条件明确的缓存比较:假如小票中的 300,000 个缓存读取 Token 改按普通输入费率结算,该项会从 0.06 元变成 0.60 元,相差 0.54 元。但这不是承诺的节省额,更不能忽略已经单列的缓存写入费用。
05 / 10 元预算对应多少项任务
若每项任务都严格重复第一张小票,20 项就是 11.20 元;按每项 0.68 元计算,则是 13.60 元。对 10 元预算而言,前一种情况最多容纳 17 项,花费 9.52 元;后一种最多容纳 14 项,同样花费 9.52 元。这只是预算换算,不是实际工作量保证。
我会给每项任务保留一份简短记录:使用的模型标识、计价单位、四类 Token 数、重试次数,以及后端最终扣费。不要仅凭终端中的估算金额认定已经对账成功;先确认两边采用的是同一组费率,再解释差额。
控制预算时,先限定修改范围、验收条件和允许继续尝试的轮数。达到预算就暂停检查,而不是把“按量付费”理解成“可以无限试错”。这些是工作方式上的约束,不依赖虚构的速度排名或折扣。
06 / 先用一个小任务建立自己的真实小票
如果这种逐项核账的方式适合你,可以注册 CheapRelay,用一个范围明确的小任务验证接入与扣费。先记录实际用量,再用当前费率重算一次;只有两边对得上,才把任务量扩大。按量后端的价值不是保证每次都便宜,而是让每一笔调用都能解释清楚。
Sign up Try the prices yourself, sign-up credit included.
More reading
| Date | Aisle | Written in | Title |
|---|---|---|---|
| 2026-10-25 | Coding agents, cheaply | ZH | 给 Codex 会话打一张小票:把单次预算算到美分 用两张明确标注假设的小票,拆解 Codex 的输入、缓存与输出成本,再用任务边界、日志截断和交接摘要控制开销。 |
| 2026-10-25 | Coding agents, cheaply | ZH | Claude Code 省 Token 收据:四个斜杠命令怎么省钱 用一张假设账单拆解 /context、/clear、/compact 与 /usage,算清输入、输出和缓存费用,避免把上下文缩短误当成账单同比下降。 |
| 2026-10-25 | Coding agents, cheaply | ZH | 把代码审查写成小票:20 个变更的 AI 预算怎么算 用一组明确标注的假设单价,拆解20次代码审查的输入、输出、缓存与复查费用,建立可核对的按量预算。 |
| 2026-10-25 | Coding agents, cheaply | ZH | Cursor 接入自定义端点:逐步配置,再算清每笔费用 从密钥、Base URL 到模型选择,逐步配置 Cursor 的 OpenAI 兼容端点;用明确标注的假设费率,拆解输入、输出和缓存账单。 |
| 2026-10-25 | Coding agents, cheaply | ZH | 编码智能体陷入循环:用一张收据提前发现令牌失控 用一张明确标注假设价格的令牌收据,拆解编码智能体反复重试的成本,并设置重复检测、累计预算与停机条件。 |
| 2026-10-25 | Coding agents, cheaply | ZH | Claude Code 少读文件的省钱小票:一项任务如何从0.924元算到0.356元 用一张明确标注假设的小票,拆开输入、缓存写入、缓存读取和输出费用,再通过限定目录、搜索符号与分段读取,让 Claude Code 少读无关文件。 |