论文 值得关注 10月24日 周六 #agent#inference#context-engineering

清华提出 Agent「缓存工程」:直接管理 KV 缓存,免去重新预填充

清华大学团队的论文 Cache Engineering for Agents 指出,裁剪或摘要历史的上下文工程会改动前缀,迫使推理引擎重新预填充,还可能损害准确率。论文让 Agent 直接控制活跃 KV 缓存:丢弃选定条目(Drop)、调整保留部分的位置编码(Repos),并开源了基于 SGLang、兼容 OpenAI 接口的服务引擎 AKV。

要点

  • 按工具返回滚动丢弃的策略,相比按阈值触发摘要,平均基准分高 1.7 分、平均成本低 27.7%
  • AKV 最高带来 1.2 倍输出吞吐,P95 请求延迟加速 1.5 倍;让缓存策略递归自我改进,成本比专家设计再降 7.1%
  • 论文指出同样的 token 序列在不同操作顺序下会得到不同缓存状态,只靠前缀匹配复用缓存并不正确
  • 代码以 Apache-2.0 开源,Drop/Repos 目前支持 Qwen 系列、GPT-OSS 和 MiniMax-M2 等架构
为什么值得关注

长时间运行的 Agent 上下文成本主要花在反复预填充上,把「上下文管理」下沉到缓存层,是自建推理服务团队值得跟进的方向。

配套实验

已验证 检查 4/4 通过 GitHub Actions 实际运行 · Python 3.12.15 · 耗时 不到 0.1s
改写前缀还是管理缓存:Agent 上下文压缩的预填充成本

受论文 Cache Engineering for Agents 启发,用模拟的 60 轮工具调用演示:摘要式上下文压缩会改写前缀、触发重新预填充,而直接丢弃旧工具返回的 KV 缓存可以控制活跃缓存又不必重新预填充;并演示同一消息序列在不同缓存操作顺序下状态不同。

结论模拟中滚动丢弃把峰值缓存从 177.5 降到 38.3 千token 且无需重新预填充,摘要触发 4 次、额外预填充 20.0 千token

设定:60 轮工具调用,摘要阈值 40000 token,滚动保留最近 4 个工具返回
METRIC: full 峰值活跃缓存 = 177.5 千token
METRIC: summarize 峰值活跃缓存 = 41.5 千token
METRIC: rolling_drop 峰值活跃缓存 = 38.3 千token
METRIC: summarize 额外重新预填充 = 20.0 千token
METRIC: rolling_drop 额外重新预填充 = 0.0 千token
METRIC: summarize 触发次数 = 4 次
[PASS] 滚动丢弃的峰值活跃缓存小于保留全部历史
[PASS] 滚动丢弃不需要任何重新预填充
[PASS] 摘要策略在阈值触发后需要重新预填充
[PASS] 同一消息序列经不同操作顺序得到不同的缓存状态(历史依赖)
RESULT: 模拟中滚动丢弃把峰值缓存从 177.5 降到 38.3 千token 且无需重新预填充,摘要触发 4 次、额外预填充 20.0 千token
python main.py 查看代码与内网复现步骤 →

来源

Esc
↑ ↓ 选择Enter 打开

分享图

1080 × 1350,适合发到群聊或朋友圈
分享图预览

键盘快捷键

j / k
下一条 / 上一条
o
展开或收起当前条目
Enter
打开当前条目详情
c
复制当前条目链接
s
收藏 / 取消收藏当前条目
/ 或 ⌘K
搜索
1 2 3
切换密度:标题 / 摘要 / 完整
t
切换主题
?
显示本帮助