论文
记忆机制
Memento: Fine-tuning LLM Agents without Fine-tuning LLMs
Memento:不微调 LLM,靠案例记忆在线改进 agent
Huichi Zhou, Yihang Chen, Siyuan Guo, et al. (UCL / Huawei Noah's Ark Lab) · UCL / Huawei Noah's Ark Lab · arXiv · 2025-08 · 被引 95
一句话UCL 与华为诺亚提出把 agent 持续学习建模为 Memory-augmented MDP:经验以 (state, plan, reward) 案例存入 Case Bank,用检索策略(非参数相似度或可学习 Q 函数)在 planning 时取回旧案例当参考,全程不动 LLM 权重。GAIA validation 87.88%(Pass@3)、DeepResearcher 66.6% F1,OOD 数据集上案例记忆带来 +4.7~9.6 个百分点。
这是什么
现有让 agent 从经验中改进的路子要么是手写死的 reflection workflow,要么要对 LLM 做梯度更新(RL 微调),成本高且容易灾难性遗忘。Memento 的立场是:把'学习'从模型权重挪到外部记忆里。作者把这件事形式化为 Memory-augmented MDP(M-MDP):在标准 MDP 之外加一个记忆空间 M,agent 每步先从 Case Bank 里检索一个旧案例 c,再让冻结的 LLM 以 (当前状态, 案例) 为条件生成动作,事后把 (s, a, r) 写回记忆——即经典 Case-Based Reasoning(CBR)的 Retrieve-Reuse-Retain 循环套在 LLM agent 上。
系统实例化为 deep research agent:GPT-4.1 做 planner(带 CBR),o3/o4-mini 做 executor(MCP client,接 SearxNG 搜索、Crawl4AI 爬虫、代码沙箱、多模态文档解析等一套 MCP 工具)。成功和失败的轨迹都会入库,检索时把相似旧案例(含失败案例)拼进 planning prompt。2025 年 8 月挂出后热度很高,GitHub 2.6k stars,S2 引用已 95 次,是'无梯度持续学习 agent'路线被引用最多的代表作之一。
Memento 双阶段架构。左(Stage 1)case-based planning:LLM planner 从 Case Bank 读相似案例(非参数相似度或在线更新的 Q 函数 μ_θ)辅助任务分解,结果写回;右(Stage 2)tool-based execution:LLM executor 作为 MCP client 调用搜索/爬虫/代码/多模态等工具,子任务与工具日志分别存 Subtask/Tool Memory。机制与做法
M-MDP + soft Q-learning 的理论框架
论文把案例检索本身当成一个可优化的策略 μ(c|s,M):整体策略 π(a|s,M) = Σ_c μ(c|s,M)·p_LLM(a|s,c),LLM 部分冻结,只学 μ。在最大熵 RL 框架下推出最优检索策略是 Q 值的 softmax,再用 episodic control 式的 kernel 估计 + TD learning 来学 Q(cbr.tex 中 Algorithm 1)。这是论文的理论卖点:'fine-tuning agent' 变成学一个轻量检索器,而不是动 LLM。
但要注意:落到实现时论文自己承认(§3.2 Parametric Memory Retrieval),因为 CBR 只用在 planning 且是单步设定,TD target 塌缩成 immediate reward,'without bootstrapping, the updating reduces to a supervised learning paradigm'——最终训练目标就是一个二分类 cross-entropy:Q(s,c;θ) 预测'这个案例对当前任务有没有用'(reward 0/1)。Q 网络是 SimCSE 句向量 + 两层 MLP。所以实际跑的东西比前面整节 soft Q-learning 推导朴素得多。
DeepResearcher 上 5 轮迭代的'持续学习曲线'。看图注意 y 轴从 78% 起画:parametric CBR(浅色)最终 85.4%,但无 CBR 的 baseline(深色)同期也涨到 84.5%——三条线一起涨,CBR 的净增益其实只有约 1 个点,远没有视觉上那么陡。Planner-Executor 双阶段 + 三种记忆
Stage 1 Case-Based Planning:planner(GPT-4.1)收到任务后从 Case Bank 检索 K 个案例三元组 (任务, plan, 成败) 拼进 prompt,生成子任务分解;每轮迭代结束根据执行历史判断是否 replan,任务完成时才把新案例写库。为省空间只存每条轨迹最后一步的 (s, a, r)。Stage 2 Tool-Based Execution:executor(o3)作为 MCP client 逐个执行子任务,工具调用日志存 Tool Memory(按子任务隔离),子任务结果存 Subtask Memory。
检索有两个变体:non-parametric 直接用 SimCSE 向量余弦相似度取 TopK;parametric 用上面训好的 Q 函数打分取 TopK。消融显示 K=4 最优(F1 64.5/PM 78.5),K 加到 32 反而略降——作者结论是 CBR 要的是小而精的记忆,和 few-shot '例子越多越好'不同。
一些实用发现
Fast planner 好于 slow planner:GPT-4.1(不深思)当 planner + o3 executor 拿到 70.91% pass@1,而 o3 自己当 planner 只有 63.03%;Qwen3-32B 关思考模式(53.94%)也好于开思考(40.61%)。trace 分析说 reasoning 模型当 planner 容易跳过分解直接作答、或输出冗长 plan 误导 executor。对做 planner-executor 架构的人是个有用的反直觉数据点。
成本方面:GAIA Level 1 每题约 26k 输入 / 4.7k 输出 token,Level 3 涨到 121k / 9.8k,主要开销在整合多步工具输出的输入侧,而不是生成侧。
关键结果
- GAIA validation 87.88%(Pass@3,记忆从零累积 3 轮)、test 79.40%(只用 validation 攒下的 case bank);pass@1 平均是 70.91%——标题战绩用的是 Pass@3 口径。
- DeepResearcher 七个 QA 数据集平均 66.6% F1 / 80.4% PM,约为 CoT+RAG baseline(37.7% F1)的 1.8 倍,超过训练型 SOTA 方法。
- OOD 泛化(在 NQ/TQ/HotpotQA/2Wiki 攒记忆,在 Musique/Bamboogle/PopQA 测试):CBR 带来 +4.7~+9.6 绝对百分点。
- 持续学习曲线(DeepResearcher,5 轮迭代):parametric CBR 78.65→85.44;但注意无 CBR 的 baseline 同期也从 78.65 涨到 84.47,CBR 本身的净增益每轮只有约 0.4~1.8 个点。
- 检索数 K=4 最优,K=32 反而下降;案例记忆是'小而精'而非'多多益善'。
- SimpleQA 95.0%(超 WebSailor 93.5%);HLE 24.4% PM,与 GPT-5(25.32%)差 0.92 个点。
- 消融发现 DeepResearcher 上'裸 executor 接工具'反而比离线 executor 掉 18 个 F1,作者归因于数据污染——七个 QA 集的答案很多已在模型参数里。
实证核查
有水分代码真实开源且社区活跃,案例记忆有增益的核心结论方向上可信;但'memory-based online RL'的理论包装远超实际实现(线上跑的是离线监督训练的二分类检索器),GAIA 头条数字是 Pass@3 且依赖 GPT-4.1+o3 闭源组合,复现流程至今没人跑通。
论文核心卖点:neural case-selection policy 通过 soft Q-learning + kernel-based episodic control 在环境反馈下'在线持续更新'(Algorithm 1)。
issue #31(open,3 条附议)指出代码里的 MemoryRetrieverClassifier 只有离线监督训练,找不到推理期在线 Q 更新;作者未回应。issue #30 中作者让提问者去看 memory/train_memory_retriever.py,追问'哪部分对应 soft-q'同样无下文。论文 §3.2 自己也承认单步设定下 TD 塌缩成监督二分类——cbr.tex 里整节 soft Q-learning 推导与实际系统关系不大。
记忆'continually updated based on environmental feedback',边执行边学习。
issue #19(closed)发现开源版 no_parametric_cbr.py 中记忆只在 __init__ 加载一次、整个 batch 执行期间从不刷新;作者承认'整理代码时漏掉了 reload 步骤'并补修。即公开代码曾在最核心机制上与论文描述不符,论文数字来自未公开的'raw code'。
GAIA validation 87.88% top-1、test 79.40%。
87.88% 是 Pass@3(三次尝试对一次即算对),同一论文 Table(fast/slow 消融)给出的 pass@1 是 70.91%。复现方面 issue #35('能否给出复现 GAIA 结果的步骤')open 无回复;pipeline 依赖 GPT-4.1 planner + o3 executor + SearxNG 实时搜索,外部无法固定环境复现。未见第三方复现报告。
parametric memory 开箱可用,'automatically add the data in both training data and memory files'(作者在 issue #27 的答复)。
issue #27 后续三条追问指出冷启动死锁:训练 retriever 需要 training_data.jsonl,但生成 training_data.jsonl 又要求已有 best.pt checkpoint;仓库既没有 starter checkpoint 也没有种子数据,该问题无解答。issue #36(要 Musique 实验的 case bank 轨迹)同样无回复。
持续学习曲线证明记忆机制带来累积改进(Figure iteration,78.65→85.44)。
论文 Table(table:ec)显示无 CBR 的 baseline 在同样 5 轮迭代里也从 78.65 涨到 84.47——曲线的大部分涨幅与案例记忆无关(可能来自迭代重跑本身),CBR 净贡献每轮约 0.4~1.8 个点,图的 y 轴从 78 起画放大了视觉差距。作者也坦承约 3k 数据下 case bank 很快饱和、几轮后收益趋零。
与我们方向的关系
对 continual-learning 方向,这篇是'把学习放进记忆而非权重'路线的标杆:M-MDP 的形式化、案例含失败轨迹、只存轨迹末步、K=4 小记忆最优、fast planner 优于 reasoning planner,这些设计点和消融数据都值得直接借鉴。它与 AgentFly/训练型方法构成天然对照组:同样的 GAIA/DeepResearcher 战场,一边动权重一边只动记忆。
但引用它时要小心口径:讲机制引 non-parametric CBR(相似度检索)最稳,那部分代码可核、增益一致;'在线 RL 学检索策略'的说法建议弱化为'离线训练的案例效用分类器'。另外它的教训也有参考价值——检索是对全库算相似度 O(n),issue #25 指出记忆一大就是瓶颈,记忆压缩/剪枝在 TODO 里还没做,这正是可以做增量工作的缝。
阅读笔记
仓库从 Agent-on-the-Fly/Memento 迁移到 Memento-Teams/Memento(2.6k stars,MIT,最后 push 2025-10)。工具链部署较重:SearxNG docker + Chunkr/Jina/AssemblyAI 一堆 API key + FFmpeg + playwright。2025-09 加了 vLLM 本地 executor 支持,但 README 自己承认开源模型 executor 验证有限。closed issue 里有不少疑似刷贡献的 CI/docs PR(#40-47),看 issue 时注意过滤。
材料清单
TeX 源码已存档:Raw/memento/source/
同类条目