Mnemosyne OS

Agent 记忆怎么设计:认知记忆类型的分层方案

AI Agent 的记忆通常按认知科学分为三层:工作记忆(Working Memory,对应上下文窗口)、情景记忆(Episodic Memory,对应「上次发生了什么」)、语义记忆(Semantic Memory,对应事实与概念)。长期记忆(Long-Term Memory, LTM)是后两者的总称,而程序记忆(Procedural Memory)在工程上常隐式存在于系统提示与工具描述中。

Agent 记忆分为哪几层?三句话讲清

Agent 记忆的工程分层与认知科学对应:工作记忆 = 当前上下文窗口内可见的内容,容量受 token 限制;情景记忆 = 带时间戳的过往交互事件,回答「上次我们聊到哪」;语义记忆 = 从多次情景中提炼出的事实与概念,回答「用户偏好什么」。长期记忆(LTM)是情景与语义两层合起来的称呼,与短期记忆(STM)相对。

类型 英文 层级 工程载体 回答什么问题
工作记忆Working MemoryA/B上下文窗口(context window)这一轮对话里有什么
短期记忆Short-Term Memory, STMA/B会话缓冲、最近 N 轮刚才说了什么
长期记忆Long-Term Memory, LTMA外部存储 + 检索跨会话还记得什么
情景记忆Episodic MemoryA/B时序记录、向量存储上次发生了什么
语义记忆Semantic MemoryA/B知识图谱、事实表关于这个世界/用户的事实
程序记忆Procedural MemoryB系统提示、工具定义、技能库这件事该怎么做
感觉记忆Sensory Memory / BufferC多模态输入缓冲原始输入长什么样
自传体记忆Autobiographical MemoryC长期自我叙事我是谁、经历过什么
元记忆Meta-MemoryC置信度、来源标注我有多确定
陈述性/非陈述性Declarative / Non-DeclarativeC理论分类轴(分类框架,非检索入口)
Mnemosyne OS 8.1.0 的四维作用域(user_id / agent_id / run_id / app_id)用**物理隔离**实现——每个作用域一个 SQLite 文件,而不是共享行加过滤条件。这使得情景记忆天然按用户与 Agent 分隔,不需要在检索时补 WHERE 子句。

工作记忆和长期记忆的区别是什么?

工作记忆是上下文窗口里当前可见的内容,容量受 token 预算硬限制,会话结束即失效;长期记忆是模型之外的持久存储,跨会话存在,需要主动检索才能进入工作记忆。两者的关键差异不是「记多久」,而是「谁决定它出现」——工作记忆由上下文拼接决定,长期记忆由检索相关性决定。

维度 工作记忆 长期记忆
容量上限受 token 窗口限制受磁盘限制
生命周期单次会话跨会话、跨进程
写入方式自动(对话即内容)需显式抽取与写入
失效方式截断丢弃遗忘 / 衰减 / 删除
检索成本零(已在上下文里)一次检索调用
失败模式超出窗口被截断检索不相关或召回为空
Mnemosyne OS 的召回延迟 p50 为 0.21 ms。这个量级意味着「每次需要时都去检索」在延迟上是可以接受的,不必把长期记忆预先塞进上下文。

情景记忆和语义记忆怎么区分?工程上要不要分开存

情景记忆存的是「带时间的一次经历」,语义记忆存的是「从多次经历中抽象出的事实」。工程上应当分开存:情景记忆需要时间索引与顺序,语义记忆需要实体索引与去重。把两者混在一张向量表里,会导致「用户三个月前说过喜欢深色模式」和「用户偏好深色模式」被当成两条无关记录,无法互相印证。

维度 情景记忆 Episodic 语义记忆 Semantic
数据形态带时间戳的事件去时间化的断言
主要索引时间、会话、参与者实体、关系、谓词
典型查询「上周那次讨论了什么」「用户的技术栈是什么」
更新方式追加为主合并、覆盖、版本化
退化风险事件分割粒度不当冲突未消解导致自相矛盾
Mnemosyne OS 的记忆巩固(Memory Consolidation)把重复出现的情景提炼为语义,并通过「单遍 ADD-only 抽取」保证写入永不覆盖已有事实——坏的抽取只会引入噪声,不会销毁真实记忆。

程序记忆(Procedural Memory)在 Agent 里怎么落地?

程序记忆在 Agent 中通常不以独立存储层存在,而是隐式分布在三处:系统提示里的行为规范、工具定义里的调用契约、以及技能库里的可复用流程。它的工程价值在于「不重复推理」——把已经验证过的操作序列固化下来,下次直接执行而不是重新规划。

在 2026 年的分类法中,程序记忆作为独立架构层出现的频率低于工作/情景/语义三层,更多以「skill」「experience」「playbook」的变体形式散落在系统中。这也是为什么它被归为 B 层而非 A 层。

分类法还有哪些维度?为什么会出现功能导向分类

2026 年的分类法在传统认知类型之外增加了正交维度:功能导向(Factual / Experiential / Working Memory)、时间动态(Temporal Dynamics)、模态(Modality)、拓扑(Topology)。出现功能导向维度的原因是:按认知科学分类无法回答「这条记忆该不该进上下文」,而按功能分类可以直接对应检索策略。

维度 取值 对应工程决策
功能导向Factual / Experiential / Working决定检索信号权重
时间动态静态 / 时序 / 衰减决定是否建时间索引
模态文本 / 图像 / 音频决定是否走多模态摄入
拓扑单 Agent / 多 Agent / 跨组织决定作用域与隔离级别

常见问题

Agent 记忆最少要分几层?
至少三层:工作记忆(上下文)、情景记忆(带时间的事件)、语义记忆(事实)。只做一层(例如只加向量库)得到的是可搜索的文档库,不是记忆系统。
五层认知架构(含感觉记忆、元记忆)有必要实现吗?
多数工程系统不需要。感觉记忆在 LLM 系统中通常由多模态摄入直接覆盖,元记忆可作为置信度字段存在,不必单独建层。把它们当作知识完整性的一部分即可。
工作记忆能直接当长期记忆用吗?
不能。上下文窗口扩容只延长单次会话,跨会话状态仍会丢失,且长上下文的检索精度会随长度下降。

查看完整文档GitHub 源码