智能体记忆的四种类型
概述
智能体记忆的权威分类体系来源于 Cognitive Architectures for Language Agents (CoALA) 论文(Sumers et al.,普林斯顿大学,2023 年 — arXiv:2309.02427)。该论文借鉴认知科学,将记忆划分为一种主动记忆类型和三种长期记忆类型。三种长期记忆类型的区别在于存储的信息种类,而非存储时长。
核心设计挑战在于:哪些内容应保留在昂贵且高速的上下文窗口中,哪些应卸载到外部存储——以及针对不同类型的知识,哪种外部存储才是合适的归宿。
记忆类型一:工作记忆
类比:RAM——速度快、容量有限,会话结束后即清空。
定义
智能体当前正在处理的活跃状态,包括正在进行的对话以及模型在推理时可见的草稿区——即 LLM 上下文窗口中的所有内容。
特征
- 速度:即时(已在上下文中,无需检索)
- 容量:受模型上下文窗口限制(4K–1M+ token,因模型而异)
- 持久性:临时——会话或任务结束后清空
- 成本:每 token 成本最高(LLM 推理费用)
存储内容
- 当前对话历史
- 活跃任务状态与中间结果
- 最近检索的文档或工具输出
- 系统提示词与智能体人格设定
- 多步骤推理的草稿笔记
管理策略
- 滑动窗口:仅保留最近 N 条消息,丢弃最旧的
- Token 裁剪:删除消息以保持在 token 限制内
- 递归摘要:将较旧的消息压缩为摘要
- 上下文固定:锁定关键信息(系统提示词、用户偏好),使其永不被丢弃
解决方案
- LangGraph Checkpoints:保存并恢复对话状态
- LangChain ConversationBufferWindowMemory:固定大小的滑动窗口
- OpenAI Threads:通过 API 管理对话历史
- Redis / Upstash:面向高速应用的低延迟会话存储
记忆类型二:语义记忆
类比:百科全书或知识图谱——关于世界的持久事实。
定义
智能体积累的关于用户、实体和世界的持久事实与知识:偏好、规范定义、结构化参考数据。这是"什么是真的"的存储层——跨所有会话持久存在,与知识的习得时间和方式无关。
特征
- 速度:中等——需要检索(向量搜索、图查询或键值查找)
- 容量:非常大——可存储数百万条事实
- 持久性:永久——无限期保存
- 抽象层次:高层次的事实与关系,而非原始对话日志
存储内容
- 用户偏好与档案信息(如"用户偏好 Python 而非 JavaScript")
- 与智能体目标相关的领域知识与事实
- 实体关系(如"用户 X 负责项目 Y,项目 Y 的预算为 Z")
- 产品目录、定价、规范定义
- 组织知识(政策、流程、参考数据)
管理策略
- 向量 RAG:将知识嵌入为向量以实现语义检索
- 知识图谱:对实体间关系建模(Neo4j、FalkorDB)
- 实体抽取:从对话中提取并存储结构化事实
- 矛盾消解:当新信息取代旧信息时,更新或覆盖已有事实
解决方案
- Mem0:自动提取和精炼用户事实与偏好
- Zep:用于随时间演化事实的时序知识图谱
- LangMem:LangChain 为 LangGraph 提供的长期学习层
- AWS Bedrock Memory / Vertex Memory Bank:云托管的语义记忆
记忆类型三:情景记忆
类比:可搜索的日记——带时间戳和上下文的特定历史事件记录。
定义
智能体可以回忆的具体过往经历——上一个会话发生了什么、用户三周前问了什么、类似任务上次是如何解决的。这是"发生了什么"的存储层——以时间为索引的事件,而非抽象化的事实。
特征
- 速度:中等——需要检索(向量搜索或结构化查询)
- 容量:较大——可存储数千条情节
- 持久性:跨会话——在多次对话间持续保存
- 粒度:带时间戳、结果和元数据的高保真日志
存储内容
- 过去对话及其结果的记录
- 工具调用日志(含输入、输出及成功/失败状态)
- 用户反馈与纠正
- 含时序和资源使用情况的任务执行历史
- 错误日志与调试信息(如"工具 X 上周二在输入 Y 上失败")
管理策略
- 向量嵌入:对情节摘要进行嵌入以支持语义搜索
- 结构化元数据:存储时间戳、会话 ID 和结果标签以便筛选
- 相关性评分:检索与当前上下文最相似的情节
- 保留策略:根据时效性或相关性归档或删除旧情节
存储技术
- 向量数据库:Pinecone、Chroma、Weaviate,用于对历史事件进行语义搜索
- 结构化日志:PostgreSQL、MongoDB(含元数据索引)
- AgentFS:基于 SQLite 的虚拟文件系统,用于智能体日志
记忆类型四:程序性记忆
类比:技能手册或员工手册——规范行为的规则与流程。
定义
塑造智能体行为的规则、指南和习得的流程——如何应对客户、优先使用哪些工具、哪些事不能做。这是"如何行动"的存储层。与语义记忆(关于世界的事实)不同,程序性记忆编码的是智能体在各种情境下应如何行动。
特征
- 速度:嵌入系统提示词时即时可用;存储在外部时需检索
- 容量:不固定——从系统提示词中的数百 token 到大型规则库不等
- 持久性:永久——通过显式配置或反思驱动的学习来更新
- 形式:规则、指南、工作流、微调权重或代码
存储内容
- 行为规则(如"账单纠纷始终上报人工客服")
- 工具偏好(如"涉及 X 类任务时优先使用工具 A 而非工具 B")
- 负面约束(如"不得向外部用户透露内部定价")
- 智能体人格与沟通风格指南
- 从过往成功与失败中提炼的习得流程(如"方法 A 已失败两次,请改用方法 B")
- 工作流模板与标准操作规程
管理策略
- 系统提示词 / AGENTS.md:将规则直接编码到智能体的指令中
- 反思 / 整合:后台循环审查情景日志,提炼出可泛化的规则
- 微调:将常用流程固化到模型权重中
- 规则库:当规则集较大时,从外部存储检索所需流程
解决方案
- AGENTS.md / 指令文件:在智能体代码库中以显式形式存储行为规则
- LangMem procedural store:LangChain 对程序性记忆的支持,与语义记忆并列
- 微调模型:通过 RLHF 或监督微调将流程编码到权重中
- 反思型智能体:从情景日志中提取规则的后台智能体(参见 Generative Agents)
四种类型的协同运作
User Input
↓
[Working Memory] ← Active context, current conversation, scratchpad
↓ (retrieve relevant past experiences)
[Episodic Memory] ← What happened last time, prior session outcomes
↓ (retrieve relevant facts and knowledge)
[Semantic Memory] ← User preferences, domain knowledge, entity facts
↓ (apply behavioral rules)
[Procedural Memory] ← How to act, which tools to use, what not to do
↓
LLM Reasoning → Response
↓
[Update all types as appropriate]
信息流转
- 摄入:新信息进入工作记忆(上下文窗口)
- 晋升:重要事实 → 语义记忆;事件 → 情景记忆;习得规则 → 程序性记忆
- 检索:将相关记忆检索并注入上下文窗口(工作记忆)
- 整合:定期审查情景记忆,从中提炼语义事实和程序性规则
设计原则
- 类型匹配存储:将存储技术与记忆类型对应——语义/情景记忆用向量数据库,程序性记忆用指令文件或微调
- 按需加载:仅在需要时检索记忆,而非预先全量加载
- 选择性持久化:并非所有内容都需要记住——对从工作记忆晋升的内容要有所取舍
- 优雅降级:即使记忆检索失败,智能体也应能正常运转
记忆类型对比
| 维度 | 工作记忆 | 语义记忆 | 情景记忆 | 程序性记忆 |
|---|---|---|---|---|
| 存储内容 | 活跃推理状态 | 事实与知识 | 过往经历 | 行为规则 |
| 回答的问题 | "我现在在做什么?" | "什么是真的?" | "之前发生了什么?" | "我应该如何行动?" |
| 持久性 | 仅限会话 | 永久 | 跨会话 | 永久 |
| 存储位置 | 上下文窗口 | 向量数据库 / 知识图谱 | 向量数据库 / 日志 | 系统提示词 / 权重 |
| 更新方式 | 每次推理步骤 | 实体抽取、RAG 写入 | 事件日志 | 反思、微调 |
| 人类类比 | 工作记忆 | 语义记忆 | 自传体记忆 | 技能 / 习惯记忆 |
AWS 时长 × 范围记忆分类法
AWS 提出了一套补充性的记忆分类法,使用时长(短期与长期)和范围(单智能体与多智能体)两个维度映射 CoALA 的记忆类型。这套分类有助于为每种记忆需求选择合适的 AWS 服务。
| 记忆类型 | 时长 | 范围 | AWS 服务 | 对应的 CoALA 类型 |
|---|---|---|---|---|
| 上下文内工作记忆 | 仅限当前推理 | 单智能体 | Amazon Bedrock(上下文窗口、KV cache) | 工作记忆 |
| 短期会话记忆 | 会话生命周期(数分钟至数小时) | 单智能体 | Amazon ElastiCache、Amazon DynamoDB、LangGraph checkpointer | 工作记忆(持久化) |
| 跨智能体共享记忆 | 工作流生命周期 | 多智能体 | Amazon DynamoDB、Amazon S3、Amazon ElastiCache | 情景记忆 + 工作记忆(共享状态) |
| 语义记忆 | 持久(数天至永久) | 智能体类型 / 领域 | Amazon Bedrock Knowledge Bases、MongoDB Atlas、Pinecone、Neo4j AuraDB | 语义记忆 + 情景记忆 |
会话记忆实现模式: - 窗口 / 摘要 / 完整历史策略用于管理单智能体调用中的短期会话记忆 - LangGraph checkpointer 中间件在每轮序列化状态,并在下一轮加载;存储后端可使用 DynamoDB 或 ElastiCache
跨智能体共享状态:在多智能体工作流中,DynamoDB 状态平面为所有智能体提供一致且权威的共享视图,包括任务状态、智能体间交接载荷,以及多个智能体的汇总分析。访问控制器为每个智能体限定读写范围。
参见
参考资料
- Cognitive Architectures for Language Agents (CoALA) — Sumers et al.(普林斯顿大学,2023 年)。为语言智能体定义了四类记忆分类体系。
- AWS Marketplace — Building Agentic Systems: Agent Memory Systems (Module 7) —— 时长 × 范围分类法、跨智能体共享状态模式与 AWS 服务映射