动手实战 · 从能跑的 Demo 到能用的产品

提示词和缓存的微妙关系

改一个字 System Prompt,整条 KV Cache 作废。怎么减少手抖的成本

本页解决的问题

先给结论

「提示词和缓存的微妙关系」要解决的关键问题是什么?

改一个字 System Prompt,整条 KV Cache 作废。怎么减少手抖的成本

判断标准

让这个结论先证明自己值得留下。 把这一页当成决策工具,而不是需要背下来的定义。把概念连到一个真实任务、一个可观察结果,以及一个能改变你判断的失败上。

下一步

写下一个问题:试完这个方法后,你能用什么证据回答它?

常见误区

结论听起来很完整,却没有检查最关键的假设。

指纹变了 = 缓存作废

每次请求,系统会对 System Prompt 算一个指纹(hash)

System: 你是助手。当前时间: 14:35:22
a3f7c2
MISS
System: 你是助手。当前时间: 14:35:23
b8e1d9
MISS
System: 你是助手。当前时间: 14:35:24
c4a2f6
MISS

每一秒时间不同 → 指纹不同 → 缓存永远命不中 → 每次都要从头算 → 成本翻倍。
这不只是时间戳的问题:任何动态内容插在 System Prompt 里都有同样效果。

Skill 的注入方式也影响缓存
把 Skill 插进 System
[System] 你是 AI 助手... [当前 Skill: 内容创作] 触发词:帮我写... 步骤:1. 确认需求... --- [User] 帮我写篇文章

切换 Skill 时 System 变了 → 缓存失效

~20%
Skill 作为独立消息追加
[System] 你是 AI 助手... --- [Assistant/Skill 消息] 当前 Skill: 内容创作 步骤:1. 确认需求... --- [User] 帮我写篇文章

System 永远不变 → 前缀缓存始终命中

~90%
模拟:10 次请求的缓存表现

缓存命中模拟器

假设 10 次请求中有 3 次切换了不同的 Skill。观察两种注入方式的缓存差异:

命中率:
KV Cache 的规则很简单:前缀一样就命中。所以,别动前缀。把所有可能变化的内容(Skill、上下文、时间)放到 System Prompt 之后,让前缀永远稳定。

「指纹变了 = 缓存作废」为什么要看操作

「每一秒时间不同 → 指纹不同 → 缓存永远命不中 → 每次都要从头算 → 成本翻倍。」把结构落到了一个具体动作。这里真正要比较的不是名词谁更高级,而是数据如何被放置,以及最常发生的操作需要走多远。

读懂结构,要同时看访问方式和变化方式

「假设 10 次请求中有 3 次切换了不同的 Skill。观察两种注入方式的缓存差异」揭示了一个容易被忽略的取舍:按位置读取、按键查找、从两端进出、插入新元素和遍历关系,适合的组织方式并不相同。一个结构在某个操作上很快,不代表它在所有操作上都快。

把规模和更新频率一起算进去

实践时可以把「假设 10 次请求中有 3 次切换了不同的 Skill。观察两种注入方式的缓存差异」当作边界提醒:先写下数据量、最常用的操作和允许的延迟,再看 AI 给出的结构是否真的匹配。

从「指纹变了 = 缓存作废」走到「Skill 的注入方式也影响缓存」

「指纹变了 = 缓存作废」先把问题落在「每一秒时间不同 → 指纹不同 → 缓存永远命不中 → 每次都要从头算 → 成本翻倍。 这不只是时间戳的问题: 任何动态内容插在 System Prompt 里都有同样效果」上;到了「Skill 的注入方式也影响缓存」,讨论继续推进到「切换 Skill 时 System 变了 → 缓存失效」。两段连起来,重点就不只是记住一个结论,而是看清它成立所依赖的条件。

把这条判断带到下一个场景

遇到一个新的数据结构时,不要从定义开始背。先写出最频繁的操作,再估计数据量和更新方式,最后检查结构是否让这三个条件同时成立。

  • 「指纹变了 = 缓存作废」:每一秒时间不同 → 指纹不同 → 缓存永远命不中 → 每次都要从头算 → 成本翻倍。 这不只是时间戳的问题: 任何动态内容插在 System Prompt 里都有同样效果
  • 「Skill 的注入方式也影响缓存」:切换 Skill 时 System 变了 → 缓存失效
  • 「模拟:10 次请求的缓存表现」:假设 10 次请求中有 3 次切换了不同的 Skill。观察两种注入方式的缓存差异

最后的「模拟:10 次请求的缓存表现」把讨论落到「假设 10 次请求中有 3 次切换了不同的 Skill。观察两种注入方式的缓存差异」。回看这条线索时,最值得保留的是:当输入、规模或风险改变,哪些判断需要重新做一遍。

标记为已学完 阅读进度会自动记录
← 上一篇下一篇 →

继续阅读

同一条线上的下一篇。

文章讨论

读到这里,留下一个判断。

把刚想明白的地方、还没想通的问题,留给下一位一起学习的人。

正在讨论 提示词和缓存的微妙关系 从能跑的 Demo 到能用的产品
3条讨论文章讨论 · 与共学社区同步
在共学社区查看
AM
Asha Morgan内容编辑
观点实践记录

我把这篇文章里的一个判断改写成了今天可以验证的小实验。比记住结论更有用的是,知道下一步要观察什么。

文章讨论7 有帮助
LH
Lin Harper独立开发者
观点观点

读完以后我先回头找它成立的条件,而不是直接把方法搬进项目。这个顺序让后面的取舍清楚很多。

文章讨论5 有帮助
KM
Kiki Moore产品运营
问题问题

如果把这个判断放到真实工作里,最先需要补的约束是什么?我想知道从阅读到第一次实践之间,哪一步最值得先做。

文章讨论4 有帮助