跳到主要内容

Agent 记忆系统

Agent 的记忆系统是实现智能对话个性化服务的核心基础设施。类似于人类的记忆机制,Agent 记忆分为两大类:

  • 短期记忆:维护单次会话内的对话上下文,确保多轮对话连贯性
  • 长期记忆:跨会话持久化用户偏好和关键信息,实现个性化体验

记忆类型概览

┌─────────────────────────────────────────────────────────────┐
│ Agent 记忆系统 │
├────────────────────────────┬────────────────────────────────┤
│ 短期记忆 │ 长期记忆 │
│ (会话级 / Thread 级) │ (用户级 / 跨会话) │
│ │ │
│ ┌──────────────────┐ │ ┌──────────────────┐ │
│ │ Checkpointer │ │ │ Store │ │
│ │ ──────────────── │ │ │ ──────────────── │ │
│ │ InMemorySaver │ │ │ InMemoryStore │ │
│ │ PyMySQLSaver │ │ │ PyMySQLStore │ │
│ │ PostgresSaver │ │ │ PostgresStore │ │
│ └──────────────────┘ │ └──────────────────┘ │
│ │ │
│ 绑定 thread_id │ 通过 namespace 隔离 │
│ 会话结束即不再活跃 │ 持久化存储,长期可用 │
└────────────────────────────┴────────────────────────────────┘

短期记忆 vs 长期记忆

维度短期记忆长期记忆
作用域单个线程 / 会话(Thread)跨会话 / 跨线程(用户级)
核心目的维护当前对话的上下文连贯性跨会话记住用户偏好和关键事实
主要存储内容对话消息历史、中间状态、工具调用结果用户偏好、历史摘要、关键事实、知识图谱
管理组件Checkpointer(InMemorySaver / PyMySQLSaver / PostgresSaver)Store(InMemoryStore / PyMySQLStore / PostgresStore)
生命周期thread_id 绑定,会话结束后不再活跃持久化存储,长期有效,独立于会话
访问方式通过 thread_id 自动加载和保存通过 namespace + Tool 主动读写
典型应用场景多轮对话、任务中断恢复、对话回溯用户画像、个性化推荐、跨会话知识积累

核心组件

短期记忆三要素

短期记忆的实现依赖三个核心要素的协同工作:

要素说明示例
State定义需要持久化的状态结构,包含消息列表等字段MessagesState、自定义 TypedDict
Checkpointer状态持久化引擎,负责自动保存和恢复状态InMemorySaverPyMySQLSaver
Thread ID会话唯一标识,用于区分不同对话{"configurable": {"thread_id": "abc"}}

长期记忆三要素

长期记忆的实现依赖三个核心要素的协同工作:

要素说明示例
Store跨会话持久化存储引擎,独立于线程InMemoryStorePyMySQLStore
Namespace命名空间,用于数据隔离(通常按用户划分)("memory", "user_123")
ToolAgent 通过工具主动读写长期记忆save_memorysearch_memory

记忆类型选择指南

场景推荐记忆类型理由
多轮对话保持上下文短期记忆仅需在当前会话内记住上下文
任务中断后恢复执行短期记忆通过 Checkpointer 恢复到中断点
记住用户的语言偏好长期记忆偏好需跨会话持久化
记住用户历史购买记录长期记忆历史数据需长期保留
客服机器人多轮问答短期记忆单次咨询内的上下文连贯
个性化学习助手短期 + 长期短期维护当前对话,长期记录学习进度和偏好
企业知识问答系统短期 + 长期短期处理多轮问答,长期积累用户反馈和知识

企业级记忆架构

架构要点

层级组件职责
服务层Agent 应用统一调度短期和长期记忆
短期记忆Checkpointer + 数据库thread_id 保存会话状态,支持中断恢复
长期记忆Store + 数据库 + 向量库namespace 隔离用户数据,支持语义搜索