作者发现 Claude Code 的 Prompt Caching 机制使实际费用大幅降低——97% 的 token 消耗是缓存读取,新写入仅 30.2M。
上周,我拉取了 Claude Code 的使用日志,看到了这个数字:
一周内使用了 13.6 亿个 token。
我的第一反应是既惊叹又惊讶。
然后我看了细分数据。
这 13.6 亿中,97.4% 都是 cache_read(缓存读取)。
真正写入缓存的新 token 只有约 3020 万个,Claude 生成的输出 token 约 590 万个。
所以,虽然标题数字是 13.6 亿,但真正的新缓存写入或生成输出只有约 3600 万。
原始总量约为这个数字的 38 倍。
Anthropic 的 API 有一个叫 Prompt Caching(提示词缓存)的功能,而 Claude Code 对它利用得很充分。
在一次编码会话中,Claude 会反复引用同一大段上下文:
CLAUDE.md 项目指令这些内容不会在每次请求时都当作新输入来处理,可复用的部分会被缓存起来。后续请求可以直接从缓存中读取——这就是显示为 cache_read 的内容。
成本差异不可忽视:缓存读取的定价大约是常规输入 token 的十分之一。
对于像 Claude Code 这样反复操作大量共享上下文的 Agent 来说,缓存机制至关重要。
还有一个数字引起了我的注意。
同一周内:13,972 次模型调用。
大约每天 2000 次。
需要明确的是,这并不意味着我每天输入了 2000 个提示词。
Claude Code 以 Agent 的方式运行。一个任务可能涉及反复循环:
所以我的一次请求,背后可能产生多次模型调用。
因此,13,972 次调用并不能说明我敲了多少字,更多反映的是我使用 Claude Code 的方式——不是作为聊天界面,而是作为一个持续运行的开发 Agent。
用 13.627 亿除以 13,972,得到每次调用约 97,500 个 token。
这个数字听起来很惊人。
但同样,关键在于构成。
97.4% 都是 cache_read。
Claude 并不是每次调用都收到 97,500 个全新 token。它是在反复操作一个庞大的现有上下文,其中大部分可以从缓存中复用。
这样理解的话,这个数字就容易接受多了。
还有一个比率我觉得很有意思。
输入侧 token 总计(input + cache_create + cache_read):约 13.56 亿。
输出只有 590 万。
比率大约是 230:1。
Claude 每写一个 token,约读取 230 个 token。
这和 Claude Code 在实践中的体验是吻合的。
它可以读取大量代码库、对话历史、工具输出、项目指令和测试结果——然后只通过改三行代码或决定下一步运行什么命令来回应。
它更像是阅读大量材料后才做出相对较小改动的工程师,而不是大量输出文字的写作者。
单看输出,无法体现这个决策背后投入了多少上下文。
从成本效率的角度看,是的。
如果 Claude 能复用缓存上下文,而不必反复为相同的 token 支付全额输入成本,工作负载就会大幅降价。
97% 的 cache_read 比率意味着 Claude Code 从已处理的上下文中获得了大量复用。
如果看到相反的情况——几乎没有 cache_read,却有大量常规输入或反复创建缓存——我会开始检查:
但有一个重要区分:
缓存效率 ≠ 推理质量
廉价地重读大量上下文,并不意味着 Claude 完美地基于这些上下文进行推理。
超长会话仍然会产生漂移:遗忘的约束、不一致的命名,或与早期确立内容相矛盾的决定。
我在长时间使用 Claude Code 后就见过这种情况。
所以实际上有两个独立的问题:
从日志来看,第一个问题的答案:极其高效。
第二个问题则更复杂。
我用的是 Claude 的 Max 套餐,所以这些 token 数量不能直接换算成按量付费的 API 账单。
不过这个细分数据仍然能说明工作负载的行为。
总量并不能告诉你工作负载有多昂贵或计算上有多"新"。
10 亿个常规输入 token 和 10 亿个缓存读取 token,从定价角度看是完全不同的工作负载。
对于 API 用户来说,这种区分更加重要,因为常规输入、缓存写入、缓存读取和输出的定价各不相同。
只看总量会产生严重误导。
cache_read: 13.3B (97.4%)
新缓存写入 + 输出: 约 36M
每次平均 token 数: 约 97,500
输入输出比: 约 230:1
起初,13.6 亿 token 听起来不可思议。
然后我意识到几乎都是 Claude 在数千个 Agent 步骤中反复复用同一个大上下文。
所以真正让我惊讶的数字不是 token 总数。
一周 13,972 次调用。
这个数字我还在回味。