跳转到主要内容

Claude Code 缓存未命中 token 成本:一次对话为什么突然变贵

A
10 分钟阅读Claude Code

Claude Code 缓存未命中不是一个单独收费项。先看路线归属、cache creation、cache read、最近的失效动作和对应账单面,再决定是否改流程或报 bug。

Claude Code 缓存未命中 token 成本:一次对话为什么突然变贵

Claude Code 里看到缓存未命中或一次 turn 的 token 成本突然升高,通常不是多出来一个“未命中手续费”。更准确的理解是:本来应该走便宜缓存读取的可复用前缀没有被读到,系统重新处理输入、写入缓存,或者只命中了其中一部分,输出 token 仍然照常计入。

截至 2026 年 5 月 24 日,Anthropic 的公开价格把这个差异讲得很清楚:5 分钟缓存写入按基础输入价格的 1.25 倍计,缓存读取按 0.1 倍计。同样一段前缀从“写入”变成“读取”,比值就是 1.25 / 0.1 = 12.5。这个数字是写入和读取之间的倍率差,不是 Claude Code 官方定义的 cache miss 附加费。

真正要先确认的是路线。这个数字来自订阅登录的使用量、API key 账单、Agent SDK 估算、Bedrock、Vertex、Foundry,还是某个 gateway?路线不清时,不要先改 /compact,也不要直接说是缓存 bug。先拿到 cache_creation_input_tokenscache_read_input_tokens、模型、MCP 变化、版本、时间戳和对应账单面。

快速判断:先证明路线,再修缓存

问题短答案要收集的证据
缓存未命中是不是单独收费?不是。它表示便宜读取没有发生,前缀被重新处理或重新写入。同一路线里的 cache creation 与 cache read 字段。
为什么有人说贵 12.5 倍?5 分钟 cache write 是 1.25x,cache read 是 0.1x,同样 token 量相除是 12.5。当前 Anthropic 价格页和本次使用记录。
第一项检查是什么?路线归属。订阅、API key、SDK、云厂商、gateway 不能混看。/status/cost、Console、Usage and Cost API、云厂商账单。
什么时候更可疑?相似 turn 连续出现高 cache creation、低 cache read,且模型、MCP、路线、时间间隔都稳定。相邻 turn 的字段差异、版本、MCP 列表、模型、路径或工作树变化。
不该先做什么?不要盲目 compact、换模型、换 provider 或把社区截图当账单证据。先定位失效动作,再决定最小修复。

如果你的问题其实是订阅和 API key 到底谁在计费,先看 Claude Code API key 与订阅计费。如果是上下文太大、MCP 工具太多导致每次请求都很重,应该切到 Claude Code MCP 上下文过载。缓存未命中只解释“为什么这次没吃到读取折扣”,不自动解释所有限额和账单问题。

12.5x 只是写入/读取的数学

Anthropic 的 Claude API pricing 将普通输入、缓存写入、缓存读取和输出分开计价。按当前公开口径,5 分钟 cache write 是基础输入价格的 1.25 倍,1 小时 cache write 是 2 倍,cache read 是 0.1 倍。

text
5-minute cache write / cache read = 1.25 / 0.1 = 12.5 1-hour cache write / cache read = 2.0 / 0.1 = 20

所以,12.5x 可以用来解释“同样一段前缀,如果这次是写入而不是读取,为什么成本看起来高很多”。它不能单独证明 Claude Code 多收了一个未命中费用,也不能单独证明产品有 bug。一个新会话、模型切换、MCP 变化、长时间空闲、升级版本或压缩上下文之后出现一次 cache creation,可能只是预期行为。

这个差异在大前缀里最明显:长对话历史、项目文件上下文、工具返回、MCP server 定义、子代理上下文、大 system prompt 或一次性贴入的资料包。小前缀 miss 可能只是噪音;大前缀连续 miss,才值得进入证据级排查。

token 分类账:别只看总量

Claude Code 缓存写入和读取 token 分类账

排查时把一次 turn 拆成 token 类别,比看一个总 token 数可靠。总数只能说明“这次很大”,不能说明“为什么贵”。

