教程

Claude Cache Diagnostics 教程:定位 Prompt Cache Miss 的真正原因

Claude Cache Diagnostics 解决 prompt cache miss 难排查问题。通过传入上一次 response id,API 会比较请求 fingerprint,告诉你 model/system/tools/messages 哪个部分破坏了缓存 prefix。

2026/6/63分钟 阅读ClaudeEagle

Prompt caching 可以显著降低 Claude API 的成本和延迟,但前提是 prompt prefix 必须逐字节一致。问题是:一旦 cache miss,以前开发者只能看到 usage.cache_read_input_tokens 掉到 0,却不知道哪里变了。

Cache Diagnostics 就是为了解决这个痛点。


Cache Diagnostics 是什么?

它是 Anthropic 的 beta 功能,需要 beta header:

text
anthropic-beta: cache-diagnosis-2026-04-07

使用时,你把上一轮 response 的 id 传给下一轮请求:

json
{
  "diagnostics": {
    "previous_message_id": "msg_xxx"
  }
}

API 会比较两次请求的 fingerprint,并在响应中返回 diagnostics,告诉你第一个分歧点在哪里。


它能发现哪些问题?

常见 cache miss 根因包括:

  • model 变了
  • system prompt 里插入了时间戳
  • tools 顺序被重新排列
  • tool schema 生成顺序不稳定
  • 早期 message 被改写
  • 自动拼接上下文时多了空格或换行
  • 某些应用中间件修改了请求结构

这些变化都可能让 prompt prefix 失去 byte-for-byte identical,从而无法命中缓存。


基本用法

第一轮请求先启用 diagnostics:

json
{
  "model": "claude-opus-4-8",
  "max_tokens": 1024,
  "cache_control": {"type": "ephemeral"},
  "system": "You are analyzing a large document...",
  "messages": [
    {"role": "user", "content": "Summarize section 1."}
  ],
  "diagnostics": {"previous_message_id": null}
}

第二轮传入上一轮的 response id:

json
{
  "diagnostics": {
    "previous_message_id": "msg_012345"
  }
}

如果 diagnosticsnull,表示没有发现 prefix divergence。若有 cache_miss_reason,就可以定位具体分歧。


如何和 usage 一起读?

Diagnostics 只说明请求结构是否分歧,不完全等于最终是否命中缓存。排查时应同时看:

  • usage.cache_read_input_tokens
  • usage.cache_creation_input_tokens
  • diagnostics.cache_miss_reason

如果 cache read 为 0 且 diagnostics 指向 tools 或 system,说明 prompt 构造确实变了。如果 diagnostics 没有分歧但仍 miss,可能是 cache TTL、模型/平台差异或 cache control 位置问题。


数据保留和安全

官方说明 fingerprints 只包含 hash 和 token-count estimates,不包含原始 prompt 内容;保留时间有限,并且仅用于组织和 workspace 内部的诊断。

该功能符合 ZDR eligibility,但有有限技术保留,应根据官方数据保留说明确认合规要求。


实战建议

  • 所有长会话 Agent 都应在测试环境开启 diagnostics
  • 对 tools 数组做稳定排序
  • 不要在 system prompt 里直接拼当前时间
  • 对自动生成的 schema 做 deterministic serialization
  • cache miss 时先查 diagnostics,而不是盲猜
  • previous_message_id 链接到应用 trace,方便回放

来源:Anthropic 官方文档 - Cache diagnostics | 整理:ClaudeEagle

相关文章推荐

教程Claude Mid-conversation System Messages 使用指南:长会话不再破坏 Prompt CacheClaude Opus 4.8 新增 mid-conversation system messages,可在长会话中途追加系统级指令,不改顶层 system prompt,从而保持缓存 prefix 命中,降低 Agent 循环成本。2026/6/6教程Claude Prompt Caching 完整指南:降低长上下文成本与延迟的 API 实战Claude Prompt Caching 官方能力中文整理:适合缓存的内容、cache_control 使用方法、缓存断点策略、长文档和工具定义复用、成本/延迟收益、常见坑和生产环境落地建议。2026/5/21教程Claude Batch Processing 完整指南:批量处理任务如何节省 50% API 成本Claude Batch Processing 官方能力中文整理:为什么批处理能省钱、如何创建 batch、custom_id 设计、轮询状态、下载结果、处理失败请求,以及适合大规模分类、摘要、翻译、数据清洗的任务模式。2026/5/21教程Claude MCP Tunnels 指南:不用开放入站端口,也能把私有 MCP 服务接给 ClaudeMCP Tunnels 是 Anthropic 面向企业内网 MCP 服务的 beta 能力,通过 outbound-only 连接、cloudflared、proxy、inner TLS 和 OAuth,让 Claude 安全访问私有工具与数据源。2026/6/6教程Claude Citations 完整指南:让 AI 回答带可验证引用,适合 RAG 与文档问答Claude Citations 官方能力中文整理:如何启用 citations.enabled、支持的文档类型、PDF 页码引用、文本字符索引、custom content block 索引、RAG chunk 粒度控制、与 Prompt Caching 兼容性和 Structured Outputs 不兼容限制。2026/5/21教程Anthropic Claude API 完整开发指南 2026:Prompt 缓存、自适应推理、工具调用全解析Claude API 2026 年完整开发指南:模型选型和最新定价(Haiku/Sonnet/Opus 对比)、Prompt 缓存实现(最高节省 90% 成本,含代码示例)、自适应推理替代旧 budget_tokens(含流式实现)、工具调用完整循环、流式响应(含 Next.js App Router 示例)、视觉能力(Opus 4.7 支持 3.75MP),以及生产最佳实践(重试、成本监控)。2026/4/24