你让 AI 智能体连续查资料、调用工具、修改代码,工作几十轮后,它会积下一本越来越厚的“工作日志”。过去,系统主要担心文字塞不进上下文窗口;现在还有一个更隐蔽的问题:模型为这些文字保存的计算结果,也要不断占用、搬运和读取。轨迹足够长时,缓存本身就可能成为主要成本。
Tianyu Fu、Ruoxi Wang 等人提出的 cache engineering(缓存工程),想把这件事从模型内部的优化细节,变成智能体可以主动控制的系统能力。它不改写原始对话,而是让智能体直接决定哪些缓存退出后续计算、哪些继续保留,以及保留内容应处在什么位置。配套的 AKV 引擎则负责缓存的复用、淘汰和恢复。
本文的结果均来自研究团队论文,尚无跨机构独立验证。具体提升也只适用于论文给出的模型、任务与部署设置。
删掉文字,为什么反而要多算一次?
先解释 KV cache(KV 缓存)。语言模型读过一段文字后,会保存一批中间计算结果。它像模型的“计算笔记”:生成下一个 Token——也就是模型处理文字时使用的基本单位——时,可以直接翻笔记,不必从头再读。
问题在于,智能体的观察、推理、工具返回和操作记录会持续增长。论文称,在其分析中,KV 缓存读取占到 API 总成本的 82.4%。轨迹还可能超过模型的上下文窗口,也就是一次推理能容纳的 Token 总量上限。
常见办法是删掉旧记录,或者把它们总结成短文。但这会改动历史前缀。前缀一变,后面建立在旧前缀之上的计算笔记通常不能直接沿用,系统必须重新执行 prefill(预填充):把保留下来的上下文再完整读一遍,重建缓存。删得少,重算很多;删得狠,又可能丢失任务所需的信息。
这也接上了本刊 10 月 20 日讨论过的问题:摘要不只可能把猜测混成事实,从系统角度看,它还会让已有缓存失效。
不改日志,直接整理计算笔记
缓存工程换了一个角度:逻辑上的完整轨迹仍然保留,但真正参与后续注意力计算的“活跃缓存”可以缩小。论文定义了两项关键操作。
drop 会让选中的缓存不再参与未来的注意力计算,但不删除原始轨迹,也不改动其余缓存。可以把它理解为把不常用的旧资料移出当前桌面,而不是重写工作日志。
repos 会调整保留下来的 key 的位置编码。位置编码告诉模型各项内容处在序列什么位置。即使旧缓存被移走,位置编号仍可能继续增长,最终碰到模型能可靠处理的范围。repos 通过旋转式位置编码的变换重新安排位置,无需重新预填充;缓存中的 value 保持不变。
论文主要测试了一条简单策略:始终保留推理内容,只滚动移除较旧的工具返回,并留下最近 12 次工具响应。它不是等上下文快满时再大扫除,而是边工作边整理。
同一句话,不再对应同一份缓存
直接操作缓存也带来一个系统难题。传统服务通常做前缀匹配:两个请求开头的 Token 相同,就尝试复用已有缓存。缓存工程下,这个判断不再可靠。
假设 A、B、C 三段内容完全相同。一条轨迹可能先让 B 看过 A,再移除 A;另一条可能先移除 A,再计算 B。最后两边留下的 Token 看起来一样,B 的内部状态却不同。换句话说,缓存不仅取决于“读过什么”,也取决于“按什么顺序删过、移动过什么”。错误复用不会只是性能变差,还可能改变模型输出。
因此,团队共同设计了 AKV serving engine(AKV 服务引擎)。它对智能体提供兼容现有服务 API 的无状态接口:客户端照常提交完整消息,再附上缓存操作说明,不必知道某块缓存此刻是否仍在服务器上。引擎内部则维护有状态的缓存历史。
AKV 用扩展的 radix tree(基数树,一种按共同前缀组织数据的结构)同时记录 Token 与缓存操作,避免把表面相同、实际不同的状态混用。它还采用感知 drop 的淘汰机制:一块缓存只有在没有请求继续需要时才能释放。若缓存已经因内存压力被移走,segment-batch attention(分段批量注意力)会按操作发生的位置拆分注意力计算,在一次预填充中恢复缺失状态;前馈网络仍整批运行,以减少反复读取权重。
它带来的不只是省显存
研究覆盖 MiniMax-M2.7、GPT-OSS-120B 和 MiroThinker-1.7-Mini,以及 BrowseComp-Plus、xbench-DeepSearch-2510、GAIA-Text 和 SWE-Verified 四类长程任务。对照方法是在达到阈值后集中总结历史。
论文报告,工具返回滚动移除策略在三种模型、四项基准上的平均分比常规阈值总结高 1.7 分,平均推理成本低 27.7%。这组结果值得注意,因为它没有用“少保留信息”简单换取低成本,而是在论文设置中同时改善了成绩和费用。
系统实验使用 8 张 NVIDIA A800-80GB GPU,4 张负责预填充,4 张负责生成。论文称,AKV 最多实现 1.2 倍输出吞吐,并让 P95 请求延迟获得 1.5 倍加速。P95 指 95% 请求都能在该时长内完成,它比平均值更能反映慢请求体验。高并发时,普通方案承受更多缓存压力和重复预填充,AKV 的差距随之扩大。
作者还让智能体反复搜索、评估并改进缓存策略。其递归自我改进策略在未参与优化的任务上,相比专家手工设计进一步降低 7.1% 成本。这提示了更有意思的方向:以后智能体可能不只决定调用什么工具,也会决定怎样管理自己的计算记忆。
为什么这是一项系统问题
缓存过去常被视为推理引擎内部的一项优化。长轨迹智能体改变了它的性质:系统既要决定哪些状态参与计算,也要安排它们放在哪里、何时搬运、能否跨请求复用,以及丢失后怎样恢复。它已经接近一套分层仓储和物流系统。
AKV 的价值正在于把三层问题连了起来:智能体负责表达保留意图,缓存操作给出明确语义,服务引擎保证复用正确并控制实际存储。只有三层一起设计,“少算一点”才可能真正变成更低的延迟和成本。
局限与未知
- 全部证据来自同一研究团队。论文提供了实验设置,但 1.7 分、27.7%、1.2 倍、1.5 倍和 7.1% 都不应脱离这些模型、任务、计费方式与硬件环境泛化。
- “KV 缓存成为主要成本”是有条件的判断。论文展示了长轨迹场景中的强信号,但不同轨迹长度、部署方式和并发压力可能得到不同结论。
- 论文把线性注意力模型支持、更多缓存策略探索,以及在这一机制下训练智能体留作未来工作。代码仓库地址为 thu-nics/AKV,但仓库链接本身不等于结果已被独立复现。