论文
程序性记忆
Memp: Exploring Agent Procedural Memory
Memp:把 agent 的程序性记忆当成一等优化对象
Runnan Fang, Yuan Liang, Xiaobin Wang, et al. (Zhejiang University / Alibaba) · Zhejiang University / Alibaba · arXiv · 2025-08 · 被引 62
一句话浙大+阿里把 agent 的"经验库怎么建、怎么查、怎么改"拆成 Build/Retrieve/Update 三个模块逐一做消融:在 ALFWorld 上 GPT-4o 成功率从 42.1% 提到 77.9%、步数从 23.8 降到 15.0;GPT-4o 建的记忆迁移给 Qwen2.5-14B 也能涨约 5 个点。ACL 2026 收录,但开源代码残缺,TravelPlanner 部分基本没放出来。
这是什么
LLM agent 做长程任务(几十步、反复试错)时,每个任务都从零探索非常浪费——很多任务共享同样的环境结构和操作套路。人类靠程序性记忆(procedural memory,骑车打字这类"会了就不用想"的技能)避免重复学习,这篇论文想给 agent 补上这块:把历史轨迹蒸馏成可检索、可更新的经验库,新任务来了先查库再动手。
与 Voyager、AWM、AutoManual 这些"存技能"的前作不同,Memp 的定位不是提出某个新记忆格式,而是系统比较记忆生命周期每个环节的策略选择:构建阶段比较存原始轨迹(Trajectory)、抽象成脚本(Script)还是两者结合(Proceduralization);检索阶段比较用 query 向量还是关键词平均(AveFact)做 key;更新阶段比较直接追加(Vanilla)、只留成功轨迹(Validation)、失败后就地修订(Adjustment)。在 TravelPlanner 和 ALFWorld 两个 benchmark、GPT-4o / Claude-3.5-Sonnet / Qwen2.5-72B 三个底座上跑消融。
Memp 框架三模块:Build 把历史轨迹蒸馏成 key-value 记忆(key 是任务描述,value 是步骤指南);Retrieve 按向量相似度为新任务取相关记忆;Update 根据执行成败对记忆库做增/删/改——成功轨迹加入,高错误率记忆修订,低成功率记忆删除。右下小图是理想效果示意(accuracy 升、steps 降)。机制与做法
Build:轨迹 + 脚本混合最好
从训练集里筛出成功轨迹(TravelPlanner 上是 GPT-4o 跑训练 query、留 final_score > 0.8 的,最终只有约 32 条 golden trajectory),然后有三种存法:原样存完整轨迹;让 LLM 把轨迹总结成抽象脚本;或者两者拼一起(Proceduralization)。实验发现脚本泛化更好(ALFWorld test 集上相对更强),完整轨迹在与训练任务相似的 dev 集上更强,混合版全面最优:GPT-4o 在 ALFWorld dev 上 No Memory 39.3 → Proceduralization 87.1。
(a) GPT-4o 建的记忆迁移给 Qwen2.5-14B 后在 TravelPlanner 上的提升:Delivery 91.4→96.6、Commonsense 59.3→65.5、步数 16.9→15.3。(b) ALFWorld 上检索记忆条数的 scaling:0→10 条分数从 40.7 升到 82.5,超过 10 条开始回落,说明检索并非越多越好。Retrieve:向量检索,key 的构造有讲究
记忆用 embedding(text-embedding-3-small)存,新任务来了按 cosine 相似度取 top-k(实验里 k=5、阈值 0.6)。比较三种 key:随机取(Random Sample)、直接用任务 query、以及用 LLM 抽关键词后取平均相似度(AveFact)。AveFact 稍好(GPT-4o TravelPlanner Commonsense 76.0 vs Query 的 73.4),但和随机取的差距(74.6)其实不大——检索策略的收益远小于"有没有记忆"本身。
检索条数也做了 scaling:ALFWorld 上从 0 条到 10 条,分数 40.7 → 82.5 单调上升,超过 10 条开始回落(20 条时 79.3),原因是上下文变长且混入不相关记忆。
Update:失败轨迹拿来修记忆,而不是扔掉
测试集按组顺序执行,每完成一组就更新记忆库。Vanilla 直接把新轨迹全部追加;Validation 只保留成功轨迹;Adjustment 最有意思——当检索到的记忆导致执行失败时,把错误轨迹和原记忆合在一起修订,原地替换。到第 5 组时 Adjustment 相对 no-memory 的 reward 增益达 +0.7、步数省约 14 步,三种策略里最优。这是论文相对前作最有增量的部分:大多数 memory 工作只做 append,这里把删除和修订也纳入了实验。
关键结果
- 记忆构建方式:Proceduralization(轨迹+脚本)在三个底座上全面最优,GPT-4o ALFWorld test 42.1 → 77.9、步数 23.8 → 15.0;Qwen2.5-72B test 41.3 → 77.2。
- 脚本泛化好、原始轨迹在相似任务上好,两者互补——这个 dev/test 差异是论文里少数有解释力的观察。
- 更新策略:带错误修订的 Adjustment 最好,最后一组比次优策略多 +0.7 reward、省 14 步;说明失败轨迹有信息量,不该直接丢。
- 强模型记忆可迁移:GPT-4o 建的记忆库给 Qwen2.5-14B 用,TravelPlanner 完成率 +5%、平均步数 -1.6,Delivery 91.4 → 96.6。
- 检索条数 scaling:ALFWorld 上 top-10 最优(82.5),再多反而降;检索 key 的选择(Query vs AveFact vs 随机)影响远小于记忆本身的有无。
- S2 显示引用 62 次(2025-08 挂 arXiv,一年 62 次在 agent memory 方向属于被广泛引用的探索性工作),已被 ACL 2026 接收。
实证核查
有水分方法论和消融结论本身没发现被推翻的证据,但"Code is available"严重打折:仓库首发时连主入口脚本都没有,TravelPlanner 实现至今未开源,ALFWorld 的记忆构建 prompt 被发现实际是 TravelPlanner 的(作者承认是疏漏),且一作离职后原始代码已不可得。想复现只能按 issue 里作者口述的超参自己重写。
论文摘要声称 "Code is available at github.com/zjunlp/MemP"。
仓库(35 stars)2026-01 才建,首发时 README 里的 run_memp_offline.py / run_memp_online.py 根本不存在(issue #2),config.yaml 缺失(issue #6),ALFWorld 的 prompts 目录也是被 issue #1 催出来的。issue #6 中作者 Rolnand 明确回复:项目是实习期间做的,离职后"much of the source code is unfortunately no longer accessible to me"。
在 TravelPlanner 和 ALFWorld 两个 benchmark 上做了系统实验。
开源代码只覆盖 ALFWorld;TravelPlanner 实现未放出,复现者只能靠 issue #5/#8 里作者口述的设置(GPT-4o 生成、final_score>0.8 筛选、记忆库约 32 条轨迹、top-k=5、阈值 0.6、text-embedding-3-small)自行重写。记忆库只有 32 条轨迹这个规模,论文正文没提。
Build 阶段用 LLM 把轨迹蒸馏成 script/procedural memory(核心机制)。
issue #7 指出:仓库里 ProcedureMem/prompt_generator.py 的 memory 构建 prompt 全是 TravelPlanner 工具(FlightSearch 等),但代码却只支持 ALFWorld——即照 README 跑 ALFWorld,构建记忆用的是错配的 prompt。作者在 issue #6 承认这是开源 review 时的疏漏,让用户自己替换 prompt。也就是说,仓库现状无法原样复现论文任何一个 benchmark 的完整流程。
更新策略实验中 "reflexion-based update" 效果最好(+0.7 reward、省 14 步)。
论文 4.3 节定义的三种策略叫 Vanilla/Validation/Adjustment,正文分析却突然改称 "reflexion-based update",从 Figs/update.pdf(fig03)看指的应是 Adjustment,术语前后不一致。另外 intro 里有一段("In the realm of agents, memory updating is crucial...")是典型的模型生成式空话,与上下文脱节——写作质量粗糙,数字本身未见第三方复现或反驳。
与我们方向的关系
对 continual-learning 方向,这篇的价值不在某个具体数字,而在把"经验库维护"拆成可实验的三个旋钮,尤其是 Update 环节的结论:只 append 是最差策略,失败轨迹用于修订记忆(Adjustment)收益最大。做 agent 经验积累系统时,记忆淘汰和修订机制值得作为一等设计,而不是事后补丁。
强→弱模型的记忆迁移(GPT-4o 记忆给 Qwen2.5-14B 用,+5%)提供了一条实用降本路径:用贵模型离线建库、便宜模型在线执行。另外 top-k scaling 那条曲线(10 条最优、再多反降)提醒记忆检索也有"上下文污染"问题。需要注意的坑:论文自带 reward 信号做 Validation/Adjustment 的前提在真实场景往往不成立(作者自己在 Limitations 里承认),换成 LLM-as-judge 后这套更新机制是否还稳,是开放问题。
阅读笔记
复现建议直接绕过官方仓库(残缺且 prompt 错配),把它当伪代码参考,超参以 issue #8 作者回复为准。ETO 提供了训练集轨迹,仓库 Acknowledgement 有链接。
材料清单
TeX 源码已存档:Raw/memp/source/
复现设置(作者口述)github.com/zjunlp/MemP/issues/8TravelPlanner 完整超参:GPT-4o、temperature=0、final_score>0.8 筛选、约 32 条 golden trajectory、text-embedding-3-small、top-k=5、阈值 0.6
同类条目