跳转至

智能体记忆的四种类型

概述

智能体记忆的权威分类体系来源于 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]

信息流转

  1. 摄入:新信息进入工作记忆(上下文窗口)
  2. 晋升:重要事实 → 语义记忆;事件 → 情景记忆;习得规则 → 程序性记忆
  3. 检索:将相关记忆检索并注入上下文窗口(工作记忆)
  4. 整合:定期审查情景记忆,从中提炼语义事实和程序性规则

设计原则

  • 类型匹配存储:将存储技术与记忆类型对应——语义/情景记忆用向量数据库,程序性记忆用指令文件或微调
  • 按需加载:仅在需要时检索记忆,而非预先全量加载
  • 选择性持久化:并非所有内容都需要记住——对从工作记忆晋升的内容要有所取舍
  • 优雅降级:即使记忆检索失败,智能体也应能正常运转

记忆类型对比

维度 工作记忆 语义记忆 情景记忆 程序性记忆
存储内容 活跃推理状态 事实与知识 过往经历 行为规则
回答的问题 "我现在在做什么?" "什么是真的?" "之前发生了什么?" "我应该如何行动?"
持久性 仅限会话 永久 跨会话 永久
存储位置 上下文窗口 向量数据库 / 知识图谱 向量数据库 / 日志 系统提示词 / 权重
更新方式 每次推理步骤 实体抽取、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 状态平面为所有智能体提供一致且权威的共享视图,包括任务状态、智能体间交接载荷,以及多个智能体的汇总分析。访问控制器为每个智能体限定读写范围。

参见

参考资料