论文标题:PlugMem: A Task-Agnostic Plugin Memory Module for LLM Agents 作者:Ke Yang, Zixi Chen, Xuan He, Jize Jiang(蒋积泽), Michel Galley, Chenglong Wang, Jianfeng Gao, Jiawei Han, ChengXiang Zhai arXiv:2603.03296 机构:UIUC、清华大学、微软研究院
---
一句话结论
Agent 的记忆不该是「行车记录仪」——把每一段经历原封不动存下来,用的时候翻录像。PlugMem 的洞察来自认知科学:人类记住的不是「那天发生了什么」,而是「那件事告诉我什么」和「下次该怎么做」。他们把这种抽象过程形式化成一个即插即用的记忆模块,在三个完全不同的任务上统一击败所有基线,同时把 token 消耗砍掉 86%-99%。
---
先搞清楚问题:为什么 Agent 的记忆要么死板要么臃肿
现有记忆设计面临一个根本张力:
左边:任务特化记忆(如 Zep、AWM、LiCoMemory)
- 针对特定任务优化,效果确实好
- 但换个任务就要重新设计——你在对话场景里攒的记忆,拿到网页 Agent 里基本废了
- 通用,哪儿都能用
- 但原始记忆冗长,充满低信息量的 episodic 细节——你把一整段对话记录塞进 prompt,真正有用的可能只有三句话
---
核心洞察:记忆的三层结构(来自认知科学)
作者引用了 Tulving (1972) 和 Squire (2004) 的经典记忆分类理论,把人类记忆映射到 Agent 架构中:
| 人类记忆类型 | 内容 | Agent 映射 | PlugMem 的图节点 |
|---|---|---|---|
| Episodic(情景记忆) | 详细经验记录 | 原始交互轨迹 | Source 节点(可追溯的证据层) |
| Semantic(语义记忆) | "知道什么"——事实命题 | 事实性知识 | Proposition 节点(概念索引指向重型载荷) |
| Procedural(程序记忆) | "知道怎么做"——行动策略 | 程序性知识 | Prescription 节点(意图索引指向工作流) |
---
技术框架:从原始轨迹到知识图的三步转化
Step 1:标准化(Structuring)
把异构的原始轨迹统一成结构化 episodic 表示:
$$e_t = (o_t, s_t, a_t, r_t, g_t)$$
| 字段 | 含义 | 提取方式 |
|---|---|---|
| $o_t$ | 原始观察 | 直接输入 |
| $s_t$ | Agent 状态 | LLM 推导:基于前一状态、动作、新观察 |
| $a_t$ | 动作 | 直接输入 |
| $r_t$ | 奖励(动作对子目标的效果) | LLM 评估 |
| $g_t$ | 子目标 | LLM 推断 |
Step 2:知识诱导(Knowledge Induction)
从标准化后的 episodic 序列中提取两类知识:
Semantic 知识——原子命题 + 概念标签:
> 命题:"Tam Sventon, known in Swedish as Ture Sventon, is a fictional private detective based in Stockholm." > 概念集:{Tam Sventon, fictional private detective, Stockholm}
Procedural 知识——(意图, 处方) 对:
| 组件 | 示例 |
|---|---|
| Intent | "To find a good's lowest price" |
| Prescription | "search → sort by price → verify minimum across variants" |
| Return Score | LLM 评估的质量分数 |
Step 3:知识图构建
三层图架构:
┌─────────────────────────────────────────┐
│ Semantic Subgraph G_S │
│ Concept Nodes ←──mentions── Proposition Nodes │
│ ↑ │
│ └───────────────────────────────────┘
│ │ proves
├─────────────────────────────────────────┤
│ Procedural Subgraph G_P │
│ Intent Nodes ←──solves── Prescription Nodes │
│ ↑ │
│ └───────────────────────────────────┘
│ │ proves
├─────────────────────────────────────────┤
│ Episodic Layer G_E │
│ Source Nodes (Event Windows) │
│ Standardized (g,s,a,r,s') tuples │
└─────────────────────────────────────────┘
与 GraphRAG 的关键区别:
| 维度 | GraphRAG | PlugMem |
|---|---|---|
| 图节点单元 | 实体或文本块 | 知识单元(命题/处方) |
| 边语义 | 实体间关系 | 知识-概念/意图层级关系 + provenance 追溯 |
| 检索目标 | 多跳事实关联 | 决策相关的知识推理 |
| 记忆→知识转换 | 无显式抽象 | 核心设计 |
---
检索与推理:抽象-特异性交织策略
检索不是简单的相似度匹配,而是一个多跳抽象路由过程:
输入:查询 Q,编码为 embedding q
初始化:C_0 = top-k 低层节点(命题/处方)按 q 相似度
对于每跳 t:
1. 基于 (Q, C_t) 生成抽象查询 q_a^t
- G_S 中:q_a^t = 概念集合
- G_P 中:q_a^t = 意图集合
2. 匹配高层节点(概念/意图)→ 路由信号
3. 激活相邻低层节点 → 加入 C_{t+1}
4. 若 |C_t| > budget:重排序并剪枝
关键:高层节点(概念/意图)只作为中间遍历信号,不直接返回给 Agent。这实现了「跳跃式」检索——从具体查询跳到抽象意图,再落到另一个具体处方。
推理模块最后做一步压缩:把检索到的多个可能重叠、冗长的知识片段,蒸馏成「紧凑、任务对齐的可执行摘要」。
---
实验结果:数字不说谎
LongMemEval(长程对话问答)
| 方法 | 类型 | 准确率 | 平均 Token | 信息密度 |
|---|---|---|---|---|
| All Context | 基线 | 62.4% | 107,000 | 4.2e-5 |
| Vanilla Retrieval | 任务无关 | 63.6% | 3,743 | 1.2e-3 |
| LiCoMemory | 任务特化 | 73.0% | 5,915 | 9.3e-4 |
| PlugMem | ours | 75.1% | 363 | 1.6e-2 |
- 比最佳任务特化方法 +2.1% 准确率,同时 -93.9% token(5915→363)
- 信息密度提升:~17× 相比 Vanilla Retrieval,~38× 相比 All Context
HotpotQA(多跳知识检索)
| 方法 | EM | F1 | Token | 信息密度 |
|---|---|---|---|---|
| Vanilla Retrieval | 51.7 | 62.7 | 659 | 1.2e-2 |
| HippoRAG2 | 60.0 | 73.3 | 595 | 1.9e-2 |
| PlugMem | 61.4 | 74.1 | 82 | 1.4e-1 |
- 比最佳任务特化方法 +1.4% EM, +0.8% F1,-86.3% token
- 信息密度 1.4e-1 bits/token,接近 Gold Context 上界(1.6e-1)
WebArena(网页 Agent 任务)
| 方法 | Shopping offline | GitLab offline | Token | 信息密度 |
|---|---|---|---|---|
| AWM | 28.2% | 27.3% | 696 | -7.9e-4 |
| A-Mem | 44.3% | 38.5% | 20,516 | 3.4e-7 |
| PlugMem | 58.4% | 55.2% | 301 | 1.4e-3 |
- Shopping offline:58.4% vs AWM 28.2%,+30.2 个百分点
- 比最高 token 方法 A-Mem -98.5% token,同时全面超越性能
- 信息密度差距:~4118×(1.4e-3 vs 3.4e-7)
消融实验:三个模块各管什么
LongMemEval 上的消融(Table 6):
| 变体 | 准确率 | Token | 信息密度 | 结论 |
|---|---|---|---|---|
| PlugMem 完整 | 75.1 | 363 | 1.6e-2 | — |
| No Structuring | 62.8 (-12.3) | 311 | 1.4e-2 | 性能大降,效率略升 |
| No Retrieval | 57.2 (-17.9) | 591 | 6.8e-3 | 最严重 degradation |
| No Reasoning | 72.4 (-2.7) | 9,479 | 5.8e-4 | 性能略降,token 爆炸 26× |
> "Retrieval determines whether memory helps, structuring determines what can be retrieved, and reasoning determines how efficiently retrieved memory can be used."
检索决定「记忆有没有用」,结构化决定「能检索到什么」,推理决定「检索到的东西能被多高效地用上」。
---
费曼式诊断
货物崇拜检测:通过,但有保留
这篇论文做对了一件很重要的事:它没有给 RAG 加更多层装饰,而是追问「检索的单元应该是什么」。
GraphRAG 把实体当节点,本质上还是在文本层面做关联。PlugMem 把「知识」当节点——这是一个质的变化。不是「X 和 Y 有什么关系」,而是「面对这个目标,什么知识能帮我决策」。
但有一个潜在的货物崇拜风险:所有结构化过程都依赖 LLM(状态提取、子目标推断、奖励评估、命题提取、处方提取)。这意味着系统的可靠性受限于 LLM 在这些中间任务上的准确率。论文没有报告这些中间步骤的错误率或级联误差——如果 LLM 在某一步提取错了命题,后续所有检索和推理都在错误的基础上进行。
演示 > 论证:做得不错
信息密度的统一度量(bits/token)是一个很好的演示——它让不同方法、不同任务之间的效率比较有了共同语言。Figure 5 的散点图让人一眼就能看到 PlugMem 在「高效区」的聚集。
但缺少一个东西:端到端的可视化案例。如果有一个具体任务,展示从原始轨迹 → 标准化 → 知识提取 → 图构建 → 检索 → 推理压缩的完整链条,会更有说服力。
诚实边界
作者明确承认了以下局限: 1. 所有中间提取步骤依赖 LLM,级联误差未量化 2. 知识图规模增长后的检索效率未深入研究 3. 动态环境下的知识更新和冲突解决未探索
我的补充质疑:
- Embedding 模型是冻结的(NV-Embed-v2),如果知识语义随时间演化,固定 embedding 是否会过时?
- 三层图的所有边都是 LLM 生成的,图的「真实性」如何保证?是否有自动验证机制?
- **信息密度公式假设了完美的行动标签 $a^*$,实际 Agent 决策中「最优行动」往往是未知的——这个度量在在线学习场景中是否仍然有效?
待深挖的方向
1. 级联误差量化:测量 LLM 在状态提取、子目标推断、知识提取各步骤的准确率,以及错误如何传播到最终决策 2. 动态知识演化:当新知识 contradict 旧知识时,图如何更新?是否有「知识退役」机制? 3. 可学习的 embedding:让概念和意图的 embedding 随训练演化,而非冻结 4. 跨 Agent 知识共享:多个 Agent 能否共享同一个知识图?权限和冲突如何解决? 5. 与 Skill1 的互补性**:PlugMem 解决「记忆该存什么」,Skill1(美团)解决「技能怎么进化」。如果 PlugMem 存储的 Procedural 知识能直接作为 Skill1 的初始技能库,两者结合可能产生更强的跨任务迁移
---
参考链接
- 论文:https://arxiv.org/abs/2603.03296
- 代码:https://github.com/TIMAN-group/PlugMem
- 微软博客:https://msft.it/6017Qc9vv
- 相关前作(美团 Skill1):https://zhichai.net/t/177620081