📄 一句话概括
模型推理有前缀缓存:请求开头完全一样就命中——不变的放前面,易变的放后面;这是性能账,也是结构账。
📝 本节和前面几节的关系
一轮工作可能推进 N 次(6.2),每次请求都要带上前面的一切——这一节讲怎么让重复的部分不重复花钱。
一、KV Cache 是什么
模型推理时,请求开头完全相同的部分,计算结果可以被缓存复用——命中缓存的 token 又快又便宜。
反过来:开头差一个字,缓存全失,从头重算。
所以请求的排列顺序直接决定成本——这不是玄学,是结构。
二、算一笔账
系统提示 4000 token + 历史 8000 token:
- 第 2 轮前缀不变:前 12000 token 走缓存。
- 若把系统提示挪到中间:缓存全失,12000 token 从头算。
一轮 N 个 Step、一天几百轮——乘起来是数量级的差距。
三、实测:稳定段都在最前面
配置里的【稳定段】插件:
system-prompt——系统提示。agent-instructions——人格与指令(maxBytes 65536)。- 工具表——工具插件的注册信息。
它们拼在请求最前面,轮与轮之间保持不变——这就是【稳定前缀】的工程实现。
四、原则与它的另一面
原则一句话:不变的放前面,易变的放后面。
另一面是:易变的东西别塞进前缀—— 比如把时间戳、随机 ID 写进系统提示,每轮都不一样,缓存形同虚设。
这也是【上下文装配】那一站(6.1)的职责:拼请求时要懂缓存——装配顺序是性能参数。
五、动手 Demo:稳定的请求前缀与 KV Cache
缓存命中的算术,加稳定段清单:
prefix = 4000 + 8000
print(" 系统提示 4000 + 历史 8000 = %d token" % prefix)
print(" 第 2 轮前缀不变 -> 前 %d token 走缓存" % prefix)
print(" 系统提示挪到中间 -> 缓存全失, 从头重算")
print()
print(" 稳定段: system-prompt / agent-instructions / 工具表")
print(" 原则: 不变的放前面, 易变的放后面")
实跑输出:
--------------------------------------------------------------------
稳定的请求前缀与 KV Cache
--------------------------------------------------------------------
模型推理有前缀缓存:**请求开头完全一样**,缓存就命中——便宜且快。
算一笔账:系统提示 4000 token + 历史 8000 token——
第 2 轮:前缀不变 前 12000 token 走缓存
若把系统提示挪到中间 缓存全失,从头重算
所以配置里的【稳定段】都在最前面:
稳定段 实测对应
----------------------------------------------------
系统提示 system-prompt
人格与指令 agent-instructions(maxBytes 65536)
工具表 工具插件的注册信息
----------------------------------------------------
原则一句话:**不变的放前面,易变的放后面。**
这既是性能账,也是【模型看见的世界要稳定】的结构账。
开头差一个字,缓存全失——顺序就是钱。 稳定段实测:system-prompt、agent-instructions(maxBytes 65536)。 反面教材:别把时间戳塞进系统提示——缓存形同虚设。
30 秒实验
- 算一笔账:N 个 Step 的会话,前缀稳定比不稳定省多少次计算?
- 找出三个【不该进前缀】的易变内容。
- 在配置树里确认 agent-instructions 的 maxBytes 参数。
常见误区
- 错误:请求内容一样就行,顺序无所谓。——纠正:缓存按前缀命中——开头差一个字就全失。
- 错误:把当前日期写进系统提示更贴心。——纠正:每轮都变,缓存全毁——易变信息放后面。
- 错误:KV Cache 是模型服务商的事,与我无关。——纠正:前缀怎么拼是我们的事——装配顺序是性能参数。
自测三问(点开对答案)
1. KV Cache 命中的条件是什么? —— **请求开头完全相同**——差一个字就全失。 2. 稳定前缀原则是什么? —— **不变的放前面,易变的放后面**。 3. 实测里哪些是稳定段? —— system-prompt、agent-instructions(maxBytes 65536)、工具表。- ☐ 下一节(6.8.1 重建一次模型请求,至少需要哪些材料)
相关笔记
- Turn 与 Step:一轮工作可以包含多次模型推进 —— N 次推进才有了缓存问题
- 上下文压缩也必须保持可解释 —— 同属【装配层】的职责
- 网络的虚拟化① VLAN —— 缓存与复用,基础设施的老思路
- 🐳 DeepSeek Harness · 索引