记忆生命周期管理
1. 什么是记忆生命周期管理
记忆不是一次写入后永久不变的记录。随着用户状态、任务阶段和业务事实变化,同一类记忆可能需要被更新、合并、降级、归档或清理。
记忆生命周期管理关注的是记忆在存储层面的长期演化:哪些记忆仍然可信,哪些记忆已经过时,哪些记忆需要保留历史轨迹,哪些记忆可以从活跃索引中移除。
2. 为什么需要生命周期管理
如果记忆只增加、不治理,会出现三个问题:
- 重复记忆变多:相似事实和偏好反复写入,召回时噪音增加。
- 过时信息干扰:旧住址、旧偏好、已完成任务仍然被当成当前事实。
- 冲突难以判断:当新旧信息矛盾时,系统需要知道当前应该相信哪一条。
生命周期管理的目标,是让记忆既能长期保留,又不会把过时、重复或低价值信息持续带入推理。
3. 生命周期关键状态
| 状态 | 含义 | 常见处理 |
|---|---|---|
| 生成 | 新记忆被写入,带有来源、时间、类型和置信度等信息 | 进入记忆库,等待后续使用 |
| 激活 | 记忆在近期任务中频繁被使用或被调度到更高优先级 | 更容易被召回和注入上下文 |
| 合并 | 多条相似或互补记忆被整合为更稳定的表述 | 减少重复,形成更新后的可信记忆 |
| 归档 | 长期低频或暂时不适合当前任务的记忆被降级 | 默认减少参与推理,但保留回溯能力 |
| 过期 | 记忆超出有效期或被策略判定为不再可用 | 从活跃索引中移除,必要时保留最小审计信息 |
| 冻结 | 合规、审计或业务关键记忆不允许被自动改写 | 保留完整历史,限制更新和删除 |
具体状态名和策略可能随接入方式变化,但核心思想是一致的:记忆需要随着时间和使用情况持续治理。
4. 例子:学习偏好的变化
假设你正在用 MemOS 构建一个在线教育助手,帮助学生解答数学题。
生成(Generated)
学生第一次使用时说:“我总是把二次函数和一次函数搞混。”
系统抽取出记忆:
{
"content": "学生常混淆二次函数与一次函数",
"confidence": 0.99,
"create_time": "2025-09-11"
}
状态:Generated
行为:被存储进记忆库,等待后续使用。
激活(Activated)
在接下来的多次答题中,系统频繁调用这条记忆来辅助解题。
状态:Activated
行为:被调度机制优先使用,提高后续检索和上下文注入的效率。
合并(Merged)
随着更多交互,系统发现学生不仅混淆一次函数和二次函数,还对指数函数也容易混淆。
系统将多条相似记忆合并为一条新的内容:
{
"content": "该学生在函数知识点上存在混淆,尤其是一次函数、二次函数和指数函数",
"history": "学生常混淆二次函数与一次函数",
"version": "v1"
}
状态:Merged
行为:旧条目被压缩,形成更完整的新版本,减少冗余。
归档(Archived)
三个月后,学生已掌握函数相关知识点,系统很久没有再调度到这条记忆。
状态:Archived
行为:被降级到低频状态,默认不参与推理,但可在“学习轨迹回溯”中被调用。
过期(Expired)
又过了一年,该学生升级到新的学段,旧的“初中函数混淆”记忆被策略判定为无效。
状态:Expired
行为:从索引中清理,仅保留最小审计信息。
{
"deleted_fact_id": "12345",
"deleted_at": "2026-09-11"
}
冻结(Frozen,特殊状态)
与此同时,该学生的“期末成绩评估报告”属于合规性文件,不允许自动修改。
状态:Frozen
行为:被锁定,禁止自动更新,仅保留完整修改历史,便于审计与合规检查。
5. 和生产、调度、召回的关系
| 能力 | 关注点 |
|---|---|
| 记忆生产 | 如何把原始输入加工成可用记忆 |
| 生命周期管理 | 记忆写入后如何更新、合并、归档和清理 |
| 记忆调度 | 当前阶段哪些记忆应该更活跃 |
| 记忆召回 | 一次请求中哪些记忆应该被检索和使用 |
生命周期管理为调度和召回提供记忆状态。活跃、可信、未过期的记忆更适合参与当前推理;归档、过期或冻结记忆则需要按策略谨慎处理。