Agent 记忆怎么设计:认知记忆类型的分层方案
AI Agent 的记忆通常按认知科学分为三层:工作记忆(Working Memory,对应上下文窗口)、情景记忆(Episodic Memory,对应「上次发生了什么」)、语义记忆(Semantic Memory,对应事实与概念)。长期记忆(Long-Term Memory, LTM)是后两者的总称,而程序记忆(Procedural Memory)在工程上常隐式存在于系统提示与工具描述中。
Agent 记忆分为哪几层?三句话讲清
Agent 记忆的工程分层与认知科学对应:工作记忆 = 当前上下文窗口内可见的内容,容量受 token 限制;情景记忆 = 带时间戳的过往交互事件,回答「上次我们聊到哪」;语义记忆 = 从多次情景中提炼出的事实与概念,回答「用户偏好什么」。长期记忆(LTM)是情景与语义两层合起来的称呼,与短期记忆(STM)相对。
| 类型 | 英文 | 层级 | 工程载体 | 回答什么问题 |
|---|---|---|---|---|
| 工作记忆 | Working Memory | A/B | 上下文窗口(context window) | 这一轮对话里有什么 |
| 短期记忆 | Short-Term Memory, STM | A/B | 会话缓冲、最近 N 轮 | 刚才说了什么 |
| 长期记忆 | Long-Term Memory, LTM | A | 外部存储 + 检索 | 跨会话还记得什么 |
| 情景记忆 | Episodic Memory | A/B | 时序记录、向量存储 | 上次发生了什么 |
| 语义记忆 | Semantic Memory | A/B | 知识图谱、事实表 | 关于这个世界/用户的事实 |
| 程序记忆 | Procedural Memory | B | 系统提示、工具定义、技能库 | 这件事该怎么做 |
| 感觉记忆 | Sensory Memory / Buffer | C | 多模态输入缓冲 | 原始输入长什么样 |
| 自传体记忆 | Autobiographical Memory | C | 长期自我叙事 | 我是谁、经历过什么 |
| 元记忆 | Meta-Memory | C | 置信度、来源标注 | 我有多确定 |
| 陈述性/非陈述性 | Declarative / Non-Declarative | C | 理论分类轴 | (分类框架,非检索入口) |
工作记忆和长期记忆的区别是什么?
工作记忆是上下文窗口里当前可见的内容,容量受 token 预算硬限制,会话结束即失效;长期记忆是模型之外的持久存储,跨会话存在,需要主动检索才能进入工作记忆。两者的关键差异不是「记多久」,而是「谁决定它出现」——工作记忆由上下文拼接决定,长期记忆由检索相关性决定。
| 维度 | 工作记忆 | 长期记忆 |
|---|---|---|
| 容量上限 | 受 token 窗口限制 | 受磁盘限制 |
| 生命周期 | 单次会话 | 跨会话、跨进程 |
| 写入方式 | 自动(对话即内容) | 需显式抽取与写入 |
| 失效方式 | 截断丢弃 | 遗忘 / 衰减 / 删除 |
| 检索成本 | 零(已在上下文里) | 一次检索调用 |
| 失败模式 | 超出窗口被截断 | 检索不相关或召回为空 |
情景记忆和语义记忆怎么区分?工程上要不要分开存
情景记忆存的是「带时间的一次经历」,语义记忆存的是「从多次经历中抽象出的事实」。工程上应当分开存:情景记忆需要时间索引与顺序,语义记忆需要实体索引与去重。把两者混在一张向量表里,会导致「用户三个月前说过喜欢深色模式」和「用户偏好深色模式」被当成两条无关记录,无法互相印证。
| 维度 | 情景记忆 Episodic | 语义记忆 Semantic |
|---|---|---|
| 数据形态 | 带时间戳的事件 | 去时间化的断言 |
| 主要索引 | 时间、会话、参与者 | 实体、关系、谓词 |
| 典型查询 | 「上周那次讨论了什么」 | 「用户的技术栈是什么」 |
| 更新方式 | 追加为主 | 合并、覆盖、版本化 |
| 退化风险 | 事件分割粒度不当 | 冲突未消解导致自相矛盾 |
程序记忆(Procedural Memory)在 Agent 里怎么落地?
程序记忆在 Agent 中通常不以独立存储层存在,而是隐式分布在三处:系统提示里的行为规范、工具定义里的调用契约、以及技能库里的可复用流程。它的工程价值在于「不重复推理」——把已经验证过的操作序列固化下来,下次直接执行而不是重新规划。
分类法还有哪些维度?为什么会出现功能导向分类
2026 年的分类法在传统认知类型之外增加了正交维度:功能导向(Factual / Experiential / Working Memory)、时间动态(Temporal Dynamics)、模态(Modality)、拓扑(Topology)。出现功能导向维度的原因是:按认知科学分类无法回答「这条记忆该不该进上下文」,而按功能分类可以直接对应检索策略。
| 维度 | 取值 | 对应工程决策 |
|---|---|---|
| 功能导向 | Factual / Experiential / Working | 决定检索信号权重 |
| 时间动态 | 静态 / 时序 / 衰减 | 决定是否建时间索引 |
| 模态 | 文本 / 图像 / 音频 | 决定是否走多模态摄入 |
| 拓扑 | 单 Agent / 多 Agent / 跨组织 | 决定作用域与隔离级别 |
常见问题
- Agent 记忆最少要分几层?
- 至少三层:工作记忆(上下文)、情景记忆(带时间的事件)、语义记忆(事实)。只做一层(例如只加向量库)得到的是可搜索的文档库,不是记忆系统。
- 五层认知架构(含感觉记忆、元记忆)有必要实现吗?
- 多数工程系统不需要。感觉记忆在 LLM 系统中通常由多模态摄入直接覆盖,元记忆可作为置信度字段存在,不必单独建层。把它们当作知识完整性的一部分即可。
- 工作记忆能直接当长期记忆用吗?
- 不能。上下文窗口扩容只延长单次会话,跨会话状态仍会丢失,且长上下文的检索精度会随长度下降。