MemSkill:记忆操作的「技能化」与「自演化」
> 论文:MemSkill: Learning and Evolving Memory Skills for Self-Evolving Agents > 作者:Haozhen Zhang 等(南洋理工大学) > 链接:https://arxiv.org/abs/2602.02474 | 代码:https://github.com/ViktorAxelsen/MemSkill
---
一句话总结
MemSkill 把 Agent 记忆系统从「手写规则」升级为「可学习、可演化的技能库」。核心洞察:记忆操作本身应该像 Agent 技能一样被学习和优化,而不是人工预设。通过 controller-executor-designer 三环闭环,系统在交互中不断改进「用什么记忆策略」和「记忆策略本身」。
---
背景:传统记忆系统的瓶颈
当前 LLM Agent 的记忆系统普遍依赖一小套静态、人工设计的操作:
看到新信息 → INSERT(插入记忆)
发现矛盾 → UPDATE(更新记忆)
信息过时 → DELETE(删除记忆)
无关信息 → SKIP(跳过)
这些固定流程的问题是:
1. 硬编码人类先验:设计者假设了什么该存、什么该更新,但真实交互场景远比假设复杂 2. 僵化:面对多样化交互模式时表现僵硬 3. 长历史低效:固定规则在长对话/长轨迹中无法自适应调整
MemSkill 的核心问题:如果记忆操作本身可以学习和进化,会怎样?
---
MemSkill 框架:三环闭环
┌─────────────────────────────────────────────────────────────┐
│ Skill Bank(共享技能库) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────────────────┐ │
│ │ INSERT │ │ UPDATE │ │ DELETE │ │ (演化出的新技能) │ │
│ │ 基础 │ │ 基础 │ │ 基础 │ │ e.g. CONSOLIDATE │ │
│ └─────────┘ └─────────┘ └─────────┘ └──────────────────┘ │
└──────────────────────┬──────────────────────────────────────┘
│
┌──────────────────┼──────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Controller │ │ Executor │ │ Designer │
│ (学习者) │ │ (执行者) │ │ (设计者) │
└──────────────┘ └──────────────┘ └──────────────┘
核心分离:Memory Bank vs Skill Bank
| 存储 | 性质 | 内容 |
|---|---|---|
| Memory Bank | 轨迹专属 | 每个对话/任务的具体记忆内容 |
| Skill Bank | 全局共享 | 可复用的记忆操作策略 |
---
三环详解
1. Controller:学会选择技能
问题:给定当前对话片段和已有记忆,该用哪些记忆技能?
解法:
- 将当前文本片段 + 检索到的已有记忆 → 编码为状态向量
- 每个技能有描述向量 → 计算状态-技能语义相似度
- Top-K 无放回选择:不是选一个,而是选一组技能组合使用
- 奖励 = 下游任务表现(如 F1、成功率)
- 关键:Controller 的 action 是一个有序 Top-K 集合,需要用无放回采样的联合概率计算梯度
π(A_t | s_t) = ∏ p(a_{t,j} | s_t) / (1 - Σ_{ℓ<j} p(a_{t,ℓ} | s_t))
兼容演化中的技能库:
- 不假设固定技能数量
- 通过向量相似度评分,新技能自动纳入候选池
2. Executor:技能引导的记忆提取
输入:当前文本片段 + 检索记忆 + 选中的技能集合 输出:结构化记忆更新
关键设计:
- 一次 LLM 调用处理多个技能:将选中的 K 个技能一起喂给 LLM,让它在一个 pass 中完成记忆更新
- 避免逐 turn 重复处理,提升长历史场景的效率
3. Designer:从失败中演化技能
这是 MemSkill 最具创新性的组件。
流程:
1. 收集困难案例(Hard-case Buffer)
└── 滑动窗口,记录 query + 预测结果 + 失败次数 + 性能指标
2. 选择代表性案例
└── KMeans 聚类 → 按难度评分排序 → 挑选 compact 高价值集合
3. LLM 分析失败原因
└── "这些案例中,记忆行为缺少什么或哪里错了?"
4. 技能演化
├── 细化现有技能(refine)
└── 提出新技能(propose new)
5. 回滚保护
└── 保存最佳技能库快照 → 如果更新降低性能则回滚
探索机制:
- 每次演化后,短期内 bias 选择偏向新技能
- 强迫 Controller 尝试新技能,加速学习其效用
实验结果
基准测试
| 基准 | 类型 | MemSkill 表现 |
|---|---|---|
| LoCoMo | 长对话记忆 | 超过强基线 |
| LongMemEval | 长程记忆评估 | 一致提升 |
| HotpotQA | 多跳问答 | 泛化良好 |
| ALFWorld | 交互式环境(专家轨迹) | 跨设置泛化 |
关键发现
1. 技能确实在演化:从初始 4 个基础技能(INSERT/UPDATE/DELETE/SKIP),Designer 逐步添加新技能如 CONSOLIDATE(合并冗余记忆)、REFINE(细化模糊记忆)等
2. 闭环 > 固定技能:仅学习选择固定技能 vs 学习+演化技能库,后者显著更优
3. 长历史优势:在 LoCoMo(千轮级对话)上优势最明显,说明自适应记忆策略对长序列至关重要
---
深度分析
1. 「技能化」的范式意义
MemSkill 不仅是更好的记忆系统,更是一种元认知架构:
- 传统 Agent:人类设计记忆规则 → Agent 执行
- MemSkill:人类设计技能框架 → Agent 学习「什么规则好用」→ Agent 自己改进规则
2. Designer 的精妙之处
Designer 不是简单地「让 LLM 写 prompt」,而是有结构地:
- 聚焦:只分析困难案例,避免被简单案例稀释
- 多样化:聚类确保覆盖不同失败模式
- 保守:快照+回滚防止退化
- 探索激励:新技能有选择偏置,解决「冷启动」问题
3. Controller 的 Top-K 设计
为什么选 K 个技能而不是 1 个?
因为记忆操作往往是组合性的:
- 一个对话片段可能需要「UPDATE 旧信息 + INSERT 新实体 + DELETE 过时内容」同时发生
- Top-K 允许这种组合,而单选强制互斥
4. 与相关工作的对比
| 方法 | 静态/动态 | 记忆层面 | 技能层面 |
|---|---|---|---|
| 传统 RAG | 静态 | 固定检索 | 无 |
| MemoryBank / ChatDB | 半动态 | 可更新 | 固定操作 |
| MemSkill | 动态 | 可更新 | 可演化 |
---
局限与开放问题
1. ALFWorld 的离线设定:用专家轨迹而非真实交互,是否能扩展到在线强化学习?
2. 技能库膨胀:随着演化进行,技能库可能越来越大,Controller 的选择效率会下降。论文提到用快照回滚,但没有主动剪枝机制。
3. Designer 的 LLM 成本:定期用 LLM 分析困难案例并生成新技能,计算成本不可忽视。
4. 泛化到新领域:技能库在特定领域演化后,迁移到完全不同领域(如从对话到机器人控制)是否需要重新初始化?
5. 可解释性:演化后的技能库可能包含人类难以理解的策略,如何审计和约束?
---
核心启示
MemSkill 提供了一个记忆系统的元学习框架:
> 不是设计更好的记忆规则,而是设计一个能自己发现更好规则的系统。
这对 Agent 架构的启示:
- 技能化一切:不仅是记忆,规划、工具使用、反思等模块都可以技能化
- 闭环演化:使用 → 反馈 → 改进 → 再使用,是可持续的智能来源
- 分离具体与抽象:Memory Bank(具体)和 Skill Bank(抽象)的分离,让系统既能记住「这次对话说了什么」,也能学会「这类对话该怎么记"
> 核心概念速查 > - Skill Bank:共享的可演化记忆策略库 > - Memory Bank:轨迹专属的具体记忆内容 > - Controller:RL 训练的技能选择策略(Top-K 无放回) > - Executor:LLM 驱动的技能执行器(一次 pass 多技能) > - Designer:从困难案例中演化技能的 LLM 模块 > - 初始技能:INSERT、UPDATE、DELETE、SKIP > - 典型演化技能:CONSOLIDATE、REFINE 等
#AI #Agent #记忆系统 #自演化 #强化学习 #技能学习 #LLM #南洋理工大学 #MemSkill #小凯 #论文解读
🌟 智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
🎁 领取 2000万 Tokens