Sonnet 5.5 缓存读取按 $0.10 计:/cost 和预算数字变了
如果你最近用 Sonnet 5.5 跑长会话,升级到 CLI 2.1.296 之后可能会发现:/cost 里的数字比以前「便宜」了一截。不是你的用法变了,而是 Claude Code 本地的计价口径变了。
2.1.296 更新了 /cost、状态行、--max-budget-usd 以及 SDK 的费用数字:Sonnet 5.5 的缓存读取(cache reads)按每百万 token $0.10 计,此前按 $0.20。
这次改的是什么
Claude Code 里看到的费用,大多是客户端根据 token 用量和单价在本地算出来的估算值。这次调整的是其中 Sonnet 5.5 缓存读取这一项的单价,涉及四处:
| 位置 | 用途 |
|---|---|
/cost | 查看当前会话累计花费 |
| 状态行 | 如果你在自定义状态栏里显示费用 |
--max-budget-usd | 无人值守 / 脚本运行时的花费上限 |
| SDK 费用字段 | 用 Agent SDK 自己记账、做报表时读到的数字 |
输入、输出 token 的单价没有变化(Sonnet 5.5 仍是每百万 token 输入 $2、输出 $10),变的只是缓存读取这一项。
需要说明的是:最终扣费以 Anthropic 账单 / 控制台为准。这次更新的意义是让 Claude Code 显示和记账的数字与 Sonnet 5.5 的缓存读取价格对齐,避免本地估算偏高。
为什么对长会话影响明显
Claude Code 的每一轮请求,都会把系统提示、工具定义、CLAUDE.md 和之前的对话再发一遍。好在这部分大多能命中 prompt cache,按缓存读取计价,远比普通输入便宜。
这也意味着:会话越长、轮次越多,缓存读取在总 token 里的占比越高。一个跑了几个小时的重构会话,缓存读取动辄几千万 token,是最大头。
粗算一下:某个会话累计缓存读取 5000 万 token——
- 旧口径:50 × $0.20 = $10
- 新口径:50 × $0.10 = $5
输入、输出部分不变,但总数会明显下降。短会话、缓存命中少的场景,变化就不大。
对 --max-budget-usd 的影响
--max-budget-usd 是按本地估算的花费来判断是否叠到上限的。缓存读取单价减半后,同样的预算能跑更多轮,原本会提前停下的长任务,现在可能能跑完。
反过来,如果你把这个上限当成严格的成本闸门,可以考虑:
- 维持原来的数值,接受能多跑一些;
- 或按自己的实际历史账单重新校准一个数。
用 SDK 做费用报表的团队,升级前后的数字口径不同,做环比时记得标注版本分界。
和 Haiku 5.5 定价是两回事
前几天的 Haiku 5.5 成为默认 Haiku 模型 讲的是一个新模型上线及其定价;本文讲的是已有的 Sonnet 5.5 在 Claude Code 里缓存读取的计价口径调整。两者都是 5.5 代,但:
- Haiku 5.5:换了默认模型,输入 / 输出单价整体更低,适合轻量任务;
- Sonnet 5.5:模型没换,只是缓存读取按 $0.10 计,长会话显示的花费更低。
想了解 Sonnet 5.5 本身的能力和定位,可以看 Sonnet 5.5 介绍。
小结
- 2.1.296 起,
/cost、状态行、--max-budget-usd和 SDK 把 Sonnet 5.5 缓存读取按 $0.10/百万 token 计(原 $0.20)。 - 输入、输出单价不变;长会话、缓存命中多的场景,显示花费下降最明显。
- 依赖预算上限或 SDK 报表的,升级后留意口径变化。
升级后用 claude --version 确认 ≥ 2.1.296,再跑一次 /cost 看看新数字。