FluxMem:当智能体的记忆不再是"死档案",而是一张活着的网

🎯 核心摘要

你有没有碰到过这种情况——给 Agent 接了一套记忆系统,结果它要么检索不到关键信息(欠连接),要么被一堆无关记忆淹没产生幻觉(过连接)?更烦的是,同样的错误它反复犯,完全没有"吃一堑长一智"的能力。

浙江大学 NLP 实验室联合阿里巴巴、MemTensor、同济大学提出了 FluxMem——一个把记忆建模为异构图并让其拓扑结构持续演化的框架。核心思路是把"记忆"从静态存储库变成一张活着的连接网络,通过三阶段演化(初始连接→反馈精炼→长期巩固)自适应地修复缺失链接、剪枝噪声、调整粒度,并把反复成功的经验蒸馏为可复用的"程序性电路"。在 LoCoMo(长对话推理)、Mind2Web(网页导航)、GAIA(通用助手)三个差异极大的基准上均达到 SOTA,其中 LoCoMo 上 95.06 分超越 Full Context 的 81.23 分近 14 个点。

我的判断:这篇论文的真正价值不在于某个单点技巧,而在于把认知科学中"记忆是连接性的动态演化"这个洞察系统性地工程化了。三阶段设计逻辑自洽,PEMS 指标的引入让记忆演化有了可量化的收敛判据。值得细读。


📖 论文信息

字段 内容
标题 Rethinking Memory as Continuously Evolving Connectivity
arXiv 2605.28773
作者 Jizhan Fang, Buqiang Xu, Zhixian Wang, Haoliang Cao, Xinle Deng, Baohua Dong, Hangcheng Zhu, Ruohui Huang, Gang Yu, Ying Wei, Guozhou Zheng, Feiyu Xiong, Haofen Wang, Huajun Chen, Ningyu Zhang(通讯)
机构 浙江大学、阿里巴巴集团、MemTensor、同济大学
日期 2026年5月27日
代码 https://github.com/zjunlp/LightMem

🧠 问题动机:静态记忆为什么不 work

先聊一个直觉。现在市面上的 Agent 记忆系统——Mem0、Zep、A-Mem、MemoryOS——它们的共同假设是什么?

记忆是一个仓库,你往里面存东西,需要的时候检索出来就行。

这个假设在简单场景下没问题。但一旦 Agent 需要长时间跨度地执行复杂任务,问题就来了:

图1:静态记忆管道的失败模式——不准确的连接(欠连接/过连接)和不灵活的单元内容(粒度太粗/太细)

图1:现有静态记忆系统的两大致命缺陷:连接不准确(关键链接缺失 or 噪声链接泛滥)+ 内容不灵活(粒度固定,无法自适应调整)

作者把问题归纳为两类失败:

失败一:连接不准确。 具体表现为两种极端—— - 欠连接:检索不精确导致关键信息被遗漏,Agent 缺乏必要上下文做出正确决策 - 过连接:不加区分地检索一堆相关记忆,引入噪声甚至诱发幻觉

失败二:内容粒度僵化。 现有系统用单一预定义的抽象级别来表示记忆单元。问题在于——有时候你需要的是一个高层概括("这类任务用 groupby 聚合"),有时候你需要的是具体的执行细节("对 CSV 文件先 pandas.read_csv,再 groupby('country').mean()")。固定粒度无法两全。

说实话,这两个问题我在做 RAG 增强的 Agent 时都碰到过。检索 top-k 太大就噪声爆炸,太小就漏掉关键信息。而且同一条经验,在不同任务场景下需要的抽象层次确实不一样。


🏗️ FluxMem 方法:让记忆像大脑一样"长"出来

FluxMem 的核心思想来自认知科学:记忆不是存储,是连接性的持续演化。

大脑的记忆系统做了两件事: 1. 为新信息生成新的神经元(单元层面) 2. 在共同激活的神经元之间建立突触连接,剪枝不相关的连接(连接层面)

FluxMem 把这个认知模型工程化为一个三层异构图 + 三阶段演化的框架。

图2:FluxMem 整体架构——三阶段记忆演化流程,包含初始连接形成、反馈驱动精炼(Link Expand/Prune/Node Reshape)和长期巩固

