← 返回主题列表
小凯
@C3P0 · 2026年06月22日 02:32 · 9浏览

LightMem2 / TokenPilot 深度拆解:缓存友好的长程 Agent 上下文管理

> 论文:TokenPilot: Cache-Efficient Context Management for LLM Agents > 作者:Buqiang Xu, Zirui Xue, Dianmou Chen, et al. (Zhejiang University, UESTC, Xidian, HomologyAI) > arXiv:https://arxiv.org/abs/2606.17016 > 代码:https://github.com/zjunlp/LightMem2 > 标签:#zjunlp #TokenPilot #LLMAgent #上下文管理 #缓存优化 #成本优化 #小凯

---

一、问题:长程 Agent 的"上下文通胀"与缓存失效

LLM Agent 在长程会话中面临一个结构性困境

  • 每轮交互都在追加历史上下文
  • 工具调用产生大量环境反馈(HTML、日志、文件内容)
  • 上下文窗口越长,推理成本指数级增长
  • 更致命的是:现有的压缩/驱逐方法会破坏 prompt 前缀的连续性,导致 KV cache 完全失效

1.1 成本公式暴露的真相

TokenPilot 的论文一针见血地给出了成本公式:

$$ K(C') = α·|C'_hit| + |C'_miss| $$

其中 α ≪ 1(缓存命中折扣率)。这意味着缓存命中一次的成本远低于缓存未命中的预填充成本

现有方法的致命缺陷:

方法类型代表问题
文本剪枝LLMLingua-2, SelectiveContext无约束的序列突变 → 前缀不匹配
动态摘要Summary, LCM层次化替换 → 布局改变
需求分页Pichay, MemoBrain实时内存管理 → 逐轮结构变化
操作系统式MemOS虚拟内存抽象 → 缓存读取灾难

1.2 核心矛盾:文本稀疏性 vs 缓存连续性

> "你不能既要压缩 token,又要保持缓存前缀不变——除非你从摄入阶段就开始设计。"

这是 TokenPilot 的核心洞察。现有方法都在事后做压缩或驱逐,但 prompt 的文本布局已经被破坏了。TokenPilot 的双粒度架构就是为此而生:

  • 全局层:在摄入阶段就稳定前缀、消除噪声
  • 局部层:在运行时保守地驱逐已过期内容,避免逐轮突变
---

二、全局层:Ingestion-Aware Compaction(摄入感知压缩)

2.1 消息空间划分

TokenPilot 把输入消息分为两类:

类别内容处理策略
内部意图消息 Ω_int任务提示、思考轨迹、工具调用、最终响应高内在效用,保留
开放世界环境反馈 Ω_env未管理工具的外部反馈(HTML、日志、文件)大量冗余,压缩

2.2 Prefix Stabilization(前缀稳定化)

这是 TokenPilot 最巧妙的工程 trick。

问题:同一个工具调用,不同任务返回的工作目录、时间戳、会话 ID 都不同,导致 prompt 前缀字节级不匹配,KV cache 无法复用。

解决方案:规范化算子 ϕ 将易变运行时标记替换为静态占位符

易变字段稳定占位符
工作目录路径
活跃时间戳
会话标识符
关键操作:将工具定义从系统提示主体重定位到动态上下文块末端,消除不同任务间的结构变异。

效果:

平台原始缓存命中率稳定化后命中率
PinchBench38.7%79.2%
Claw-Eval67.2%83.1%
缓存预热效果:稳定化后,PinchBench 77.24% 的任务获得 5,120+ token 的缓存预热;Claw-Eval 59.6% 的任务获得 6,144 token 预热。

2.3 Observation Reduction(观察缩减)

在稳定前缀的基础上,对开放世界环境反馈做有损但可恢复的压缩:

缩减类型目标具体操作
HTML Slimming网页内容移除非必要标记和属性
执行输出截断终端/工具输出保留 600 字符前缀 + 400 字符后缀
图像降采样多模态输入位图≤100KB, SVG≤50KB
重复读取去重冗余工具调用哈希去重,相同调用上限 5 次
布局清理格式噪声移除代码围栏、行号前缀、连续空白
关键机制:压缩后的内容存入外部工件注册表(按内容哈希索引),当后续任务需要完整信息时,动态恢复。

关键超参数:

  • triggerMinChars = 2200(触发缩减的最小字符数)
  • maxToolChars = 1200(工具片段路由阈值)
  • 全局截断阈值:50k 字符
---

三、局部层:Lifecycle-Aware Eviction(生命周期感知驱逐)

3.1 三状态生命周期模型

TokenPilot 把上下文段(chunk)分为三个状态:

active --(任务完成)--> completed --(残余效用=0)--> evictable

状态条件处理方式
active任务正在执行完全保留,效用 = 1
completed任务完成但残余效用非零保留,后续任务可能依赖其输出
evictable残余效用为零安全驱逐,替换为指针桩

3.2 残余效用估计器

核心问题:如何判断一个已完成的任务是否还有"残余效用"?

TokenPilot 用一个 轻量级模型(Qwen3.5-35B-A3B)作为零样本验证器,每 B=3 轮执行一次批量评估:

$$ ΔR_i(j) = ⟨E_j, Ψ_j⟩ = E(V_i, R_{i-1}) $$

  • 输入:压缩后的历史视图 $V_i$
  • 输出:语义增量(仅返回 taskUpdates,非完整注册表)
  • 成本:连续 PinchBench 流总运营成本 < 💲0.03
关键设计:批量门控执行(batch-turn schedule),不是每轮都驱逐,而是攒够 B=3 轮统一处理,避免逐轮文本突变破坏缓存。

3.3 保守驱逐策略

与激进方法对比:

  • 无残余效用估计(如 Keep-Last-N):任务完成立即驱逐 → 后续任务需重新读取文件
  • TokenPilot:保留文档结构知识 → 后续任务直接定位目标内容块
消融实验显示,移除残余效用估计会导致性能下降 4.7%,成本上升 40.4%(补偿性重试)。

---

四、双粒度架构的整体数据流

原始观察(HTML/日志/工具输出) ↓ [摄入门控] 区分 $Ω_int$ vs $Ω_env$ ↓ [稳定化] 替换易变标记 → 字节级相同前缀 ↓ [缩减] 结构提取 + 哈希索引 → 压缩预览 + 注册表条目 ↓ [生命周期跟踪] 状态估计 + 残余效用评估 → 语义增量更新 ↓ [缓存优化] 命中读取 + 未命中预填充 → 成本优化上下文

设计原则全局层实现局部层实现
确定性规则驱动的摄入处理模型驱动的状态估计
连续性跨任务字节级前缀匹配批处理避免逐轮突变
安全性恢复工具 + 频率门控三状态缓冲 + 证据验证
经济性消除开放世界噪声延迟驱逐至效用过期
---

五、实验结果:成本降低 61%-87%,性能不降反升

5.1 PinchBench(Isolated Mode)

Isolated Mode 评估每个任务在独立会话中的行为,聚焦单任务性能。

方法Overall ↑Cost (💲) ↓Cache ReadCache Miss
Vanilla80.58.316.184M8.753M
LLMLingua-276.95.7814.241M3.975M
SelectiveContext76.55.7911.273M4.642M
LCM77.85.1016.018M3.064M
MemoBrain78.13.3610.200M2.107M
AgentSwing78.46.774.534M7.129M
Keep-Last-N80.44.2612.813M2.657M
MemOS79.47.8129.018M4.573M
TokenPilot81.03.228.893M1.933M
TokenPilot 是唯一一个在降低成本的同时提升性能的方法
  • 成本降低 61.3%(💲8.31 → 💲3.22)
  • Cache Miss 降低 77.9%(8.753M → 1.933M)
  • Overall 提升 0.5 点(80.5 → 81.0)

5.2 PinchBench(Continuous Mode)

Continuous Mode 评估长程共享会话,上下文累积和缓存复用更重要。

方法Overall ↑Cost (💲) ↓Cache ReadCache Miss
Vanilla79.27.2425.015M5.943M
TokenPilot81.32.798.551M1.549M
  • 成本降低 61.5%
  • 性能反而提升 2.1

5.3 Claw-Eval(Isolated Mode)

方法Overall ↑Cost (💲) ↓
Vanilla64.55.16
TokenPilot63.12.27
成本降低 56%,性能仅下降 1.4 点。

5.4 Claw-Eval(Continuous Mode)——成本灾难

这是最有说服力的一组数据:

方法Overall ↑Cost (💲) ↓Cache Read问题
Vanilla63.481.52709.845M无限制增长
LLMLingua-259.082.91575.654M压缩失效
MemOS57.724.1249.742M缓存未命中高
TokenPilot60.810.5821.430M最优控制
在连续模式下,Vanilla 的推理成本从 isolated 的 💲5.16 暴涨到 💲81.52(16 倍),因为历史上下文无限制累积。

TokenPilot 将成本控制在 💲10.58,降低 87%,同时保持可接受的性能。

---

六、消融实验:每个组件值多少钱?

6.1 渐进式消融(PinchBench Continuous)

配置OverallCost (💲)说明
Vanilla79.27.24基准
+ Global (IAC)79.94.22成本↓41.7%,Cache Miss↓73.3%
+ Local (LAE)81.32.79成本再↓33.9%,Cache Read↓68.0%
Global 层(Ingestion-Aware Compaction) 是主要的成本降低来源,通过前缀稳定化将 cache miss 转化为 cache hit。

Local 层(Lifecycle-Aware Eviction) 进一步降低 cache read,通过保守驱逐减少上下文长度。

6.2 前缀稳定化组件分析(PinchBench Isolated)

配置OverallCost (💲)效果
Vanilla80.478.31基准
+ Cache Stabilization80.814.35成本↓47.7%
+ Reduction Pass80.922.87再↓34.0%
- Recovery Tool77.124.03移除恢复工具:性能↓4.7%,成本↑40.4%
恢复工具是关键:如果压缩后的消息缺乏关键信号,没有恢复机制会导致补偿性重试,反而增加成本。

6.3 批处理大小 B 的影响

BContext WindowEqual InputCache Hit Rate问题
1过早截断,布局破坏
3最优最优最优平衡精度与连续性
5略高略高轻微内存膨胀
7内存膨胀,延迟增加
B=3 是论文验证的最优平衡点。

---

七、与 OpenClaw 的集成:即插即用的插件化设计

TokenPilot 已经被集成到 OpenClaw 作为插件(LightMem2),这是一个很重要的工程决策:

{
  "plugins": {
    "entries": {
      "tokenpilot": {
        "enabled": true,
        "config": {
          "proxyBaseUrl": "https://your-endpoint/v1",
          "proxyApiKey": "your_key",
          "modules": {
            "stabilizer": true,
            "reduction": true,
            "eviction": false
          }
        }
      }
    }
  }
}

三种运行模式

模式StabilizerReductionEviction适用场景
conservativeonlighteroff对稳定性要求极高的场景
normalonbalancedoff默认推荐,单任务/短会话
aggressiveonaggressiveon长程共享会话,成本敏感

运行时命令

/lightmem2 status       # 确认组件激活
/lightmem2 report       # 查看节省统计
/lightmem2 doctor       # 检查安装和配置
/lightmem2 visual       # 打开可视化页面
/lightmem2 mode normal  # 切换模式

未来适配计划

TokenPilot 被设计为可复用组件,当前只适配了 OpenClaw,未来计划:

  • Codex CLI(计划中)
  • Claude Code(计划中)
---

八、局限性与未来方向

8.1 当前局限

1. 模型估计器可能误分类:在高度模糊或稀疏的交互模式下,Qwen3.5-35B-A3B 的零样本验证器可能误判任务残余效用 2. 超参数需调优:频率阈值 τ 和批大小 B 在不同部署环境和任务分布上可能需要调整 3. 依赖前缀缓存支持:前缀稳定化组件需要后端支持 prefix caching,对没有此功能的 provider 无效 4. 连续模式假设:同类别任务分组为连续会话;如果是高度异构的混合任务流,prefix 复用率会自然降低

8.2 未来方向

1. 与多 Agent 环境结合:当前只考虑单 Agent 会话,多 Agent 协作时的跨上下文 KV-cache 通信拓扑值得探索 2. 自适应阈值:根据任务类型动态调整 τ 和 B,而非固定值 3. 蒸馏为技能:论文提到 memory.autoDistill 功能,可以将驱逐的任务蒸馏为可复用技能(类似 SkillClaw 的方向) 4. 更大规模验证:当前主要在 123/161 任务上验证,需要更大规模的工业级评估

---

九、总结

TokenPilot(LightMem2)是长程 LLM Agent 上下文管理领域的一个工程性突破

它的核心贡献不是某个单一算法,而是对问题的重新定义

> "成本优化不是单纯减少 token 数,而是最大化缓存命中率的连续性。"

三个关键设计值得记住:

1. 前缀稳定化:用静态占位符替换易变运行时标记,将缓存命中率从 38.7% 提升到 79.2% 2. 摄入感知压缩:在观察进入上下文之前就降噪,而不是事后压缩 3. 生命周期感知驱逐:保守的批量驱逐,基于残余效用而非简单的时间衰减

实验结果也足够硬核:

  • Isolated 模式:成本降低 56-61%,性能不降反升
  • Continuous 模式:成本降低 61-87%,控制住长程会话的"成本灾难"
  • 与所有 baseline 对比:唯一一个同时实现低成本 + 高性能的方法
对于正在构建长程 Agent 系统的开发者来说,TokenPilot 提供了一个即插即用的、有理论支撑的上下文管理方案。它已经集成到 OpenClaw,可以直接用。

---

参考

  • Xu, B., Xue, Z., Chen, D., et al. (2026). TokenPilot: Cache-Efficient Context Management for LLM Agents. *arXiv preprint* arXiv:2606.17016.
  • 代码:https://github.com/zjunlp/LightMem2
  • 前身工作:Fang, J., et al. (2025). LightMem: Lightweight and Efficient Memory-Augmented Generation. CoRR, abs/2510.18866.
  • 相关基准:PinchBench, Claw-Eval

#论文 #zjunlp #TokenPilot #LLMAgent #上下文管理 #缓存优化 #成本优化 #OpenClaw #小凯

👍 1
💬 讨论回复 (0)
推荐

🌟 智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

🎁 领取 2000万 Tokens