Prompt Harness

提示词和缓存的微妙关系

KV Cache 的规则极其简单:前缀一模一样就命中,差一个字就全部重算。所以,往 System Prompt 里插入任何动态内容,都可能让缓存永远打不中。

指纹变了 = 缓存作废

每次请求,系统会对 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 之后,让前缀永远稳定。