找回密码
 立即注册
首页 业界区 业界 【Agent】MemOS 源码笔记---(5)---记忆分类

【Agent】MemOS 源码笔记---(5)---记忆分类

能杜孱 昨天 22:25
【Agent】MemOS 源码笔记---(5)---记忆分类


目录

  • 【Agent】MemOS 源码笔记---(5)---记忆分类

    • 0x00 摘要
    • 0x01 记忆分类

      • 1.1 业界分类

        • 1.1.1 整体图表
        • 1.1.2 梳理

      • 1.2 MemOS

    • 0x02 MemOS分类解析

      • 2.1 维度定义

        • 2.1.1 按「物理形态 + 生命周期」划分
        • 2.1.2 按「存储归属 + 访问优先级」划分

      • 2.2 核心关系解析

        • 2.2.1. 不存在直接包含关系
        • 2.2.2. 关键映射关系


    • 0x03 MemOS的具体实现

      • 3.1 基本概念

        • 3.1.1. 记忆类型 (memory_type)
        • 3.1.2. 记忆状态 (status)
        • 3.1.3. 记忆类型 (type)
        • 3.1.4 问题

      • 3.2 记忆生成

        • 3.2.1 记忆提取阶段
        • 3.2.2 内存类型判断的标准
        • 3.2.3 判断依据总结
        • 3.2.4 代码流程

          • 实际转换流程总结
          • 创建和初始存储
          • 定期清理与维护机制
          • 搜索时的数据交互
          • 图结构重组过程中的记忆优化
          • 用户控制方式
          • 总结



    • 0x04 MemOS 记忆生命周期管理

      • 4.1 生命周期阶段简介
      • 4.2 案例:在线教育助手的记忆生命周期
      • 4.3 自己的理解
      • 4.4 MemScheduler

    • 0xFF 参考


0x00 摘要

大模型之所以“忘事”,根本在于我们对“无状态模型”里“上下文窗口”的误解。很多人把它当成一只大箩筐,认为装得越多越好;然而,事实上,上下文窗口更像一块容量有限的工作记忆。硬塞太多信息,只会同时带来如下麻烦:关键内容被噪声淹没,模型抓不住重点,上下文越长,费用和延迟也越高。
这不是模型偷懒,而是 Transformer 架构的先天特性。每一次调用都像重新开机:没有长期记忆,上下文一旦过长,注意力就被冗余信息扯散,于是出现遗忘、跑题、速度下降。
为了补上这块短板,人们在记忆上大动手脚。
虽然前文简略介绍了MemOS的记忆类型,但是并未深入,本文以官方文档为基础进行解读,目的是了解MemOS的记忆分类,以及其生命周期。
0x01 记忆分类

1.1 业界分类

为了更好的分析,我们先来看看业界如何对记忆进行分类。
在当前(截至 2025 年)主流的智能体(Agent)系统和记忆架构研究与实践中,存在多种分类方式,这些分类借鉴自认知科学,并被 AI Agent 架构不同程度地采纳。
1.1.1 整体图表

先给出整体图表。
Memory 类型特点存储形式典型用途工作记忆(Working)任务级、临时、结构化内存中的字典 / 对象正在执行的工具调用参数、任务状态短期记忆(Short-term  Memory)容量小、时效短、上下文相关内存中的缓存 / 列表当前对话、任务执行中的临时状态长期记忆(Long-term Memory)持久存储、可检索、结构化/非结构化结构化数据库 / 向量库 / 知识库用户历史、知识库、经验沉淀情景记忆(Episodic Memory)记录特定事件(时间+地点+内容)和对话轨迹向量数据库 / 知识库回忆“上次用户说...”语义记忆(Semantic Memory)抽象知识(事实、概念、规则),即从多次交互中提炼稳定事实向量数据库 / 知识库“巴黎是法国首都”程序性记忆(Procedural Memory)如何做某事(技能、流程)结构化数据库 / 向量库调用工具链、执行计划偏好/用户画像记忆/个性化记忆(Preference/User Profile Memory)用户兴趣、习惯、风格偏好结构化数据库 / 向量库个性化推荐、语气调整1.1.2 梳理

