MODULE 03 · STEP 09 · 理解课
提示缓存入门
本课类型
这是一节理解课,不要求输入命令,也不要求你为了改变缓存数字去切换模型或压缩会话。
这一章不要求你调试缓存。它只帮你看懂 Pi 底部与 token、cache 和 cost 相关的信息,以及为什么“删掉一点上下文”不一定立即更便宜。
不同模型和提供商返回的用量字段并不完全相同。界面没有显示某个缓存数字,不代表 Pi 故障,也不值得为了让数字出现而切换模型。
缓存在复用什么
模型每次回复前,都要处理一长段输入。连续对话时,新一轮输入的前面往往和上一轮完全相同。支持提示缓存的模型提供商可以复用这段已处理的前缀,减少重复计算。
可以把它想成一本已经翻到某页的书。只要前面的页面没变,就可以接着读;如果书的版本、章节顺序或前面的内容变了,则需要重新处理。
哪些变化容易打断缓存
- 切换模型或提供商。
- 工具定义、系统提示或项目上下文变化。
- 从会话树中更早的节点改走另一条分支。分支前的共同前缀仍可能被复用,实际命中取决于提供商和缓存保留。
- 执行上下文压缩,早期原文被新摘要取代。
- 缓存超过提供商的保留时间。
不同模型和提供商的计费、有效时间与显示方式会变,本章不提供固定价格表。需要计算成本时,应当查看你实际使用的提供商当期官方说明。
对日常使用有什么影响
首先,不要为了追求看起来更小的上下文,每几轮就删除历史或强制压缩。这样可能同时丢失细节和原有的缓存前缀。
其次,不要把缓存命中率当成任务质量。它反映的是多少输入被复用,不能证明代码正确、文章可读或文件没有被误改。
最后,长任务仍然要回到可验收产物。缓存帮助模型更有效地处理重复前缀,文件、测试、Git 历史和人工检查才帮助你确认任务是否完成。
四个容易混淆的东西
| 名称 | 解决什么问题 | 不能证明什么 |
|---|---|---|
| 提示缓存 | 减少相同输入前缀的重复处理 | 任务正确、结果完整 |
| 上下文压缩 | 在窗口有限时用摘要替代较早内容 | 早期细节无损保留 |
| 会话保存 | 让你以后找到并继续一段对话 | 磁盘文件能回到旧版本 |
| 文件版本与备份 | 比较、恢复和审查实际产物 | 模型仍记得当时的全部理由 |
本课验收
判断下面两个场景:
- 缓存命中很高,但输出文件漏了两项。任务完成了吗?——没有,应该回到输入、输出和验收规则核对。
- 缓存数字很低,但测试、文件差异和人工检查都通过。需要为了提高命中率重做任务吗?——不需要。
只要你不再用缓存数字给任务质量打分,并知道质量检查要回到真实产物,本课就通过。
想深入理解这个机制,继续阅读官方授权译文 Agent 中的提示缓存。