深度

Claude Code Prompt Caching 深度解析:如何让每次调用更快更省钱

深入解析 Claude Code Prompt Caching 的工作原理:前缀精确匹配机制、系统提示词/项目上下文/对话三层结构,以及哪些操作会破坏缓存导致成本飙升。附长会话和后台代理场景下的实用降本建议。

2026/7/64分钟 阅读ClaudeEagle

Prompt Caching(提示缓存)是 Claude Code 速度和成本控制的核心机制。理解它的工作原理,能帮你避免无意间让缓存频繁失效、白白多花 Token 预算。

为什么需要 Prompt Caching

Claude 模型在两次 API 请求之间不会「记住」任何东西。这意味着每次你在 Claude Code 中发一条消息,它都要把完整上下文重新发一遍:系统提示词、项目上下文、之前所有的消息和工具结果,加上你的新消息。

由于新内容总是追加在末尾,每次请求的绝大部分内容和上一次是一样的——Prompt Caching 正是用来避免重复处理这部分未变化内容的机制。

缓存的组织方式:前缀匹配

API 通过匹配每个请求的**开头部分(前缀)**与最近处理过的内容来实现缓存。在正常的一轮对话中,前缀就是上一次的完整请求,只有最新的一次问答是新内容。

关键点:匹配是精确匹配。前缀中任何位置发生变化,都会导致该位置之后的全部内容重新计算——没有按文件或按片段的细粒度缓存

请求的三层结构

为了最大化前缀匹配的命中率,Claude Code 把内容按「变化频率」从低到高排列:

层级内容何时变化
系统提示词核心指令、工具定义、输出风格加载的工具定义变化,或 Claude Code 升级
项目上下文CLAUDE.md、自动记忆、未限定范围的规则会话开始时,或执行 /clear/compact 之后
对话内容你的消息、Claude 的回复、工具结果每一轮都会变化

这个分层设计的意义:对话层的变化不会影响系统提示词和项目上下文层的缓存;但系统提示词层的变化会让后面所有内容的缓存失效,因为后续内容现在处于一个不同的前缀之后。

哪些操作不会破坏缓存

Plan ModeSkill 加载的指令是作为对话消息追加的,因此缓存的前缀保持完整,不会失效。

# 这些操作 —— 缓存友好 ✅ > /plan 进入 Plan Mode 分析代码 > /some-skill 加载一个 Skill # 都以对话消息形式追加,前缀缓存不受影响

哪些操作会破坏缓存

根据分层原理,以下操作通常会让缓存失效并触发重建:

# 这些操作 —— 会使缓存失效 ⚠️ /clear # 清空对话,项目上下文层重新加载 /compact # 压缩对话历史,项目上下文层重新加载 # 会话中途修改系统提示词相关的设置 # 比如切换 output style、加载新工具定义

系统提示词层的变化影响最大,因为它处于最前面的位置——一旦变化,后面的项目上下文层和对话层全部要重新计算和写入缓存。

实用建议:如何减少不必要的缓存失效

  1. 减少频繁的 /clear/compact:只在真正需要清空上下文时使用,而不是习惯性地清
  2. 避免会话中途频繁切换 output style 或工具集:这类改动会波及系统提示词层
  3. 善用 Plan Mode 和 Skill:它们的指令走对话层,不会打断已建立的缓存
  4. 长时间稳定的会话更省钱:一次建立的缓存前缀,只要不触发上层变化,会一直被复用

如何检查缓存表现

如果发现某个项目的 Token 用量看起来异常高,可以留意是否触发了以下常见场景:

  • 频繁执行 /clear(每次都要重建项目上下文层)
  • 会话中反复切换模型或权限模式(可能影响系统提示词层)
  • 使用了会频繁改变工具定义集合的自定义配置

与 Claude Sonnet 5 的关联

值得一提的是,Claude Code v2.1.201 专门针对 Claude Sonnet 5 会话做了优化:不再用「对话中系统角色」传递 Harness 提醒信息,避免了这类提醒消息在对话中途插入导致前缀失配、缓存被打破的问题。这个改动本质上就是应用了本文讲的分层原理——把原本可能出现在「意外位置」的内容,改为不会打断前缀匹配的方式处理。

总结

Prompt Caching 对 Claude Code 的速度和成本影响巨大,理解「系统提示词 → 项目上下文 → 对话」这个三层结构和精确前缀匹配的规则,能帮你避免无意间频繁触发缓存重建,尤其是在长时间运行的 Agent 任务和后台代理场景中,缓存命中率的差异会直接反映在账单上。


来源:How Claude Code uses prompt caching — Anthropic 官方文档

相关文章推荐

深度Claude Code 安全强化速览:Auto Mode 防误删、后台通知防伪造双重防线解析深度解析 Claude Code v2.1.205 两项容易被忽略但意义重大的安全强化:Auto Mode 对变量值不明的 rm -rf 命令先询问再执行,以及后台任务通知明确标注「无真实人工输入」防止伪造批准被误信。分析两者背后共同的「默认保守」设计哲学。2026/7/10深度Claude Code v2.1.201:Claude Sonnet 5 会话系统消息机制优化,避免破坏 Prompt CacheClaude Code v2.1.201 优化了 Claude Sonnet 5 会话中 Harness 提醒信息的传递方式,不再使用会破坏 Prompt Cache 的对话中系统角色消息,为长会话和后台代理任务带来显著的 Token 成本节省。2026/7/5深度Claude Code MCP OAuth 与自托管 Runner 连接性修复合集:从重定向 URI 到网关空闲超时汇总 Claude Code v2.1.229 中一组长连接与自托管部署相关的修复:MCP OAuth 重定向 URI 兼容性、SSE keepalive 防网关空闲超时、自托管 Runner 的 Git 凭据卡死、容器 CPU 限制误读等问题详解。2026/8/13深度Claude Code Week 32 更新全景:跨会话消息、自托管环境公测、Auto Mode 即将成为默认汇总 Claude Code 2026 年 8 月 Week 32(v2.1.220-224)全部更新:跨会话消息正式介绍、自托管环境公测开放、Auto Mode 8月14日成为默认权限模式等重大变化。2026/8/11深度Claude Code Week 29 更新全景:Artifacts 实时数据、屏幕阅读器模式、命令拆分一次看懂汇总 Claude Code 2026 年 7 月 Week 29(v2.1.207-212)全部更新:Artifacts MCP 实时数据、屏幕阅读器模式、/fork 与 /subtask 命令拆分、Auto Mode 云平台松绑等。2026/8/10深度Claude Code 沙箱凭据保护体系再升级:v2.1.224 拒绝规则绕过漏洞与实践检查清单Claude Code v2.1.224 修复沙箱文件系统拒绝规则(denyRead 带结尾斜杠)在 Linux/macOS 上可被静默绕过的问题,提供实用的沙箱配置自检清单。2026/8/10