以下分类属于笔者自己的理解,不一定正确,仅供大家参考。主要是 “感知 - 短期 - 长期” 三级时效分层体系,各层级功能与特性相对可以明确区分:

  • 感知记忆(环境感知记忆):最瞬时的记忆形态,仅存储当下环境中的即时数据(如视觉、声音信息),无长期复用价值,仅在当前瞬间有效,需通过转化机制进入更高层级记忆才能长期保留。


  • 短期记忆(对应 Agent 的 Session 级别数据管理),此处有两种非常类似的说法,可以混用。可能工作记忆更强调当前会话,短期记忆强调短期的对话记录。

    • 工作记忆(Working Memory):用来处理当前会话与任务的上下文,包括当前目标、正在执行的子任务等。核心作用是保障上下文连续性与即时响应能力。容量有限,但读写频繁、延迟极低。有的方案中,工作记忆也包括最近几轮对话
    • 短期记忆:与特定会话或任务线程强绑定,即常见的 “历史对话记录”,是 LLM 推理 API 的核心基础参数,核心作用是维持单一会话内的交互连贯性。

  • 长期记忆:不依赖特定会话,可跨场景复用,包括两种分类方法:

    • 分类1(从用户角度出发)

      • 情景记忆(Episodic Memory):负责存储用户和Agent的具体交互事件。记录过往事件与行动历程,区别于孤立事实,更侧重 “经历” 的完整留存,帮助 Agent 回忆任务执行的具体过程与场景;
      • 陈述性记忆(Declarative Memory,“是什么),此处也有两种类似的说法:

        • 语义记忆(Semantic Memory”):通过层级结构归纳用户长期信息。聚焦事实与概念的存储,如交互中积累的特定信息、概念间的关联关系,是实现个性化服务的关键(如记住用户的偏好事实);
        • 陈述性记忆:此分类和语义记忆很类似,属于将语义记忆扩大化。即,  陈述性记忆是关于事实和事件的知识 。它回答的是各种“是什么”的问题 — 无论是世界知识还是用户的具体信息。比如用户的姓名、喜欢的美食,曾遭遇过的事件等,都属于陈述性记忆 。

      • 程序性记忆(Procedural Memory,“怎么做”):存储执行任务的规则、方法与流程,由模型权重、智能体代码、提示词策略等共同构成,相当于 Agent 的 “内在方法论”,指导其如何完成具体任务(类似人类骑自行车的技能记忆)。
      • 个性化记忆:形成关于用户的持续画像。通过会话内容摘要等方式提取的用户画像信息,包括用户偏好、行为习惯、身份特征等,支撑长期交互中的个性化服务。

    • 分类2(从实际应用功能出发):

      • 检索记忆:通过 RAG 技术对接外部知识库,核心价值是补充模型原生知识,同时减少内部知识冲突,提升信息获取的精准性与时效性。
      • 通用记忆:通过预训练或后续微调沉淀的基础通用知识,构成 Agent 的核心认知底座,支撑各类基础任务的理解与执行。
      • 规则记忆:以强化学习(RL)、提示词(Prompt)等方式固化的行为规范,用于约束 Agent 输出格式(如 JSON、CoT 链式推理)与行为边界,确保响应的一致性与合规性。
      • 个性化记忆:通过会话内容摘要等方式提取的用户画像信息,包括用户偏好、行为习惯、身份特征等,支撑长期交互中的个性化服务。


1.2 MemOS

MemOS对记忆有两种分类:
第一种是分成三个子类:

  • 结构化记忆(明文记忆):尝试基于图的分层知识 TreeTextMemory,是结构化、层次化和知识图谱。图与向量后端会连接 Neo4j 或 Qdrant 实现生产级向量/图搜索。适合常青技能和稳定的领域专业知识。
  • 激活记忆:运行时的 KV 缓存和隐藏状态(高效率),使用 KVCacheMemory (最近或稳定的上下文)加速多轮对话,高效的运行时状态缓存。适合对话中的快速重用、多轮会话。
  • 参数化记忆:嵌入模型中的长期知识和技能,用适配器/LoRA 实现动态技能注入。适合可搜索、可检查、演进知识。
第二种也是三个子类:

  • WorkingMemory: 工作记忆,临时存储
  • LongTermMemory: 长期记忆,持久存储
  • UserMemory: 用户记忆,个性化存储
0x02 MemOS分类解析

MemOS 这是两套完全不同的分类维度 —— 前者按 “记忆的物理形态与生命周期” 划分,后者按 “记忆的存储归属与访问优先级” 划分。二者无直接包含关系,但存在明确的动态迁移逻辑,共同支撑 MemOS 对 Agent 记忆的精细化管理。

  • 「物理形态 + 生命周期」分类(第一套):解决 “记忆如何高效存储、快速访问” 的工程问题,通过 “工作记忆→激活记忆→长期存储” 的层级设计,平衡内存占用与访问速度;
  • 「存储归属 + 访问优先级」分类(第二套):解决 “记忆如何精准管理、个性化调用” 的功能问题,通过 “WorkingMemory→LongTermMemory→UserMemory” 的模块划分,实现 “任务实时处理、通用知识沉淀、用户个性化适配” 的目标。
2.1 维度定义

先明确两套分类的核心定义(维度本质)。
2.1.1 按「物理形态 + 生命周期」划分