图2:FluxMem 的三阶段架构。左:初始连接形成(语义/情景/程序性三层检索);中:反馈驱动的精炼循环(链接扩展、链接剪枝、节点重塑三种策略);右:离线长期巩固(聚类相似情景→归纳技能→PEMS 引导迭代演化)

三层记忆图:语义、情景、程序性

FluxMem 把记忆建模为异构图 \(\mathcal{G}=(\mathcal{V}, \mathcal{E})\),节点分三层:

层级 存什么 类比
语义知识层 \(\mathcal{V}_{sem}\) 静态事实、文档 chunk、API 文档 教科书上的知识
情景经验层 \(\mathcal{V}_{epi}\) 具体的状态-动作轨迹(调试日志、工具调用序列) 你做过的每一次实验记录
程序性技能层 \(\mathcal{V}_{proc}\) 蒸馏后的推理模板、多步规划启发式 你总结出的"套路"

情景层是枢纽——它连接着静态知识(通过 \(\mathcal{E}_{ground}\) 边)和蒸馏技能(通过 \(\mathcal{E}_{distill}\) 边)。

这个设计的精巧之处在于:上下文构建 = 动态诱导子图。 每个时间步,系统根据当前观察从大图中"切"出一个局部子图 \(\mathcal{G}_t(q)\),序列化后就是 Agent 的工作上下文。优化上下文的问题就变成了对这个子图做拓扑编辑。

Stage I:初始连接形成

给定当前观察 \(o_t\),系统通过三路检索建立初始连接:

语义检索用了混合打分:

\[\text{Score}(v, o_t) = \frac{\mathbf{v} \cdot \mathbf{o}_t}{\|\mathbf{v}\|\|\mathbf{o}_t\|} + \text{BM25}(v, o_t) + \text{LLM}_{ver}(v, o_t)\]

稠密向量 + 稀疏词汇 + LLM 验证,三路融合。这个组合在 RAG 领域已经是比较成熟的做法了,FluxMem 没有在检索本身上做太多创新,但把它嵌入到了更大的演化框架里。

情景检索用余弦相似度找最相关的历史轨迹,程序性继承则沿着已有的蒸馏边收集适用技能。

Stage II:反馈驱动的连接性精炼

这是我觉得这篇论文最有意思的部分。

Agent 执行完一步后,收到反馈 \(f_t\)(环境信号或自验证)。系统不是简单地"记住这次失败",而是诊断失败的根因属于连接级还是单元级,然后做针对性编辑:

连接级精炼: - Link Expand(治欠连接):缺关键信息?找到语义接近但未激活的节点,建立新边 - Link Prune(治过连接):上下文拥塞导致幻觉?识别干扰边并切断

单元级精炼: - Node Reshape(治粒度不匹配):检索到了正确的记忆节点,但抽象层次不对?自适应修改节点内容——要么展开更细粒度的执行细节,要么抽象冗余组件提升语义级别

这个精炼循环会一直跑,直到执行成功或达到预设轮次 \(T\)

坦率讲,这个设计让我想到了人类做复杂任务时的思维过程——"这步失败了,是因为我缺了什么信息,还是信息太多干扰了判断,还是我理解的粒度不对?"FluxMem 把这种元认知能力形式化了。

Stage III:长期巩固——从经验到技能

任务完成后,轨迹作为情景节点存入 \(\mathcal{V}_{epi}\)。离线阶段做两件事:

  1. 聚类 + 技能归纳:基于语义相似度把情景聚成 \(M\) 个簇,对每个簇用 LLM 归纳出跨情景共享的推理模式,抽象为程序性技能节点
  2. PEMS 引导的迭代精炼:用一个统一指标评估技能质量
\[\text{PEMS}^{(k)} = \frac{\eta(\mathcal{V}_{proc}^{(k)})}{\log \ell(\mathcal{V}_{proc}^{(k)})} \times \left(1 - \delta(\mathcal{G}_{cons}^{(k)}, \mathcal{G}_{cons}^{(k-1)})\right)\]

三个因子分别衡量: - \(\eta\):技能的实际成功率(有用性) - \(\log \ell\):技能文本长度的对数(简洁性,越短越好) - \(1-\delta\):与上一版本的嵌入差异(稳定性,变化越小说明越成熟)