计量项含义排查用途
普通输入 token没有从缓存读取、直接被模型处理的输入。判断没有缓存或只部分命中的基础成本。
cache_creation_input_tokens被写入缓存或为缓存创建处理的 token。一次预期写入正常;连续高写入才是警报。
cache_read_input_tokens从已有缓存中读取的 token。读取高、写入低通常说明缓存复用有效。
输出 token模型生成的回答。缓存只能降低输入侧成本,不能让输出免费。
订阅使用量plan 或 seat 的窗口、限制、重置提示。不能直接拿来和 API 发票比较。
/cost 与 SDK cost 字段本地或客户端估算。适合监控趋势,但弱于正式账单。
Console、Usage and Cost API、云厂商账单对各自路线有权威性的账单面。作为最终金额、报销或支持工单证据。

Anthropic 的 Agent SDK cost tracking 明确把 total_cost_usdcostUSD 这类字段定位为估算。估算很有用,能发现 runaway session,也能帮助你比较几次相似 turn,但它不是银行账单,也不是云厂商 invoice。

路线不清时,先在 Claude Code 里做最小确认:

bash
claude /status /cost

/status 用来确认当前账号或路线,/cost 可作为 API 风格花费监控。最终要对账时,仍然回到产生这次运行的那条路线:Claude Console、Usage and Cost API、Bedrock/Vertex/Foundry 发票、gateway 日志,或订阅使用量页面。

哪些动作会让缓存失效

Claude Code 模型 MCP compact 和路线变化的缓存失效矩阵

Claude Code 的 prompt caching 文档 讲的是前缀匹配。前面发生变化,后面即使内容看起来一样,也可能无法复用旧缓存。排查时不要只问“我是不是用了很多 token”,更要问“在这次昂贵 turn 之前,前缀形状有没有改变”。

最近动作风险下一步检查
切换模型对比 spike 前后的 model 字段和时间戳。
连接或断开 MCP serverMCP 工具定义可能改变早期前缀。
拒绝整个工具whole-tool denial 会改变可用工具上下文。
执行 /compactcompact 会重写对话上下文,可能打断复用。
升级 Claude Code版本变化可能改变 prompt 形状或缓存作用域。
更换 provider、API route 或 gateway缓存作用域和账单归属都可能变。
长时间空闲TTL 可能已过期,下一次自然要写入。
子代理、fork、worktree、目录变化上下文可能按路径、进程、agent 或 route 分裂。
编辑文件较低文件变动会增加上下文,但不必然改写早期前缀。
改 output style 或 permission mode较低如果 timing 正好吻合,仍要记录。
/recap 或 rewind较低有助于导航,但仍要看字段变化。

稳妥结论要保守:一次 cache write 可能只是新前缀第一次写入;多次相似 turn 连续写入才异常。所谓“相似”至少要同模型、同路线、同 MCP 设置、短时间间隔、没有 compact 或升级,并且输入结构接近。

路线证据:不要把五种数字混成一个账单

同一个人类工作流可以经过不同计量合同。订阅登录、API key、SDK 估算、云厂商和 gateway 都可能在界面上显示“成本”或“使用量”,但它们不是同一种证据。

路线数字可能代表什么更强证据
Claude 订阅登录plan/seat 使用量、窗口限制、重置时间和 included usage 行为。Help Center 用量说明、账号状态、/status、plan 提示。
Claude API key按量 API token 账单。Claude Console、Usage and Cost API、项目计费设置。
Agent SDKSDK 消息里的使用量和成本估算。SDK 字段加 Console 或 Usage and Cost API 对照。
Bedrock、Vertex、Foundry云厂商路线的模型使用、缓存支持和 provider 账单。云厂商 invoice、请求日志和 provider 路线文档。
gatewaygateway 的记录以及上游 pass-through 行为。gateway 日志加可取得的上游账单。

Anthropic 的 Claude Code costsHelp Center usage and limits 重点是把订阅使用量和 API 账单分开。订阅限额提示不能证明 API spend;API 估算也不能证明订阅 seat 被额外收费。

如果最终问题是 plan 窗口被打断,看 Claude Code rate limitClaude Code rate limit reached。缓存数学能解释为什么某段上下文消耗更快,但不能替代限额恢复流程。

修复顺序:先小改,再验证下一次

Claude Code 缓存未命中修复阶梯和支持证据包