参数记忆(Parameter Memory)/激活记忆(Activated Memory)/结构化记忆(明文记忆) 的分类聚焦 “记忆在系统中的存在形式、存活时长”,是从工程实现角度对记忆数据的拆解,核心服务于 “资源优化”(如内存占用、计算效率),偏 “技术实现维度”:
记忆类型核心定义物理形态生命周期核心作用参数记忆(Parameter Memory)固化在模型权重中的 “隐性记忆”,是模型训练阶段习得的知识(非 MemOS 动态管理的记忆)。模型参数(权重矩阵)长期固定(除非模型微调)提供 Agent 基础认知能力(如语言理解、通用逻辑),是其他记忆发挥作用的前提。激活记忆(Activated Memory)从长期存储中 “临时唤醒” 并加载到内存的记忆片段(如近期高频访问的知识、正在处理的任务相关记忆)。内存中的结构化数据(节点、关系、向量)中短期(任务执行期间 / 闲置超时后释放)作为 “缓冲层”,避免频繁读取长期存储,提升记忆访问速度。结构化记忆(明文记忆)任务执行时 “实时生成 / 使用” 的临时记忆,是 Agent 当前决策所需的核心信息集合。内存中的临时数据结构(如任务状态、推理中间结果、即时交互信息)短期(任务结束后销毁 / 归档)支撑当前任务的实时决策(如 “规划旅行” 时,临时存储目的地、交通方式等信息)。2.1.2 按「存储归属 + 访问优先级」划分

该分类聚焦 “记忆的所有权、用途与访问优先级”,是从 Agent 功能逻辑角度对记忆的组织,核心服务于 “精准检索与管理”(如区分用户专属记忆和通用知识),偏 “功能逻辑维度”:
记忆类型核心定义存储归属访问优先级核心作用WorkingMemory(工作记忆)此处是 MemOS 中 “任务级临时存储模块”,专门存放当前任务的实时信息。内存 / 临时存储最高(任务执行期间优先访问)承接当前任务的输入、中间结果、决策依据,是 Agent 实时交互的 “临时工作台”。LongTermMemory(长期记忆)Agent 的 “通用知识库”,存放不随任务销毁的长期有效信息(如通用知识、历史任务归档、领域规则)。持久化存储(图数据库、向量数据库)中低(需检索唤醒)提供 Agent 长期稳定的知识支撑,避免 “任务结束即失忆”。UserMemory(用户记忆)属于 LongTermMemory 的 “子集化存储”,专门存放用户专属信息(如用户偏好、历史交互记录、个人属性)。持久化存储(独立分区 / 带用户标识的数据库)中高(用户相关任务优先访问)实现 “个性化交互”(如记住用户喜欢的沟通风格、历史需求)。2.2 核心关系解析

无包含关系,但有明确的 “映射与迁移”。
2.2.1. 不存在直接包含关系

这两套分类维度是平行的

  • 第一套是 “技术实现维度”(关注 “记忆怎么存、存多久”),第二套是 “功能逻辑维度”(关注 “记忆为谁存、用来做什么”),二者如同 “按‘材质 + 保质期’分类食品” 与 “按‘食用场景 + 归属人’分类食品”—— 分类标准完全不同,无法直接说 “某类包含某类”。
  • 例:UserMemory(功能维度)的物理形态可能是 “长期存储的结构化数据”(对应第一套的 “非激活态长期记忆”),也可能是 “临时加载到内存的激活数据”(对应第一套的 “激活记忆”);WorkingMemory(功能维度)的物理形态就是第一套的 “结构化记忆”(临时数据结构)。
2.2.2. 关键映射关系

为了让逻辑更清晰,可通过 “功能模块 → 技术形态” 的映射理解二者关联:
功能维度记忆(第二套)对应的技术维度记忆(第一套)WorkingMemory100% 对应「结构化记忆」(临时数据结构,任务结束后销毁 / 归档);部分场景会加载「激活记忆」(如调用历史任务相关的唤醒记忆)。LongTermMemory(通用)未访问时:对应「长期存储的结构化数据」(非激活态);访问时:加载为「激活记忆」;核心知识可能间接依赖「参数记忆」(模型权重中的通用认知)。UserMemory未访问时:对应「长期存储的用户专属数据」(非激活态);访问时:加载为「激活记忆」;个性化偏好的理解依赖「参数记忆」(模型对 “偏好” 的语义认知)。0x03 MemOS的具体实现

3.1 基本概念

MemOS 关于记忆的基本概念如下。
3.1.1. 记忆类型 (memory_type)


  • WorkingMemory: 工作记忆,临时存储。
  • LongTermMemory: 长期记忆,持久存储
  • UserMemory: 用户记忆,个性化存储
WorkingMemory是Memos中的一种记忆类型,具有有限容量且会被定期清理。在MemoryManager中,默认最多保存20条WorkingMemory记录,并会自动移除旧记录以维持容量限制。
LongTermMemory和UserMemory是另外两种记忆类型,容量较大(默认分别为1500和480条记录)。它们不会像WorkingMemory那样频繁清理,用于存储更持久的信息。
3.1.2. 记忆状态 (status)


  • activated: 激活状态
  • archived: 归档状态
  • deleted: 删除状态
3.1.3. 记忆类型 (type)


  • fact: 事实
  • event: 事件
  • opinion: 观点
  • topic: 主题
  • reasoning: 推理
  • procedure: 程序
3.1.4 问题

如何选择合适的memory_type?
[code]#
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册