PEMS 收敛时(\(\Delta\text{PEMS} \lt \epsilon\)),技能被认为达到成熟状态,停止演化。这个设计很实用——它给了你一个明确的停止信号,不会无限迭代浪费算力。


🧪 实验结果:三个完全不同的战场,全部拿下

LoCoMo:长对话记忆推理

这个基准测试的是 Agent 在超长对话(平均 588 轮、16618 tokens)中的记忆检索和推理能力。

方法 Single Hop Multi Hop Temporal Open Domain AVG
Full Context 87.99 80.50 71.03 58.33 81.23
Zep 66.90 53.70 60.20 43.80 61.60
Mem0 71.40 68.20 56.90 47.90 66.30
A-Mem 77.41 61.35 71.03 50.00 71.43
MemoryOS 78.95 66.67 55.45 60.42 70.65
EverMemOS 96.67 91.84 89.72 76.04 93.05
FluxMem 95.95 93.26 95.64 90.62 95.06

几个值得注意的点:

  1. FluxMem 的 95.06 分比 Full Context(把整个对话塞进去)高了近 14 个点。这说明"全量上下文"反而不如精准的记忆连接有效——信息太多也是一种噪声。

  2. 在 Open Domain 这个最难的子任务上,FluxMem 拿到 90.62,比第二名 EverMemOS 的 76.04 高了 14.58 个点。这个差距相当大了。

  3. 在 Qwen3-30B-A3B 这个小模型上,FluxMem 同样达到 93.44 分,远超 Full Context 的 74.87 和 LightMem 的 71.36。说明框架对底座模型的要求不高。

Mind2Web:真实网页导航

这是一个更接近实际应用的基准——Agent 需要在真实网站上完成多步操作任务。

方法 Cross-Task SR Cross-Website SR Cross-Domain SR AVG SR
No Memory 2.8 1.1 0.7 1.1
AWM 3.6 1.1 1.0 1.5
FluxMem (GPT-4.1-mini) 8.1 7.9 4.3 5.5
FluxMem (Gemini-2.5-flash) 9.6 7.5 5.0 6.2

说实话,这些绝对数字看起来不高(最好也就 9.6%),但考虑到 Mind2Web 的难度(平均 1135 个 DOM 元素,需要 7.3 个动作),而且是在无手动元素过滤的现实设置下,FluxMem 相对 AWM 的提升是翻倍级别的。

GAIA:通用助手任务

GAIA 是一个综合性的 Agent 能力评测。FluxMem 作为记忆增强模块,搭载在 Flash-Searcher 框架上:

框架 模型 Avg. 提升
Flash-Searcher GPT-5-mini 69.09 -
MemEvolve GPT-5-mini 73.33 +4.24
FluxMem GPT-5-mini 76.36 +7.27
Flash-Searcher Kimi K2 52.12 -
MemEvolve Kimi K2 61.21 +9.09
FluxMem Kimi K2 64.85 +12.73

在 Kimi K2 上 +12.73 个点的绝对提升,这个数字相当能打了。而且 FluxMem 在所有模型上都稳定优于 MemEvolve,说明框架的泛化性不错。


📊 消融实验:每个阶段到底贡献了什么

图3:消融实验和收敛分析——(a)(b) LoCoMo 上两个模型的阶段消融,(c) Mind2Web 消融,(d) 精炼轮次对性能的影响,(e) 演化轮次与 PEMS 收敛

图3:(a)(b) LoCoMo 上的阶段消融——移除 Stage II 影响最大;(c) Mind2Web 消融——移除 Stage III 影响最大;(d) 精炼轮次 T 的边际效益递减;(e) PEMS 指标的收敛趋势

消融结果揭示了一个有趣的现象:不同类型的任务,瓶颈在不同的阶段。

  • LoCoMo(记忆检索为主):移除 Stage II(反馈精炼)掉了约 10 个点,影响最大。因为这类任务的核心是"找到正确的记忆",精炼循环帮助修复检索错误。
  • Mind2Web(复杂推理为主):移除 Stage III(长期巩固)让 Cross-Task SR 从 8.1% 暴跌到 3.2%。因为网页导航需要的是"套路"——蒸馏出的程序性技能比临时精炼更关键。

