跳到主要内容
← 返回思考

模型与算法 / Agent Memory / 强化学习

Agent 的记忆,不是一个更大的资料库

我重读 AgeMem 的六个记忆工具和 noRL 实验,想弄清 Agent 怎样决定记住、检索和遗忘,也重新划定 AI 修改我 Obsidian 记忆的权限。

本文结构
  1. 我第一遍看错了 Figure 1
  2. Table 2 才是我信它的地方
  3. 六个工具不值钱,训练顺序才值钱
  4. 放进我的 Obsidian,我只敢开放一半权限
  5. 论文还没有碰到最难的问题

我读这篇论文,是因为它正好撞上了我最近在做的外脑系统。

第一遍看到 AgeMem 的六个动作,我其实有点失望:Add、Update、Delete、Retrieve、Summary、Filter。这不就是把一组 Memory API 交给 Agent 吗?

我的 Obsidian 现在也能保存材料、按关键词或向量召回,再让模型基于笔记回答问题。如果 AgeMem 只是把数据库的增删改查包成 Tool Calling,它并没有比一个写得更复杂的 Memory Manager 高明多少。

我是在 Table 2 改变主意的。

Qwen2.5-7B 接上这六个工具、但不做强化学习时,平均分只有 33.43,甚至低于 Mem0 的 37.14。工具全有,结果反而更差。AgeMem 这篇论文真正研究的不是“Agent 能不能操作记忆”,而是一次错误的 Update、Filter 或 Retrieve,能不能在任务失败以后反过来惩罚它。

这才是它和资料库的区别。

我第一遍看错了 Figure 1

论文 Figure 1 对比静态短期记忆、独立记忆管理器与 AgeMem 的统一长短期记忆管理
图 1论文 Figure 1 对比静态短期记忆、独立记忆管理器与 AgeMem 的统一长短期记忆管理

图源:Yi Yu et al., Agentic Memory, Figure 1, arXiv:2601.01885v3。原图保持英文,仅用于论文评论与机制说明。

我第一遍把最右边看成“整合得更好的 Memory Manager”。左边是静态上下文,中间多了一个长期记忆管理器,右边则把长期记忆和短期记忆都接起来。很像系统架构升级图。

但论文要改的其实不是模块数量,而是谁做决定。

传统做法里,长期记忆什么时候写入、短期上下文什么时候压缩,通常是系统在模型外面定好的。可能按 token 数触发 Summary,按相似度取回 top-k,检测到冲突后再走一段固定的 Update 规则。主 Agent 使用处理好的结果,但不需要为这套处理过程负责。

AgeMem 把这些动作塞进了 Agent 自己的 action space。每一步,它看到当前上下文 C_t、长期记忆 M_t 和任务 T,然后决定继续回答,还是先动一次记忆。

Add、Update、Delete 管长期记忆。Retrieve、Summary、Filter 管眼前的上下文。六个动作单独看都不新,放到同一条任务轨迹里才有意思:模型这一步删掉的东西,可能十步以后才让任务失败;此刻留下的一段噪声,也可能在后面诱导出一次错误更新。

换句话说,STM 和 LTM 不只是两个存储层。它们在争同一份注意力预算,而且会互相污染。

Table 2 才是我信它的地方

论文在 ALFWorld、SciWorld、PDDL、BabyAI 和 HotpotQA 上做了评估,使用 Qwen2.5-7B-Instruct 和 Qwen3-4B-Instruct 两个 backbone。强化学习只在 HotpotQA 的训练集上进行,然后直接迁移到其他任务。

我最在意的是下面这一小段,而不是总榜第一:

Backbone 最佳记忆基线 AgeMem-noRL AgeMem
Qwen2.5-7B 37.14(Mem0) 33.43 41.96
Qwen3-4B 45.74(A-Mem) 45.59 54.31

数据来源:论文 Table 2。这里的平均值混合了 Success Rate、Progress Rate 和 LLM-as-a-Judge 等不同指标,只能在论文自己的评估口径里做相对比较,不能当成通用准确率。

noRL 版本很关键。它已经拥有完整工具,但 Qwen2.5 上比 Mem0 还低 3.71 分,Qwen3 上也没有赢过 A-Mem。加入 step-wise GRPO 后,两组结果分别涨了 8.53 和 8.72 分。

这组对照把很多 Agent Demo 的问题暴露得很直接:Tool Calling 跑通,只能证明模型会按格式调用接口。它不知道什么时候值得写、什么时候应该忍住,也不知道一次看起来合理的删除会不会毁掉后面的任务。

