第十五章 ClaudeCode的提示词缓存机制
双人漫谈:ClaudeCode

第十五章 ClaudeCode的提示词缓存机制

17分钟 74 1个月前
主播
节目简介
来源:小宇宙
这一章深入解析了 Claude Code 如何围绕 Anthropic API 的提示词缓存(Prompt Caching)机制,构建一套精密的防御体系,旨在通过极致的前缀稳定性来降低 API 成本(最高可节省 90%)并减少响应延迟。
以下是该章节的核心内容总结:
1. 核心挑战:逐字节匹配的严苛要求
Anthropic 的缓存机制基于前缀匹配:API 请求被视为序列化的字节流,只有当前缀与之前的请求逐字节完全一致时,缓存才能命中。这意味着任何微小的变动(如系统提示词中日期跨天、工具列表顺序变化、甚至是 Beta Header 的增减)都会导致“缓存中断”(Cache Break),迫使系统重新支付昂贵的缓存创建费用。
2. 三级缓存范围 (Cache Scopes)
系统通过 splitSysPromptPrefix() 函数将提示词划分为三个层级,以平衡共享粒度与命中率:
* 全局缓存 (global):最激进的优化。用于存放所有用户、所有会话都完全相同的静态内容(如身份介绍、通用编码规范)。通过 SYSTEM_PROMPT_DYNAMIC_BOUNDARY(动态边界标记)将其与动态内容隔开,实现跨组织的缓存共享。
* 组织缓存 (org):用于存放组织特定但用户无关的内容。当全局缓存不可用(如配置了 MCP 工具)时,系统会回退到此级别。
* 无缓存 (null):用于高度动态的内容(如会话特定的引导、内存文件)。这些内容不标记缓存断点,以避免增加请求复杂度。
3. 核心设计模式:锁存 (Latching)
为了应对会话中途状态变化带来的缓存中断,Claude Code 广泛采用了**“首次评估 → 锁存 → 会话稳定”**的模式:
* TTL 锁存:缓存默认 TTL 为 5 分钟,合格用户(如订阅者或员工)可提升至 1 小时。系统在会话开始时锁存用户的 TTL 资格,防止中途因配额状态翻转导致缓存键变化。
* Beta Header 锁存:这是最极端的案例。AFK 模式、Fast Mode 等功能的 Beta Header 一旦在会话中发送过,就会保持 “sticky-on” 状态。即使该功能随后被关闭,Header 仍会继续发送,以保持请求签名的一致性,防止击穿 50K-70K token 的缓存前缀。
4. 缓存的“敌人”与退化路径
* MCP 工具:由于 MCP 服务器可能随时连接或断开,其定义的工具 Schema 极不稳定。当检测到活跃的 MCP 工具时,全局缓存会自动降级为组织级缓存,以确保命中率的稳定性。
* 模型切换:不同模型的系统提示词不同,切换模型会导致缓存前缀完全失效。
5. 智能清理与优化
* Thinking Clear 锁存:如果距离上次调用超过 1 小时,系统判定缓存已过期,会自动触发思维块(Thinking Blocks)的清理,以节省 token 消耗。
* 日期记忆化:系统在会话开始时捕获日期并记忆化,防止午夜跨天时日期的变更击穿 11,000 tokens 的缓存前缀。
总结而言:展示了 Claude Code 如何通过静态/动态边界分离、多级作用域划分以及强制性的锁存机制,在变幻莫测的运行时环境中,为模型构建了一个极其稳定的“数字化工作记忆”环境

加入我们的 Discord

与播客爱好者一起交流

立即加入

扫描微信二维码

添加微信好友,获取更多播客资讯

微信二维码

播放列表

自动播放下一个

播放列表还是空的

去找些喜欢的节目添加进来吧