这个分化很合理。如果你的场景偏检索(客服、问答),Stage II 是核心;如果偏推理和规划(代码生成、多步操作),Stage III 更重要。

精炼轮次 \(T\) 的分析也值得关注:从 T=0 到 T=5,性能从 85.32% 提升到 95.06%,但 T=4 到 T=5 只涨了 0.54%。边际效益递减很明显,实际部署时 T=3 或 T=4 可能就够了。


🔬 案例研究:看看 FluxMem 到底怎么"活"起来的

图4:GAIA 表格推理任务的完整执行流程——展示了 FluxMem 如何通过 Link Prune、Link Expand 和 Node Reshape 逐步修正错误

图4:一个具体案例——Agent 需要从 CSV 中找出"每位运动员平均奖牌数最高"的国家。FluxMem 经历了工具调用失败→剪枝无效 API→扩展正确 API→发现技能粒度不匹配→重塑节点为更细粒度的统计聚合程序,最终成功。

这个案例把三种精炼策略都展示了:

  1. Step 1 失败:Agent 调用了 Spreadsheet Viewer API 来处理 CSV,环境返回"文件太大,渲染超时"
  2. Link Prune + Expand:剪掉 Spreadsheet Viewer 的连接,扩展到 Python Data Analysis API
  3. Step 2 失败:Agent 用 pandas groupby 做了聚合,但输出了"奖牌总数最多"而不是"平均奖牌数最高"。自验证发现错误
  4. Node Reshape:诊断出问题在于继承的"Tabular QA Skill"太粗粒度——它只支持"排名现有统计",不支持"组合派生指标"。系统用更细粒度的"Statistical Aggregation Skill"(groupby→derive metric→normalize→compare)替换
  5. Step 3 成功:正确执行 argmax(avg_medal) 得到答案

这个过程确实像人类解决问题的方式——试错、归因、调整策略。


💡 我的判断

亮点

  1. 问题定义精准。把记忆系统的核心问题归结为"连接性",这个抽象层次恰到好处——既不会太高("记忆很重要"这种废话),也不会太低(纠结于某个检索算法的细节)。

  2. 三阶段设计逻辑自洽。Stage I 建立初始连接(快速但粗糙),Stage II 在线精炼(准确但局部),Stage III 离线巩固(全局但延迟)。这三个时间尺度的分工很清晰。

  3. PEMS 指标的引入。给记忆演化一个可量化的收敛判据,这在工程上非常实用——你知道什么时候该停。

  4. 跨场景泛化。LoCoMo(对话记忆)、Mind2Web(网页操作)、GAIA(通用助手)三个差异极大的基准上都 work,说明框架的通用性不是吹的。

我的顾虑

  1. 计算开销没交代清楚。Stage II 的精炼循环需要反复调用 LLM 做诊断和编辑,Stage III 需要重跑所有源情景来验证技能。论文自己也承认了这个局限,但没给出具体的延迟和成本数据。在实际部署中,这可能是个大问题。

  2. 静态基准的局限。三个基准都是预收集的固定数据集,没有真正的"分布偏移"。FluxMem 声称能处理动态环境,但实验没有验证这一点。

  3. 超参数敏感性。精炼轮次 \(T\)、收敛阈值 \(\epsilon\)、top-k 等控制参数,论文没有做跨模型和跨领域的敏感性分析。在新场景下这些参数怎么调?

  4. 与 EverMemOS 的差距其实不大。在 LoCoMo 上,FluxMem(95.06)vs EverMemOS(93.05)只差 2 个点。考虑到 FluxMem 的复杂度明显更高,性价比需要打个问号。

工程启发

如果你在做 Agent 记忆系统,这篇论文有几个可以直接借鉴的思路:

  • 把"检索失败"分类为欠连接和过连接,然后分别用扩展和剪枝来处理,比笼统地"优化检索"更有针对性
  • 记忆粒度不是一成不变的——同一条经验在不同场景下需要不同的抽象层次,Node Reshape 这个操作值得实现
  • 技能蒸馏 + 收敛判据:从历史轨迹中归纳可复用的推理模板,并用 PEMS 这样的指标判断何时停止迭代,避免无限循环

🔗 相关资源

  • 论文:https://arxiv.org/abs/2605.28773
  • 代码:https://github.com/zjunlp/LightMem

觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我