跳到主要内容
SecondHome

缓存经济账:一份 KV,两端省钱

9 分钟进阶2aL3 p.37-44 ↗录像 ↗支撑材料 6 篇

讲次页把提示词缓存压成一张价目表和一句「前缀要稳定」,本篇把它拆回完整链条:prefill 一次算出的 KV,在服务器端省下重复计算与显存,在 API 端折成按读价计费的折扣。一份 KV,两端省钱。看懂两端怎么定价、缓存怎么失效、命中率怎么度量,Agent 的省钱设计就从背价目表变成可度量的工程。

GLM-5.2 的输入价有两个:常规 1.40,缓存读1.40,缓存读 0.26。差价全看能不能命中。

便宜的源头是 KV cache:预填充(prefill)阶段一次算出的注意力底稿。本篇从它的来历讲起,一路走到两端的定价与失效。

KV 从哪来:两阶段推理与前缀复用

先看推理服务栈(L3 p.37-44)。Request 进入 Scheduler 排队,先过预填充:整段 prompt 一次算完,计算密集,首 token 延迟(TTFT, Time To First Token)随长度上涨。

再进解码(Decode):逐 token 生成,内存带宽密集,节奏用每 token 输出时间(TPOT, Time Per Output Token)度量。

衔接两阶段的持久状态就是 KV cache:每个请求一份,让解码不必重算历史。这份注意力底稿只算一次。

Agent 循环把这份底稿的价值成倍放大。工具结果不断回流,与上一轮完全相同的前缀每轮都在变长。

MLSys 2024 的 Prompt Cache 论文刻画的就是这个场景。实证结论:重算的计算量增长快于加载已缓存 attention 状态的成本,交叉点在哪取决于硬件。前缀够长时,存下来就赢了重算。

2026 年的「Can I Buy Your KV Cache?」再进一步:一次 prefill 的产物还能跨读者摊销。同一份长文档的 KV 可以服务许多读者,物理成本与 API 定价是两个量。

落到请求组织上,就是前缀要稳定的结构化版本,出自 L3 p.44:

API 端:一张价目表,两种缓存哲学

各家价目表出自 L3 p.40,单位 $/1M token,三列依次为缓存读、常规输入、输出:

模型缓存读常规输入输出
DeepSeek V4 Flash0.007-0.0140.22-0.440.66-1.32
GLM-5.20.261.404.40
Kimi K30.303.0015.00
GPT-5.6 Luna0.020.201.20
Claude Opus 50.505.0025.00

价目截至 2026-09 讲课当周,厂商调价频繁,以官方定价页为准。

缓存读普遍只有常规输入的 1/5 到 1/30,输出价则高一个量级。省输入只是小头;真正贵的重算一旦全价重来,账单立刻回到原价。

代入一个示意演算:10 轮会话,稳定前缀 10k token,按 GLM-5.2 价目。写入按两家通行的 1.25x 溢价计。

方案第 1 轮(前缀 10k)第 2-10 轮(各 10k)前缀部分合计
无缓存$0.01409 × 0.0140=0.0140 = 0.1260$0.1400
命中写入 $0.01759 × 0.0026=0.0026 = 0.0234$0.0409

只算前缀就省约七成。会话越长、可复用前缀越长,差距越大。

Manus 的生产经验是缓存与非缓存相差 10 倍成本,并把 KV-cache 命中率称为生产 Agent 最重要的单一指标。交互版演算可以直接上手:

怎么把命中拿到手,两家 API 是两种哲学:

断点(breakpoint)由你在请求里显式标记,每请求最多 4 个;TTL 分 5 分钟(写 1.25x)与 1 小时(写 2x)两档,命中读 0.1x(部分新模型低至 0.025-0.05x);最低缓存量按 512-4096 分档;TTL 内每次命中即刷新。

无需标记,前缀匹配自动命中;写 1.25x、读 0.1x;最低 1024 token;默认 30 分钟;缓存的是 KV 张量而非文本。

显式断点要你自己决定什么值得缓存,换来精确控制与更细的 TTL 选项;自动缓存零心智负担,但你只能靠调整自己的前缀去迎合它。

工具端:让缓存一夜清零的日常操作

Claude Code 文档列了一份失效清单:换模型、改推理 effort、增删 MCP 工具、compact。任何一件都会让前缀变化,全段重算。

原因在请求的分层结构:系统提示 → 项目上下文 → 对话。任何一层的字节变化,都会让它之后所有层的 KV 作废。

健康度不用猜,账单字段直接给出:cache_read 与 cache_creation 的比值就是缓存健康度。

最微妙的是 compact:压缩本身会毁缓存,但可以让变化只发生在末尾。Claude Code 在 claude.dev 博客里给出的做法是缓存安全的 fork:复用父对话完全相同的前缀,仅在末尾追加压缩指令:

user: 会话逼近预算,触发压缩Thought: 若把总结直接铺成新上下文,前缀全变 → 历史 KV 全作废,全价重算Action: fork 父对话:前缀原封不动,只在末尾追加一条压缩指令Observation: 父前缀按读价复用;摘要约 20k token,需预留 buffer,否则压缩产物自己又把预算撑爆

由此得到三条设计纪律,出自 L3 p.44:

  • 稳定层在前。指令、工具、示例这些稳定前缀放在前面,变化状态追加在后面。
  • 别扰动前缀。别在前缀埋时间戳,别随手重排 schema;一个字节的扰动就是一次全段重算。
  • 持续度量。盯住三件事:cached tokens、TTFT、缓存驱逐。

服务器端:分页与共享树,谁在保管你的 KV

你的 KV 住在服务端显存里。vLLM 的 PagedAttention 发表在 SOSP 2023,解决的就是保管问题:KV 显存随请求动态变化,按最大长度预留式的浪费严重。

解法是借鉴操作系统分页:把 KV 切成块按需分配,近乎零浪费,吞吐提升 2-4x。

SGLang 的 RadixAttention 把复用往前推了一步:所有请求的前缀组织成一棵共享基数树,用 match /split/evict 管理复用。

调度器还做缓存感知路由,示意性地打分:score = 可复用前缀 − 队列惩罚。谁的请求能蹭到已缓存的共享前缀,就先服务谁。

你在 API 端看到的命中与驱逐,物理上就是这棵树上的 match 与 evict。

为什么这与你有关

不自建部署,这套机制也值得懂。它解释了读价折扣的物理来源:省下的是真实的 prefill 计算。

也解释了为什么 TTL 到期、别人家的请求挤占显存时,你会莫名全价重算。缓存是被驱逐的,不是失效的。

与本讲的连接

讲次页经济账一节的三个结论,本篇都给出了机制解释:

  • 前缀要稳定:稳定分层的前缀让命中最大化。
  • 压缩会毁缓存:缓存安全的 compaction 把毁掉的代价压到末尾一段。
  • 长上下文不豁免管理:吞吐与驱逐的存在说明窗口再大也只是把问题推后。
  • 连着 2b:技能的渐进式披露是缓存友好的设计,目录常驻稳定层,按需的正文留给变化层。

本节论文与规范

本节资料

  • Claude Code 如何吃满提示缓存:请求按「系统提示→项目上下文→对话历史」分层组织,让稳定前缀全部落在缓存里;换模型、改 reasoning effort、增删 MCP 工具、compact 都会使缓存失效重算。健康度看 cache_read 与 cache_creation 的 token 比值。把上一份定价文档落到真实 agent 的用法里。

  • Anthropic 工程师复盘 compaction 的缓存安全实现:压缩天然破坏 prompt cache,他们的做法是尽量复用父对话前缀、只在末尾追加压缩指令,并给约 20k token 的摘要预留 buffer,让压缩后仍能命中缓存;再把缓存命中率当 uptime 级别的监控指标。压缩与缓存必须一起设计,这是最好的工程案例。

  • Manus 团队的中文复盘,最出圈的判断是「KV-cache 命中率是生产 Agent 最重要的单一指标」——命中与否可差 10 倍成本。具体做法:保持前缀稳定、只追加不重写;工具定义只在头部出现一次(遮蔽而非移除);把文件系统当上下文用;todo.md 之类的软状态放到上下文末端。字字来自踩坑。

  • Anthropic 提示缓存的机制与定价:写入 5 分钟档 1.25 倍、1 小时档 2 倍,命中读取 0.1 倍(部分新模型低至 0.025-0.05 倍);缓存按 512-4096 token 分档起步;一条请求最多 4 个断点;TTL 内每次命中都会刷新。显式断点设计让「什么值得缓存」成为开发者的显式决策,而不是平台的黑盒。

  • OpenAI 的对照设计:缓存全自动,前缀达到最低 1024 token 即生效,GPT-5.6 及以后写入 1.25 倍、命中读取 0.1 倍,默认保留约 30 分钟;底层缓存的是注意力 KV 张量而非文本本身。省心但不可控,与 Anthropic 的显式断点哲学互为镜像,对照着读最有味道。

  • 服务端视角的 KV cache 经济账:注意力 KV 缓存占显存可达 30% 以上,连续存储下的内部外部碎片造成大量浪费;PagedAttention 借操作系统分页思想把 KV 切成块按需映射,浪费接近零,吞吐提升 2-4 倍。与 API 侧提示缓存合起来看,构成「同一份 KV、两端省钱」的完整图景。

AI 生成 · 仅供参考,与课程方无关。选中正文里的任何一段也能直接问我(解释一下 / 举个例子)。

本详解以 CMU 11-768 AI Agents (Fall 2026) 课程大纲为参考框架独立撰写,AI 辅助起草、人工抽审。 涉及的官方课件、论文与课程材料版权归原所有方,讲义为站内镜像、其余外链原文出处; 观点与文字(除标注引用外)为作者原创。