本章立足于前两章建立的缓存架构与检测能力,从“进攻”的角度展示了 Claude Code 如何通过 7 个以上的命名优化模式,从源头消除或减少缓存中断(Cache Break),从而实现极致的成本节约。
以下是该章节的核心内容总结:
1. 七大核心缓存优化模式
这些模式遵循共同的框架:识别变化源 → 理解变化本质 → 将动态变为静态。
模式一:日期记忆化 (getSessionStartDate)
问题:系统提示词包含当前日期,午夜跨天时一个字符的变化会击穿约 11,000 tokens 的缓存。
优化:在会话首次调用时捕获日期并进行记忆化(Memoize),此后无论实际日期如何变化,该会话内日期始终保持一致。
模式二:月度粒度 (getLocalMonthYear)
优化:在工具提示词中,将时间精度从“日”降低到“月”(如 "April 2026"),将缓存失效频率从每日降低到每月。
模式三:Agent 列表附件化
问题:动态的 Agent 列表嵌入在工具描述中,其变化会导致整个工具 Schema 缓存失效,贡献了 10.2% 的全量缓存创建成本。
优化:将动态列表移至消息附件(Attachment)。由于附件位于消息尾部,其变化不会影响前缀缓存。
模式四:技能列表预算 (1% Context Window)
优化:将技能列表体积硬性限制在上下文窗口的 1%。通过预算裁剪减少列表抖动,实现“预算即稳定”。
模式五:$TMPDIR 占位符
问题:不同用户的临时目录路径包含唯一的 UID,阻碍了跨用户的全局缓存命中。
优化:将绝对路径替换为
$TMPDIR占位符,使提示词在所有用户之间逐字节一致。
模式六:条件段落省略
原则:“宁可不说,不要说了又删”。确保系统提示词前缀在会话生命周期内保持“单调稳定”,避免因功能开关翻转导致内容抖动。
模式七:工具 Schema 缓存 (getToolSchemaCache)
优化:使用会话级 Map 缓存序列化后的 Schema。一旦首次渲染,后续请求直接复用,有效隔离了远程配置(GrowthBook)翻转和动态内容的影响。
2. 优化模式的四个共性原则
本章提炼了构建缓存友好型 Agent 的通用哲学:
将动态内容推向请求尾部:越靠前的内容变化破坏性越大。
降低变化频率:当必须出现在前缀时,用更粗的粒度(如月度)代替细粒度。
消除用户维度的差异:利用占位符实现跨用户的全局缓存共享。
先测量,再优化:所有模式都源自对遥测数据的归因分析。
3. 给开发者的实操建议
审计提示词:识别并处理其中的动态变量(日期、用户名等)。
锁定工具 Schema:确保工具定义在会话内保持不变。
监控关键指标:cache_read_input_tokens 是判断缓存是否正常的唯一指标。
理解前缀顺序:在构建请求时,始终将最稳定的内容放在最前面。
总结而言:强调缓存稳定性是一等公民。它展示了如何通过精细的工程设计(甚至是一个路径占位符或日期格式的改变),在复杂的分布式环境中维持字节级的匹配一致性,从而最大限度地压榨缓存的经济价值。