我原本还猜,强化学习可能只是让 Agent 少调几次工具,靠节省上下文拿到收益。数据不是这样。Qwen2.5 的平均调用次数从 4.33 增到 4.92,Qwen3 从 7.50 增到 8.67;以前几乎不用的 Update、Delete 和 Filter 开始出现,Retrieve 反而略有下降。

它没有变得更克制。它只是没那么爱无目的地捞资料了,开始真的编辑状态。

我读完 Table 2 与 Table 3 后整理的一页推理手记:工具齐全不等于形成记忆策略,step-wise GRPO 让任务结果能够追责更早的记忆动作
图 2我读完 Table 2 与 Table 3 后整理的一页推理手记:工具齐全不等于形成记忆策略,step-wise GRPO 让任务结果能够追责更早的记忆动作

数字取自论文 Table 2 与 Table 3;红笔批注和 GRPO 轨迹示例是我的阅读判断,不是论文原文。

六个工具不值钱,训练顺序才值钱

AgeMem 没有一上来就把模型扔进完整任务里。训练分了三段。

先练长期记忆。模型从任务之前的对话和材料里做 Add、Update、Delete,学习把原始文本变成之后还能使用的状态。

再练短期上下文。研究者往上下文里注入干扰,让模型做 Retrieve、Summary 和 Filter。这里考的不是“记住多少”,而是任务走到一半时,哪些东西还应该占着窗口。

最后才把两组动作放回完整轨迹。Agent 一边完成任务,一边改自己的长短期记忆。step-wise GRPO 把轨迹末端的结果传回前面的步骤:第 8 步答错了,原因可能是第 2 步把关键状态 Filter 掉了,那次早期动作也得吃到惩罚。

这个训练顺序比六个工具本身更能说明论文的判断。记忆操作的价值经常不会马上出现。一次 Add 可能要很久以后才有用,一次 Delete 也可能在当下让上下文更干净,直到后面需要那条信息时才暴露问题。

数据库关心的是操作有没有成功。Agent 的记忆策略还得关心:这个操作最后把它带去了哪里。

放进我的 Obsidian,我只敢开放一半权限

这篇论文让我想改的,不是 Obsidian 的存储结构,而是 AI 进入外脑的那个节点。

现在的流程是我先整理,AI 再检索。下一步可以变成:原始材料进来以后,AI 不只打标签,而是提出一次明确的记忆动作。

原始笔记
  -> AI 提议:Add / Update / Delete
  -> 同时给出来源、时间、冲突对象和理由
  -> 我确认长期记忆是否变化
  -> 回答时显示本次使用了哪些记忆版本

比如我在某个很糟糕的晚上写下“我不想再做现在的工作”。它可以被 Add 成一条有时间的经历,但不能直接 Update 成“陈全长期排斥这类工作”。后者会影响以后每一次职业建议,而且一句新对话很难把这个印象洗掉。

所以我暂时只敢让 AI 自动提出动作,不让它静默执行 Update 和 Delete。它改变的是“从材料里找候选记忆”这个环节;什么能代表我,旧判断要不要保留版本,还是我的决定。

这比一句“让 AI 更懂我”麻烦多了。不过如果看不到来源、版本和修改记录,我也不想被它懂。

论文还没有碰到最难的问题

AgeMem 的 Agent 有明确任务。房间走出去没有,问题答对没有,规划完成没有,最后都能拿到一个奖励。

个人记忆没有这么干净的终点。

一条记忆可能让 Agent 更快完成任务,同时让它对一个人形成错误的稳定印象。一次 Summary 可能保住了工作所需的事实,却把当时真正重要的情绪压没了。模型为了提高成功率学会 Delete,也不代表它有资格决定什么已经不值得留下。

论文的实验还只覆盖两个较小的 Qwen backbone,短期上下文里的干扰项也是合成的。它证明了统一训练记忆动作在这组 benchmark 上有效,没有证明同一套奖励能管理一个人几年的经历。部分评估又依赖 LLM judge,模型偏好的“好记忆”与用户愿意保留的记忆,未必是一回事。

所以我现在不会说 AgeMem 解决了个人 Agent 的记忆。

它只让我确认了一步:把向量库做大没有用,给 Agent 六个工具也不够。只要记忆会被模型改写,记忆操作就得进入训练,还得留下可以追责和拒绝的痕迹。

至于我的外脑,现阶段还是让 AI 提议,人来签字。

这篇文章会随着系统继续变化。

继续阅读