Evo-Memory — 给"会自己长记性"的 agent 出一份统一考卷
待复核Evo-Memory 是 2025 年 11 月一篇论文,做了两件事:第一,把 10+ 种”自进化 memory 模块”统一到一个框架;第二,提出一份流式任务 benchmark,专门测 agent 部署期间的”测试时学习”(test-time learning)能力。
日常类比:传统 LLM benchmark 像考一次性的笔试——题目独立,做完就清空。但真实场景的 agent 是连续上岗的员工,今天接的工单影响明天的判断。Evo-Memory 把考题排成一长串:每答完一题,agent 必须把经验写进 memory,下一题可能用得上。这才接近真实部署。
论文还顺手提了 ReMem——一个”act-think-memory”小循环 pipeline 作为强基线。
不接受”memory 应该会进化”,下面这些事就拼不到一起:
- 为什么 agent 在长会话/长任务流上越跑越钝
- 为什么 RAG 系统加了 memory 模块但没人能比较哪个更好
- 为什么各家”memory 模块”互相不兼容、对比无从谈起
- 为什么静态 QA benchmark 测不出 agent 的”学习”能力
Evo-Memory 三块拼图:
-
统一接口:论文把 memory-augmented agent 收成可对比的壳(检索 / 更新 / 上下文拼装)。工程落地时常再收成
search / write / update三个调用点,方便把 Amem、Mem0、LangMem、workflow memory 等装进同一评测环。类比:把 USB-A、Type-C、Lightning 都接到一个 hub 上。 -
流式数据集:把约 10 个数据集(多轮目标导向 + 单轮推理/QA)改写成”task stream”——一个一个串起来,agent 必须按序处理。类比:把高考的所有学科混成一张连续答题卡,做完一题不能回头。
-
ExpRAG + ReMem:作者给两个强相关基线。ExpRAG 检索过去经验来辅助新任务;ReMem 是 action–think–memory refine 三段循环——动手、反思、修 memory。类比:ExpRAG 是”看历史档案”,ReMem 是”先想再做再总结”。
案例 1:把两种 memory 装进同一评测壳
Section titled “案例 1:把两种 memory 装进同一评测壳”目标:同一条 task stream、同一个 backbone,只换 memory 适配器。
class MemoryAdapter: def search(self, query, k=4): # 1) 编码 query 2) 在已有 memory 里取 top-k return retriever.top_k(query, self.store, k)
def write(self, item): # 把本轮 (task, action, result) 写成一条可检索经验 self.store.append(item)
def update(self, item_id, patch): # refine:改旧记忆,而不是永远 append self.store[item_id] = {**self.store[item_id], **patch}
bench.run(model=backbone, memory=AmemAdapter())bench.run(model=backbone, memory=Mem0Adapter())# 同样数据流、同样模型,第一次能横向对比逐部分解释:
search:对应论文里的检索步,决定”这题先看哪些旧经验”write:任务结束后落一条新经验,供后续题复用update:ReMem 一类方法的关键——修正/剪枝旧记忆,而不是只堆日志bench.run(...):固定 stream 与模型,只换 adapter,分数才可比
案例 2:流式答题才看得出”会不会长记性”
Section titled “案例 2:流式答题才看得出”会不会长记性””静态 QA 上,轻量 cache(如 Amem)和结构化 memory(如 Mem0)可能看起来差不多。换到 Evo-Memory 的顺序流之后,差异常出现在后半段任务:会 refine / 复用经验的方法(ExpRAG、ReMem)更容易把前期踩坑变成后期加成。读论文结果时,不要只看总平均,还要看多轮环境(AlfWorld、BabyAI 等)和单轮推理集是否同向提升。
案例 3:ReMem 的 action-think-memory 循环
Section titled “案例 3:ReMem 的 action-think-memory 循环”for task in stream: think = llm("think about " + task + recent_memory) action = llm("act based on " + think) result = env.run(action) memory.refine(task, think, action, result) # 关键的 refine 步refine 不是简单 append,而是触发更新已有 memory(如修正之前错的判断)。这一步是 ReMem 相对”只检索不整理”方法的关键分水岭。
案例 4:任务相似度决定 memory 赚不赚钱
Section titled “案例 4:任务相似度决定 memory 赚不赚钱”论文用任务嵌入的簇内相似度分析增益:相似度高的数据集(如结构重复的 PDDL / AlfWorld)上,ReMem 类方法提升更大;更散的集合(如某些数学/研究生推理集)上,可迁移经验少,memory 加成变薄。作者报告过增益与任务相似度呈正相关(不同 backbone 上 Pearson r 大约在 0.5–0.7 量级)。含义很直接:别用单一相关度的考卷给所有 memory 方法打总分。
-
流式 vs 静态指标搞混:累计准确率会掩盖学习曲线——必须看分段曲线,看后期是否真的提升。
-
memory 大小没控制:A 模块 memory 长成 100MB,B 模块 1MB——比较不公平。Evo-Memory 用统一检索预算(如 top-k)和截断约束来压平。
-
LLM 服务不稳定干扰评估:流式长跑遇 rate limit / 模型版本漂移影响巨大。评测要固定模型 snapshot 与提示模板。
-
task 相似度是双刃剑:簇内相似度高时 memory 收益大,但也更容易”靠类似题取巧”;相似度低时 memory 几乎帮不上忙。看结果时要连着任务相似度一起读。
适用 vs 不适用场景
Section titled “适用 vs 不适用场景”适用:
- 设计 / 选型 memory 模块时做横向对比
- 评估自家 agent 的”长期学习”能力
- 写 paper 需要标准化 benchmark 来 challenge baseline
不适用:
- 单轮任务系统(用静态 benchmark 就够了)
- 模型权重微调路线(Evo-Memory 假设权重冻结)
- 需要真实多用户 / 多 session 场景(benchmark 是单 agent 流)
历史小故事(可跳过)
Section titled “历史小故事(可跳过)”- 2023 年:MemGPT、A-MEM 等 memory 模块涌现,各家自报数据,无统一对比
- 2024 年:LongMemEval(Wu et al.)开始测 long-context memory,但仍是问答式
- 2025 年初:自进化 agent 综述(self-evolving-agents-survey)指出 memory 评估是空白
- 2025 年 11 月:Evo-Memory 把流式任务 + 统一接口 + 公开榜单做出来
- benchmark 决定方向:没有合适 benchmark 的研究方向像没尺子的木匠
- 流式才是真实场景:静态 QA 测不出”学习”能力
- 统一接口是个体力活但回报巨大:让 10 种方法可比,价值远大于发明第 11 种
- ReMem 这种”refine 而不是 append”是 memory 设计的关键分水岭
- 相关度分档让对比更可信:单一难度容易过拟合方法
- 论文 PDF:arXiv:2511.20857
- 配套 leaderboard:作者团队公开维护
- self-evolving-agents-survey —— Evo-Memory 给其中 memory 路径建评估平台
- exg-experience-graphs —— EXG 是 Evo-Memory 上可测的 memory 模块之一
- apex-policy-exploration —— 探索坍缩在长流上看得最清楚
- self-evolving-agents-survey —— Evo-Memory 是 memory 路径的评估底座
- exg-experience-graphs —— 一种可被 Evo-Memory 评测的 memory 模块
- apex-policy-exploration —— 流式 benchmark 揭示探索坍缩
- misevolution-2509 —— 流式跑久了 misevolution 才显形
- code-as-agent-harness —— code agent 的 memory 一样能套这套接口
- react-agent —— ReAct + memory 是流式任务的常见基线
- agent-r1-2511 —— Agent-R1 — 把 LLM agent 当 RL 环境训练的模块化框架
- apex-policy-exploration —— APEX — 给自进化 agent 配一张”策略图”防止它走老路
- eve-agent-evidence —— EVE-Agent — 自我训练前先把证据钉在桌上
- exg-experience-graphs —— EXG 经验图 — 把 agent 的成败拼成一张可复用的关系图
- llm-wiki-retrieval-reasoning —— LLM-Wiki — 把外部知识编译成 agent 自己的”维基”
- mem-ft-lora —— MemFT-LoRA — 用 LoRA 量出大模型能背多少精确内容
- memcoder-co-evolution —— MemCoder — code agent 跟着你 git commit 一起成长
- misevolution-2509 —— Misevolution — 自进化 agent 也会”越改越坏”,连顶配模型也躲不过
- self-evolving-agents-survey —— 自进化 AI agent 综述 — 给”会自己升级”的 agent 画一张统一地图
- self-evolving-recsys-2602 —— Self-Evolving RecSys — 让 LLM agent 自己跑超参实验上线
- self-evolving-software-agents —— BDI-LLM Self-Evolving Agents — 让 agent 自己改自己源代码