> 来源 Commit: 515b759
> 项目: easy-learn-ai / 轻松理解 Prompt Cache
> 发布时间: 2026-05-06
# 当 AI 学会「过目不忘」:Prompt Cache 是怎么帮你省钱的
你有没有想过,每次跟 ChatGPT 或者 Claude 聊天,后台到底在发生什么?
不是那种玄学式的「AI 在思考」,而是实打实的工程细节——你发过去的每一个字,服务器都要重新过一遍。系统指令、工具定义、聊天记录、你刚打的这条新消息,全部混在一起,从第一个字开始算到最末尾。这个过程叫 **prefill**,是延迟和账单里最大头的那一部分。
那你跟 AI 聊了 20 轮,第 20 轮的请求里,前 19 轮的内容跟上一次**一模一样**。模型还是得从头算。就像你每次写论文都要重抄一遍目录和前几章,再接新写的那一段。
这听起来很蠢,对吧?确实是。于是有人想了一个办法:**把已经算过的部分存下来**。这就是 Prompt Cache。
---
## 一句话原理
你在请求里标一个断点。后台把从开头到这个断点之间的「编码结果」存下来。下次前缀完全一样,直接复用,跳过重复计算。
这就好比你抄论文抄到第三章,标记一下。下次再写的时候,前面三章直接快进,只写新的内容。
---
## 省多少钱?Anthropic 给了一个实在账
几个关键数字,记一下:
- **命中缓存的部分,价格打一折**(省 90%)
- **首次写入要 1.25 倍**——多花 25%,但后面每次省 90%
- **默认存 5 分钟**,5 分钟内有请求就自动续期,不额外收钱;也可以选 1 小时的付费版本
- **门槛至少 1024 个 token**,新模型可能要 4096,短 prompt 没资格玩缓存
举个实在的例子:**10 万字的长对话**。不开缓存,Claude Sonnet 每轮要花 **0.30 美金**。开了缓存,首次 0.375,之后每轮只要 **0.03**。聊 10 轮,省下大约 **90%** 的输入成本。
而且不光省钱。**延迟也降下来了**——不用重算的部分越多,第一个字出来得越快。这个指标叫 TTFT(Time To First Token),对交互体验影响极大。
---
## Anthropic 把缓存命中率当成「在线率」来监控
这是最让我意外的一点。
在 Anthropic 内部,**缓存命中率是跟服务器在线率同等地位的基础设施级指标**。命中率一掉,触发值班告警,工程师得当线上事故处理——原文用的词是「宣布分级事故」(declare SEVs),意思是走完整的事故响应流程。
为什么看得这么重?因为**没有缓存,就没有 Claude Code**。
Claude Code 这种 AI 编程助手,一个会话几十轮。每一轮都要把上文全带上重新发。每次都从头算,延迟和成本会爆炸。缓存不是锦上添花的优化,是整个系统能跑起来的前提。
更关键的是,命中率高,不光省钱,还直接影响用户体验——它让 Anthropic 能给付费用户更宽松的使用额度。缓存命中率越高,你在同样的价格下,能用得越多。
---
## 核心原理:前缀匹配
缓存的核心逻辑就四个字:**前缀匹配**。下一次请求的前缀跟上次一样,就能复用之前的计算。
这看起来简单,但限制极其严苛——**前缀里任何位置的变化,都会让其后所有内容的缓存失效**。就像多米诺骨牌,前面一块倒了,后面全部重来。
所以接下来所有「最佳实践」,本质上都在做同一件事:**让前缀尽可能多地保持不变**。
---
## 排好队形:越不容易变的东西越往前放
Anthropic 的最佳实践里,提示词的排列顺序有讲究:
1. **最前面**:系统指令 + 工具定义(所有会话共享,固定不动)
2. **第二层**:项目文档(同一个项目内共享,相对稳定)
3. **第三层**:当前会话的上下文(只在这一次对话里有效)
4. **最后**:聊天消息(逐轮增长,每轮只新增最后一条)
一句话——**越不容易变的东西,越往前放**。就像收拾书桌:常年不动的参考书放最底层,这周要看的资料放中间,今天写的草稿放最上面。这样你每天坐下来才不用把整张桌子翻一遍。
---
## 三个特别容易踩的坑
### 坑 ①:在固定指令里嵌当前时间
系统指令里写了「今天是 2026 年 5 月 6 日」。下一秒就变成 5 月 7 日,缓存直接废掉。要把时间塞进**对话消息**里,别去动系统指令。
### 坑 ②:工具定义用无序容器装
HashMap、Set 这些东西每次遍历顺序可能不一样。请求发过去,工具定义的顺序变了,前缀对不上,缓存失效。**必须用有序列表**。
### 坑 ③:工具参数改了哪怕一个字段
加了一个新参数,改了一个类型,删了一个字段——**整条前缀的缓存全失效**。因为工具定义变了,前缀就不再一样了。
---
## 进阶技巧 ①:Plan Mode 的规划模式
Claude Code 有个「规划模式」。进入后模型只思考、只规划,不执行操作。
直觉的做法是:进规划模式就把执行类工具移走,退出来再加回来。但 Anthropic **没这么干**。他们的做法是保留所有工具不动,另外加了两个特殊工具——「进入规划」和「退出规划」。
模型调用「进入规划」就切到思考模式,调用「退出规划」就回来。那「规划模式下不能执行」这个约束怎么传达?**通过在对话中插入一条系统消息**,告诉模型你现在在规划。
注意——是在**对话流里插一条消息**,不是去改**系统指令**。这两个东西要分清:
- **系统指令**:固定的,在缓存前缀里
- **系统消息**:流动的,不影响前缀
这样工具集始终不变,缓存始终有效。而且还带来一个额外好处:模型**可以自己判断**什么时候进规划模式——遇到复杂任务,它自己先想清楚再动手,不用你手动切换。
---
## 进阶技巧 ②:延迟加载(Lazy Loading)
Claude Code 可能要接入几十个外部工具。全部完整定义塞进去?太占空间。按需加减?又破坏缓存。
Anthropic 的折中方案叫**延迟加载**。一开始只放一个轻量的占位符,模型看到的只是工具名字,不含完整的参数定义。等模型真要用某个工具了,再通过「工具搜索」功能去拉取完整定义。
好处是前缀始终只包含那些轻量占位符,不会因为加载了某个工具就变化。缓存稳稳的。
相当于图书馆的书目索引。你先翻目录,找到想看的书再去书架取,不用把所有书都搬到桌上。
---
## 进阶技巧 ③:缓存安全分叉(Cache-Safe Forking)
长对话跑久了,上下文窗口会被填满。这时候要把之前的对话**压缩成摘要**,腾出空间继续聊。
但问题来了。如果你另起一个请求做压缩,用了不同的系统指令,没带工具定义——那从第一个字开始,就跟主对话的缓存对不上。**两条缓存链,互相不复用**。而且你要把整段对话发过去做摘要,这时候你付的是完整的、没有缓存折扣的费用。对话越长越贵。
Anthropic 的解决方案叫「缓存安全分叉」。压缩请求必须用跟主对话**完全一样的系统指令、用户上下文、工具定义**,把主对话的消息作为历史带上。然后在末尾追加一条压缩指令,作为新的用户消息。
从后台视角看,这个请求和上一次几乎一模一样。相同的前缀,相同的工具,相同的历史,所以前缀缓存可以直接复用。新增成本,只有最后那条压缩指令本身。
同时还要**预留一个压缩缓冲区**,给摘要输出留够空间。不能等窗口填满才开始压缩,要提前留余量。
---
## Sub-Agent:别把实习生拉到你工位上
有时候需要用小模型干活——比如 Claude Code 的探索模式,用小模型在独立上下文里执行搜索任务。
正确做法:**子任务有自己独立的上下文和缓存**,不会污染主对话的缓存链。让主模型先写个任务交接说明,把上下文浓缩好。然后传给子任务去执行,做完只把结果传回主对话。
打个比方。你不会为了省事让实习生坐到你工位上用你的电脑。而是给他分配一台独立的机器,把任务说明写清楚发过去,做完把结果发回来。
这里要给搞中转的朋友提个醒——**缓存是按账号隔离的**。有人想用账号池搞中转,账号一混,命中率过低,钱没赚到反而把号搞没了。
---
## 回头看:所有的经验都在说同一件事
7 条经验,总结一下:
1. **前缀匹配决定一切**。前缀里任何位置的变化,都会让其后所有内容的缓存失效。
2. **用消息代替指令修改**。要切换模式、要更新时间,把这些塞进对话消息,别去动系统指令。
3. **不要在对话中途切换工具或模型**。用工具来表达状态转换,用延迟加载代替工具的增删。
4. **像监控在线率一样监控缓存命中率**。Anthropic 对缓存中断发告警,当线上事故处理。
5. **分叉操作必须共享主对话的前缀**。压缩、摘要、子任务,全部用相同的参数。
所有的设计,都要围绕这一个约束来展开。**别改指令,别动工具——一碰,整条缓存链就断**。换模型、切账号、另起炉灶,同一个道理。
---
## 最后
这看着像缓存优化。但讲的也是一种思路——**先认死那条绕不开的限制,再围着它把整个系统搭起来**。
Prompt Cache 的故事,本质上是工程直觉的胜利。当所有人都在讨论模型越大越好、参数越多越好的时候,有人回头看了看账单说:等等,我们是不是在重复做同一件事?
答案是肯定的。而且这个问题,用一个简单的「前缀匹配」就解决了。
#easy-learn-ai #每日更新 #记忆 #小凯
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
领取 2000万 Tokens
通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力