@nateherk: https://x.com/nateherk/status/2057450555212013627

X AI KOLs Timeline 工具

摘要

一份实用指南,解释Claude Code中的提示缓存工作原理,如何将Token成本降低90%,以及常见的破坏缓存的习惯,帮助开发者延长会话时长并降低成本。

https://t.co/tbQe5AAnAw
查看原文
查看缓存全文

缓存时间: 2026/05/21 21:40

Anthropic 工程师实际上如何节省令牌

本周我节省了 3 亿个令牌

一天 9100 万,一周 3 亿多。

我没有更改任何设置。这是提示缓存在后台默默工作。

但当我真正理解什么是缓存以及如何避免破坏它之后,我的会话在相同使用量下持续的时间更长。以下是在 Claude Code 中使用提示缓存的 80/20 法则,不需要深入 API 细节。

TL;DR

→ 缓存的令牌成本是普通输入的 10%。9100 万缓存按 900 万计费。

→ Claude Code 订阅 TTL 是 1 小时。API 默认是 5 分钟。子代理始终是 5 分钟。

→ 缓存存在于三层:系统、项目、对话。

→ 在会话中切换模型会破坏缓存。包括使用 “opus plan” 模式。

缓存的实际成本

每个缓存的令牌成本是普通输入令牌的 10%。

所以当我的仪表盘显示某天缓存了 9100 万,我的计费就像我只处理了 900 万。这就是长时间 Claude Code 会话感觉“免费”的原因,相比没有缓存时的成本。

仪表盘中有两个数字值得了解:

Cache create。将内容写入缓存的一次性成本。下一次对话就能回本。

Cache read。Claude 从缓存中重用的令牌(你的 CLAUDE.md、工具定义、先前的消息)。比新鲜输入便宜 10 倍。

如果你的缓存读取数字很高,你就赢了。如果很低,你就在为同一个上下文反复付费。

来自 Anthropic 的 Thariq 让我印象深刻的一句话:

“我们实际上会对提示缓存命中率进行警报,如果太低就会宣布 SEV。”

他还有一篇很棒的 X 文章:https://x.com/trq212/status/2024574133011673516?s=20

当命中率高时,会带来四件事:Claude Code 感觉更快,他们的服务成本降低,你的订阅限制感觉更宽松,长时间的编码会话仍然实用。当命中率低时,所有人都输了。

所以激励是一致的。他们希望你的命中率高,你也希望它高。唯一阻挠的是一些小的习惯,它们悄悄地重置了一切。

每轮缓存如何增长

缓存依赖于前缀匹配。不用深入细节,这基本上意味着只要在缓存点之前的内容完全相同,Claude 就可以重用缓存令牌。

一个崭新的会话实际上是这样进行的:

来自于 Claude Code 文档

1️⃣ 第一轮。还没有缓存。系统提示、你的项目上下文(CLAUDE.md、记忆、规则)以及你的第一条消息都被新鲜处理并写入缓存。

2️⃣ 第二轮。所有的第一轮现在都已缓存。Claude 只需要处理你的回复和下一条消息。便宜的轮次。

3️⃣ 第三轮。同样的情况。旧轮次保持缓存。只有新的交互是新鲜的。

缓存按三层组织:

来自 Thariq 的 X 文章

系统层。基本指令、工具定义(读取、写入、bash、grep、glob)、输出风格。全局缓存。

项目层。CLAUDE.md、记忆、项目规则。按项目缓存。

对话。回复和消息。每轮增长。

如果系统层或项目层中的任何内容在会话中发生变化,则所有内容都必须从头重新缓存。这是昂贵的操作。想象一下你在第 16 条消息时修改了系统提示或等待了一个小时。从第 1 条消息开始的每一个令牌都必须重新处理。

1 小时与 5 分钟的困惑

这是大多数人容易被绊倒的地方。

Claude Code 订阅:默认 1 小时 TTL。

Claude API:默认 5 分钟。你可以增加到 1 小时以获得更多成本节省。

任何计划下的子代理:5 分钟。始终如此。

Claude.ai 网页聊天:没有官方文档。可能和订阅设置相同,但我没有确认。

几个月前,当大家都在抱怨 Claude 订阅被吞噬时,人们以为 Anthropic 悄悄把 TTL 降到了 5 分钟而没有告知。结果发现他们没有。仍然是 1 小时。但是文档分散在 Claude Code 和 API 页面中,这两者有非常大的不同,这也是许多困惑的来源。

5 分钟的数字在你运行繁重的子代理工作流或直接使用 API 时才会相关。对于 95% 的 Claude Code 用户来说,只需关注 1 小时窗口。

覆盖 95% 用户的三个习惯

以下是在日常中真正有用的内容。

1️⃣ 不要暂停太久。

如果你闲置超过 1 小时,所有缓存都会失效。下一条消息会从头重建缓存。将任务移交给一个新的会话比恢复一个过时的会话更便宜。

2️⃣ 切换任务时重新开始。

/compact 或 /clear 无论如何都会破坏缓存,所以利用那一刻真正重置。

我构建了一个会话交接技能作为 /compact 的替代。它会总结我们构建的内容、未决的决策、重要的文件以及准确从哪里继续。然后我使用 /clear,粘贴总结,并像什么都没发生一样继续。

compact 命令可能也需要很长时间运行。而交接技能通常在一分钟内完成。

3️⃣ 在 Claude 聊天中使用 Projects 存放大型文档。

claude.ai 上的缓存没有详细记录,但 Projects 明显优于普通线程。如果你打算粘贴大型文档,把它们放到 Project 中,而不是直接放到对话里。

哪些操作会悄悄破坏缓存

有几件事会在没有警告的情况下重置一切。

切换模型。由于前缀匹配,每个模型都有自己的缓存。下一个请求读取整个历史记录,没有任何缓存命中。

“Opusplan”模式。这是在计划模式中使用 Opus,执行模式中使用 Sonnet 的设置。我之前在令牌优化视频中推荐过它,原因很充分。但重要的是要理解每次计划切换都是一次模型切换,意味着每次都会重置缓存。长远来看它仍然有助于你的会话限制。只是要了解底层发生了什么。

在会话中间编辑 CLAUDE.md 没关系。 编辑直到下一次重启才会生效,所以当前的缓存保持安全。

我的免费令牌仪表盘

我使用的截图来自一个令牌仪表盘。

https://github.com/nateherkai/token-dashboard

这是一个简单的 GitHub 仓库。你把链接给 Claude Code,告诉它在 localhost 上设置,它就会拉取你所有的过去会话。不是一个空白的画板。你可以从第一天开始每天看到输入、输出、缓存创建和缓存读取的数字。

一个注意事项:仪表盘跟踪的是本地设备上的令牌。如果你从台式机切换到笔记本,数字会不匹配。每台机器都有自己的数据。

总结

提示缓存是那种你可以深入钻研的东西。Thariq 的文章比我这里说得更深,如果你想要完整的画面,值得一读。

但你不需要完整的画面才能受益。你需要的只是 80/20:缓存的令牌便宜 10 倍,Claude Code 上的 TTL 是 1 小时,模型切换会破坏缓存,任务之间的干净交接胜过让会话腐烂。

相似文章