第 39 章:Prompt Cache 稳定性
可缓存性是一份序列化契约;仅有语义相似不够。
公开源码快照:实现细节取自 Kocoro 公开仓库
origin/main的4ec6772提交,复核日期为 2026-07-27。章节讲的是不变量;具体常量应以当前源码为准。
39.1 问题是什么
无害的顺序变化、每 Turn 过滤 Schema、时间戳和原地改写历史都会破坏 Prompt Cache。语义看似相同,但字节前缀已经无法复用。
39.2 设计原则
构建规范前缀:稳定的系统脚手架、确定排序的工具和稳定的 Skill 元数据。allowed-tools 应在执行期拒绝,而不是每 Turn 删除 Schema。Fork Request 要复制可变切片,并保证共享前缀字节一致;任何有意破坏前缀的重写都应记录。
39.3 快照证据
| 源码快照 | 观察 |
|---|---|
4ec6772 | BuildForkedRequest 保持字节一致的共享前缀 |
4ec6772 | allowed-tools 是执行限制,不是 Schema 过滤 |
4ec6772 | 原地重写消息会发送 Cache Compaction 遥测 |
以上数值描述的是一个有日期的实现快照,不是普遍契约。
39.4 实现检查表
- 测试序列化后的完整前缀快照。
- 所有由 Map 生成的列表都先排序。
- 把缓存命中率与成功率、延迟一起监控。
39.5 本章结论
可缓存性是一份序列化契约;仅有语义相似不够。
这些章节应作为一个系统阅读:上下文、工具 Schema、持久化、操控、时间纪律、循环检测和并发会彼此影响。