- 人工智能
- 大模型
- Agent 记忆
- AI Agent
- RAG
- 知识图谱
- dsh-plugin
【免费下载链接】MemOS
Self-evolving memory OS for LLM & AI Agents: ultra-persistent memory, hybrid-retrieval, and cross-task skill reuse, with 35.24% token savings and DeepSeek Harness support.
导读:本文基于 MemOS 参数记忆设计文档,深入解析这一仍处于设计与原型验证阶段的"长期知识与能力载体"——它如何将世界知识、语言结构与推理能力编码进模型权重,并借助 LoRA 适配器与专家插件实现"专家子模型"式的动态能力插拔。读完本文,你将完整掌握参数记忆的概念边界、三大设计目标、Memory³ 三类记忆协同架构,以及当前仓库中已落地的原型骨架(
LoRAMemory、配置体系与 MemCube 集成方式),并了解今天即可上手体验的相邻记忆模块。
一、什么是参数记忆:把知识"内化"进模型权重
在传统记忆系统里,"记忆"往往以明文或向量的形式存放在模型之外:写入时序列化、读取时检索。而参数记忆 (Parametric Memory)走的是另一条路线——它将语言结构、世界知识以及通用推理能力的深度表征进行编码,直接嵌入在模型的权重之中。这意味着知识不再"外挂"于推理流程,而是成为模型能力本身的一部分,在每一次前向计算中隐式生效。
MemOS 的架构设计对"参数化"给出了更宽泛的界定:参数化记忆不仅仅局限于静态的预训练权重,还包含LoRA 适配器(Low-Rank Adaptation Adapters)和专家插件模块等模块化的权重组件。这带来一个关键能力——你可以在无需重新训练整个模型的前提下,逐步扩展或定制 LLM 的能力。
由此衍生出文档中描述的核心概念:能力模块(Capability Blocks)。你可以把结构化或固定的知识提炼为参数形式,保存成独立的能力模块,并在推理过程中动态加载或卸载。例如:
- 法律推理:加载法律条文与判例规则提炼出的 LoRA 适配器;
- 财务分析:加载财报解读、财务指标计算等领域的参数模块;
- 特定领域摘要:加载领域术语与摘要风格定制的专家模块。
这些"专家子模型"的创建、加载与切换,全部由 MemOS 统一管理,而不必为每个领域重新训练或部署一个完整的大模型。
二、三大设计目标:可控、可塑、可追溯
原文档明确了参数记忆模块的设计目标,这也是评估该功能后续迭代是否到位的核心标尺:
| 目标 | 含义 | 状态 |
|---|---|---|
| 可控性 | 支持按需生成、加载、切换或组合参数模块 | 设计中 |
| 可塑性 | 与明文记忆和激活记忆协同演进;支持知识的提炼与回滚 | 设计中 |
| 可追溯性 | 提供参数模块的版本控制与管理功能 | 开发中 |
- 可控性是参数记忆区别于"黑盒预训练"的根基:能力模块应当是可按需装配的零件,而不是只能整体更换的发动机;
- 可塑性强调参数记忆不是孤立的权重堆叠,而是要与 MemOS 另外两类记忆(明文、激活)协同演进,并支持"知识提炼→固化→回滚"的完整生命周期;
- 可追溯性则面向生产环境的工程化诉求:参数模块同样需要版本控制,才能支撑多任务、多角色乃至多智能体架构下的长期演进。
三、当前状态:设计与原型验证阶段
需要明确的是,参数记忆目前仍处于设计和原型验证阶段,尚未发布为可完整使用的正式功能。原文档给出的路线是:未来版本将发布用于生成、压缩以及热插拔参数模块的 API,以更好地支持多任务、多角色及多智能体架构。
不过这并不意味着仓库里"什么都没有"——相反,源码中已经可以看到一套完整的原型骨架,从抽象基类、LoRA 占位实现、数据项模型,到配置校验与 MemCube 集成,层层递进。下面逐一展开。
四、仓库中的原型实现:从基类到 LoRA 占位模块
4.1 目录结构与占位说明
参数记忆相关的源码集中在 src/memos/memories/parametric/ 目录,包含 4 个文件:
src/memos/memories/parametric/ ├── __init__.py # 空文件,包标识 ├── base.py # BaseParaMemory 抽象基类 ├── item.py # ParametricMemoryItem 数据模型 └── lora.py # LoRAMemory 占位实现其中base.py与lora.py的文件头都明确写有占位说明("This file currently serves as a placeholder",即当前仅为占位,实际实现将在未来补充,请勿将其视为可用的功能模块)。这从源码层面印证了文档所述的"开发中"状态——下文所有实现细节都应理解为架构预留的原型骨架,而非最终功能。
4.2 抽象基类 BaseParaMemory
src/memos/memories/parametric/base.py 定义了所有参数记忆实现的统一基类:
from abc import abstractmethod from memos.configs.memory import BaseParaMemoryConfig from memos.memories.base import BaseMemory class BaseParaMemory(BaseMemory): """Base class for all parametric memory implementations.""" @abstractmethod def __init__(self, config: BaseParaMemoryConfig): """Initialize memory with the given configuration."""它继承自 src/memos/memories/base.py 中的BaseMemory抽象类。后者的接口约定非常简洁,只要求两个核心方法:
load(dir: str):从os.path.join(dir, self.config.memory_filename)加载记忆;dump(dir: str):将记忆序列化到同样的路径。
这一"目录 + 文件名"的存取约定,是后续所有记忆模块(文本、激活、参数)共享的统一契约。
4.3 数据模型 ParametricMemoryItem
src/memos/memories/parametric/item.py 定义了参数记忆的数据项模型:
import uuid from typing import Any from pydantic import BaseModel, Field class ParametricMemoryItem(BaseModel): id: str = Field(default_factory=lambda: str(uuid.uuid4())) memory: Any metadata: dict = {}基于 Pydantic 建模,包含三个字段:
| 字段 | 类型 | 说明 |
|---|---|---|
id | str | 唯一标识,默认自动生成 UUID |
memory | Any | 记忆内容主体(参数记忆场景下通常是对应权重/适配器的引用或描述) |
metadata | dict | 附加元数据 |
memory使用Any而非str,从类型设计上可以推断:参数记忆的内容不再局限于文本,未来可能承载模型权重路径、适配器标识等更丰富的对象形态。
4.4 LoRAMemory:LoRA 参数记忆的占位实现
src/memos/memories/parametric/lora.py 提供了当前唯一的参数记忆实现LoRAMemory,其设计意图在 docstring 中写明:"用于存储和检索低秩适应(LoRA)参数":
import os from memos.configs.memory import LoRAMemoryConfig from memos.memories.parametric.base import BaseParaMemory class LoRAMemory(BaseParaMemory): def __init__(self, config: LoRAMemoryConfig) -> None: self.config = config def load(self, dir: str) -> None: """Load memories from os.path.join(dir, self.config.memory_filename)""" def dump(self, dir: str) -> None: path = os.path.join(dir, self.config.memory_filename) if not os.path.exists(dir): os.makedirs(dir, exist_ok=True) with open(path, "wb") as f: f.write(b"Placeholder")可以看到:
dump已经实现了"创建目录并写入文件"的框架逻辑,但写入内容是占位字节b"Placeholder";load目前只有签名与 docstring,尚未实现读取逻辑。
尽管是占位实现,但这一骨架已经定义了 LoRA 记忆的持久化协议:参数模块将以单个文件的形式存放在指定目录下,文件名由配置项memory_filename决定(默认见下文 4.5)。
4.5 配置体系:LoRAMemoryConfig 与 extractor_llm 约束
参数记忆的配置定义在 src/memos/configs/memory.py 的 "2.2. Parametric Memory Configs" 段落中:
class BaseParaMemoryConfig(BaseMemoryConfig): """Base configuration class for parametric memories.""" memory_filename: str = Field( "parametric_memory.adapter", description="Filename for storing memories", ) class LoRAMemoryConfig(BaseParaMemoryConfig): """LoRA memory configuration class.""" extractor_llm: LLMConfigFactory = Field( ..., default_factory=LLMConfigFactory, description="LLM configuration for the memory extractor", ) @field_validator("extractor_llm") @classmethod def validate_extractor_llm(cls, extractor_llm: LLMConfigFactory) -> LLMConfigFactory: if extractor_llm.backend not in ["huggingface", "huggingface_singleton"]: raise ConfigurationError( f"LoRAMemoryConfig requires extractor_llm backend to be " f"'huggingface' or 'huggingface_singleton', got '{extractor_llm.backend}'" ) return extractor_llm要点解读:
- 默认文件名:
BaseParaMemoryConfig将持久化文件名默认设为parametric_memory.adapter——这个后缀名直接点明了它承载的是模型适配器权重,而非 JSON 文本。仓库示例数据 examples/data/mem_cube_2/parametric_memory.adapter 即是该命名约定的实证。 - extractor_llm 约束:
LoRAMemoryConfig要求配置一个"记忆提取器"LLM,且通过field_validator强制其后端必须是huggingface或huggingface_singleton。从设计意图可以推断:未来生成 LoRA 参数模块时,需要借助本地 HuggingFace 模型环境完成知识→参数的提炼,而其他后端(如 OpenAI、vLLM)在配置阶段就会被拒绝。
4.6 工厂注册与 MemCube 集成
参数记忆并非孤立的实验代码,它已经接入 MemOS 的记忆工厂与 MemCube 记忆容器体系。
工厂注册:在 src/memos/memories/factory.py 中,MemoryFactory.backend_to_class注册了"lora": LoRAMemory:
backend_to_class: ClassVar[dict[str, Any]] = { "naive_text": NaiveTextMemory, "general_text": GeneralTextMemory, "tree_text": TreeTextMemory, "simple_tree_text": SimpleTreeTextMemory, "pref_text": PreferenceTextMemory, "simple_pref_text": SimplePreferenceTextMemory, "kv_cache": KVCacheMemory, "vllm_kv_cache": VLLMKVCacheMemory, "lora": LoRAMemory, }也就是说,只要配置backend: "lora",MemoryFactory.from_config()就能返回一个BaseParaMemory实例。
MemCube 集成:MemCube(记忆立方体)是 MemOS 将多类记忆组合为"一个可持久化单元"的容器。在 src/memos/mem_cube/base.py 中,抽象基类声明了四类记忆槽位,其中之一就是参数记忆:
self.text_mem: BaseTextMemory self.act_mem: BaseActMemory self.para_mem: BaseParaMemory self.pref_mem: BaseTextMemory在具体实现 src/memos/mem_cube/general.py 中,para_mem通过工厂按需创建:
self._para_mem: BaseParaMemory | None = ( MemoryFactory.from_config(config.para_mem) if config.para_mem.backend != "uninitialized" else None )并且load()方法支持按memory_types列表选择性地加载["text_mem", "act_mem", "para_mem", "pref_mem"]中的任意组合——这为将来"按需热插拔参数模块"预留了清晰的调度接口。
配置校验:在 src/memos/configs/mem_cube.py 的validate_para_mem中,GeneralMemCubeConfig对para_mem.backend做了白名单约束:
allowed_backends = ["lora", "uninitialized"] if para_mem.backend not in allowed_backends: raise ConfigurationError(...)即当前 MemCube 只接受lora参数记忆,或者用uninitialized显式关闭该槽位。uninitialized的设计也体现了"可选装配"的思路——参数记忆尚在开发中,因此允许用户先构建不含参数记忆的 MemCube。
五、Memory³ 架构:三类记忆如何协同
参数记忆在 MemOS 中并不是孤立的一环,它是统一Memory³架构愿景的三分之一。原文档给出三者明确分工:
| 记忆类别 | 角色 | 特征 |
|---|---|---|
| 参数化记忆(Parametric Memory) | 内化与嵌入的隐式知识 | 编码在模型权重中,随推理隐式生效 |
| 激活记忆(Activation Memory) | 短暂的运行时状态 | 即 KV Cache 类记忆,缓存运行时状态 |
| 明文记忆(Explicit/Textual Memory) | 结构化、可追溯的显式外部记忆 | 以明文/向量形式存储,可检索可审计 |
三者有机结合,才能构建出适应性强、可持续进化且具备可解释性的智能系统:明文记忆负责"记得住且能追溯",激活记忆负责"跑得快",参数记忆则负责"内化能力强"。可塑性的设计目标——参数记忆与明文、激活记忆协同演进、支持知识提炼与回滚——正是这三类记忆之间双向流动的体现:高频验证过的显式知识,可以逐步"蒸馏"进参数模块,成为模型的内隐能力。
六、开发中:今天就可以上手的相邻模块
参数记忆虽然还在开发中,但 Memory³ 的另外两翼以及参数记忆的"上游知识源"已经可用。原文档推荐的三个模块都可以立即尝试:
6.1 GeneralTextMemory:通用明文记忆
基于向量的灵活语义存储,适合会话代理、个人助理与知识管理系统。每个记忆项包含memory内容主体与TextualMemoryMetadata元数据(类型、时间、来源、置信度、实体、标签、可见性等),支持向量语义检索与多维过滤。详见 通用明文记忆文档。
6.2 TreeTextMemory:结构化层次记忆
基于图数据库的结构化、层次化知识图谱,支持多跳推理、因果链与复杂关系查询,还支持 MultiModal Reader(图片、URL、文件)与互联网检索。详见 树状明文记忆文档。
6.3 Activation Memory(KVCacheMemory):激活记忆
高效的运行时状态缓存,将稳定文本预计算为 KV Cache,在推理时直接注入,跳过重复编码、大幅减少预填充阶段计算,适合 FAQ 缓存、对话历史复用与领域知识预加载等高吞吐场景。详见 KV Cache 激活记忆文档。
此外,记忆模块总览 提供了完整的选型决策树:快速原型用NaiveTextMemory、通用文本记忆用GeneralTextMemory、用户画像用PreferenceTextMemory、知识图谱用TreeTextMemory、推理加速用KVCacheMemory,可作为项目落地时的参考索引。
七、开发者展望与接入提示
综合原文档的路线图与仓库现状,可以归纳出参数记忆后续开发的几个关键方向:
- 参数模块生成与压缩 API:将显式知识提炼为 LoRA 等低秩参数形式,并控制模块体积;
- 热插拔能力模块:在推理过程中动态加载/卸载参数模块,支撑多任务、多角色及多智能体架构——这与 mem_cube/general.py 中按
memory_types选择性加载的设计一脉相承; - 版本控制与回滚:补齐"可追溯性"目标,让参数模块具备可管理的生命周期。
对于想提前跟踪或参与其中的开发者,建议关注 src/memos/memories/parametric/ 目录的演进,并结合 src/memos/configs/memory.py 中的配置约束(memory_filename默认parametric_memory.adapter、extractor_llm限定 HuggingFace 后端)以及 src/memos/mem_cube/general.py 的集成方式理解其接入路径。需要再次强调的是:当前目录下的实现均为占位骨架,请勿在生产环境中当作可用功能使用——但这不妨碍我们把它作为理解 MemOS 记忆分层哲学的最佳窗口。
- 人工智能
- 大模型
- Agent 记忆
- AI Agent
- RAG
- 知识图谱
- dsh-plugin
【免费下载链接】MemOS
Self-evolving memory OS for LLM & AI Agents: ultra-persistent memory, hybrid-retrieval, and cross-task skill reuse, with 35.24% token savings and DeepSeek Harness support.
相关推荐
MemOS Parametric Memory(参数记忆)深度解析:将知识蒸馏进模型权重的能力化长期记忆架构
MemOS Parametric Memory(参数记忆)深度解析:将知识蒸馏进模型权重的能力化长期记忆架构 本文以 MemOS 仓库中的 parametric
人工智能大模型Agent 记忆AI AgentRAG知识图谱dsh-pluginAgent 记忆系统架构实战指南:Agent Memory Systems 的短期、长期记忆与认知架构设计
Agent 记忆系统架构实战指南:Agent Memory Systems 的短期、长期记忆与认知架构设计 导读 Agent 记忆是智能体的基石——没有记忆,每
AI 技能AI 插件TensorFlow2 三种计算图完全解析:静态图、动态图与 Autograph 实战指南
TensorFlow2 三种计算图完全解析:静态图、动态图与 Autograph 实战指南 本篇技术指南以《eat_tensorflow2_in_30_days
教程深度学习机器学习
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考