不要把一次高成本 turn 当作重构整个工作流的理由。先用最小动作复现和确认。

  1. 确认路线。 这次数字来自订阅使用量、API key、SDK 估算、云厂商还是 gateway。
  2. 读取缓存字段。 连续几次相似 turn 对比 cache_creation_input_tokenscache_read_input_tokens
  3. 命名失效动作。 检查模型、MCP、whole-tool denial、/compact、升级、provider、TTL、子代理、fork、worktree、目录变化。
  4. 保持可复用前缀稳定。 同一任务里不要频繁切模型、换 MCP 或把无关文件塞进早期上下文。
  5. /clear 切开无关任务。 无关任务混在一起会让前缀又大又乱。
  6. 只在自然边界使用 /compact 对话太大时 compact 有价值,但它不是 cache miss 的第一反应。
  7. 谨慎评估 1 小时 TTL。 1 小时写入倍率更高,只有后续读取能覆盖这次更贵写入时才值得。
  8. 验证下一次相似 turn。 修复有效应表现为重复 creation 下降、read 上升,且路线和模型没有变。

这套顺序的好处是可回滚。先改一个变量,再看字段变化;不要同时换模型、关 MCP、compact、换 gateway,否则即便成本下降,你也不知道真正原因。

可疑 spike 证据包

不要只发一句“Claude Code 缓存 bug 了”。能让同事或支持工程师判断的证据包,至少要能对齐同一路线、同一时间和同一上下文形状。

证据为什么重要
时间戳和时区让使用记录和账单记录可以对齐。
Claude Code 版本升级可能改变 prompt 形状。
模型模型切换是已知高风险失效动作。
活跃路线订阅、API key、SDK、provider、gateway 不能混证据。
MCP server 前后列表connect/disconnect 会改变早期前缀。
工具权限变化whole-tool denial 是高风险动作。
/compact/clear/recap、rewind 历史这些动作会影响对话形状。
cache_creation_input_tokenscache_read_input_tokens写入与读取的核心证据。
相似 hit/miss turn 对照一张孤立截图弱,成对比较强。
账单面Console、Usage and Cost API、provider invoice 或订阅限额提示。

边界很简单:如果刚换模型、刚连 MCP、刚 compact、刚升级或刚跨 provider,一次 cache creation 很可能正常。如果路线、模型、MCP、时间间隔和上下文都稳定,仍反复 creation、几乎没有 read,再进入 bug 或支持工单路径。

常见问题

Claude Code cache miss 是单独费用吗?

不是。更准确的说法是,原本可复用前缀没有通过便宜读取路径复用,而是被重新处理或写入缓存。账单里应看 token 类别和路线,不是找一个叫 cache miss fee 的新项目。

为什么会看到 12.5x?

这个数字来自 Anthropic 当前缓存倍率:5 分钟 cache write 是基础输入的 1.25x,cache read 是 0.1x。相同 token 量下,1.25 除以 0.1 等于 12.5。它是写入和读取的比较,不是官方未命中罚金。

哪些字段最能证明缓存行为?

先看 cache_creation_input_tokenscache_read_input_tokens。高 creation、低 read 表示这段前缀没有被便宜读取。连续几次相似 turn 都这样,比单次 spike 更有诊断意义。

/compact 会降低 token 成本吗?

有时会,但它不是万能修复。/compact 可以在自然边界压缩超大对话,但也会重写上下文,从而打断已有缓存复用。先确认是否真的上下文过大,再使用 compact。

1 小时 TTL 应该打开吗?

只有路线支持、并且你的复用节奏能吃到后续读取时才值得。1 小时写入倍率高于 5 分钟写入,如果后续没有足够读取,它可能只是让第一次写入更贵。

/cost 就是我的 Claude 账单吗?

不是。/cost 和 SDK cost 字段适合监控趋势,尤其在 API 风格路线里很方便。最终账单应回到 Claude Console、Usage and Cost API、云厂商 invoice、gateway 对账记录,或订阅使用量页面。

什么时候可以说是缓存 bug?

当你已经有同一路线证据:时间戳、版本、模型、路线、MCP 设置、工具权限、cache creation/read 字段、相似 hit/miss turn 和对应账单面。没有这些证据之前,普通失效动作或 TTL 过期更常见。

分享文章:

laozhang.ai

一个 API,所有 AI 模型

AI 图片

Gemini 3 Pro Image

$0.05/张
官方2折
AI 视频

Sora 2 · Veo 3.1

$0.15/个
异步API
AI 对话

GPT · Claude · Gemini

200+ 模型
同官方价
已服务 10万+ 开发者
|@laozhang_cn|送$0.1