Skip to content

Agent 记忆系统设计

你将学到什么

  • Agent 为什么需要记忆系统
  • 三层记忆架构(工作记忆、情节记忆、语义记忆)
  • 记忆系统的 5 个核心设计问题
  • 三种主流实现方案的选择标准
  • 记忆系统的产品设计要点(透明度、隐私、成本)

为什么重要:记忆系统是 Agent 从"工具"升级为"助手"的关键。没有记忆的 Agent,每次对话都是全新开始,无法提供个性化服务。


为什么 Agent 需要记忆?

没有记忆的 Agent,每次对话都是全新开始——用户今天告诉你"我喜欢简洁风格",明天又要重新说一遍。这不是助手,是金鱼。

记忆系统让 Agent 能够:

  • 持久化用户偏好:跨会话记住用户习惯
  • 任务连续性:长期任务在多轮对话中保持状态
  • 知识积累:随着使用时间增长,越来越懂用户
  • 个性化服务:基于历史行为定制响应

三层记忆架构

┌─────────────────────────────────────┐
│   第一层:工作记忆(Working Memory)    │
│   当前会话的对话历史                    │
│   存储:内存(最快)                    │
│   容量:有限(最近 10-20 轮)           │
└─────────────────────────────────────┘
            ↓ 重要信息提取
┌─────────────────────────────────────┐
│   第二层:情节记忆(Episodic Memory)   │
│   本次会话的关键信息                    │
│   存储:向量数据库                     │
│   容量:中等(单会话级别)               │
└─────────────────────────────────────┘
            ↓ 知识提炼
┌─────────────────────────────────────┐
│   第三层:语义记忆(Semantic Memory)   │
│   用户长期偏好、历史知识                │
│   存储:知识图谱 + 向量库              │
│   容量:无限(跨会话持久化)            │
└─────────────────────────────────────┘

类比理解

记忆层级产品类比特点典型内容
工作记忆当前打开的浏览器标签页快速但有限最近 10-20 轮对话
情节记忆最近的浏览历史可回溯本次会话的关键决策、用户反馈
语义记忆书签收藏夹永久保存用户偏好、历史任务、知识积累

面试加分点

能说出这个架构借鉴了认知心理学的"多存储模型"(Atkinson-Shiffrin Model),展示你对 Agent 设计的理论基础有了解。

互动练习:设计记忆策略

场景:你在设计一个代码助手 Agent,用户在第 1 天问"如何用 Python 读取 CSV",第 30 天又问"上次那个 CSV 的代码在哪?"

应该用哪一层记忆存储这个信息?为什么?

查看答案

答案:语义记忆(第三层)

原因

  1. 跨会话:第 1 天和第 30 天是两个不同的会话,工作记忆和情节记忆都已清空
  2. 长期价值:用户可能会反复参考这段代码,属于"知识积累"
  3. 检索需求:需要通过语义相似度检索("CSV 的代码")找到历史记录

存储格式建议

json
{
  "type": "code_snippet",
  "language": "Python",
  "topic": "读取 CSV",
  "code": "import pandas as pd\ndf = pd.read_csv('file.csv')",
  "timestamp": "2026-04-01",
  "usage_count": 1
}

产品设计建议

  • 在 UI 上提供"历史代码片段"功能,让用户快速查找
  • 当用户问类似问题时,自动推荐历史代码

五个核心设计问题

在产品设计阶段,需要回答这五个问题。

1. 什么时候存储?

不是所有对话内容都值得记忆,触发存储的条件:

触发条件示例存储内容
用户明确提到偏好"我喜欢简洁风格"{偏好: "简洁风格"}
用户确认了重要决策"就用这个方案"{决策: "方案A", 时间: "2026-04-24"}
任务完成时的关键状态"已完成代码重构"{任务: "重构", 状态: "完成"}
用户纠错时"不对,我要的是B"{纠正: "A→B", 负反馈: true}

常见误区

不要把所有对话都存入记忆。闲聊、重复问题、无关信息会污染记忆系统,降低检索质量。


2. 用什么格式存储?

格式适用场景优点缺点示例
原始文本对话内容保真回放完整保留上下文占用空间大完整对话记录
结构化摘要快速检索用户属性查询效率高丢失细节{name: "张三", 偏好: ["简洁", "中文"]}
向量 Embedding语义相似度检索支持模糊匹配不可读768 维向量
知识图谱实体关系密集的场景关系推理能力强构建成本高用户-偏好-场景三元组

PM 建议:大多数场景用"结构化摘要 + 向量 Embedding"的组合方案。


3. 如何检索?

检索方式原理适用场景优缺点
关键词检索精确匹配查找特定实体(用户名、订单号)快但不灵活
向量相似度检索语义匹配"找相关记忆"灵活但可能不精确
混合检索两者结合大多数场景兼顾准确性和语义理解

实战建议:先用关键词过滤,再用向量相似度排序。


4. 如何遗忘?

记忆系统不能无限增长,常见的遗忘策略:

策略原理适用场景实现难度
时间衰减越旧的记忆权重越低通用场景简单
频率优先经常被访问的记忆优先保留个人助手中等
显式删除用户主动请求删除GDPR 合规必须支持简单
容量限制超过阈值时删除最旧/最少访问的记忆成本控制简单

合规要求

GDPR 和《个人信息保护法》要求用户有"被遗忘权"。产品必须支持用户删除特定记忆或全部记忆。


5. 如何处理矛盾信息?

用户今天说"喜欢中文",明天说"喜欢英文",两条记忆冲突怎么办?

策略原理适用场景用户体验
时间优先新信息覆盖旧信息大多数场景(最常用)简单直接
置信度加权多次确认的信息权重更高关键偏好设置更稳定
用户确认当矛盾时主动询问用户高风险决策最安全但打断流程

PM 建议:默认用"时间优先",关键信息用"用户确认"。

互动练习:处理矛盾记忆

场景:你的 AI 助手记住了用户偏好"每天 9 点提醒开会",但今天用户说"今天不要提醒"。

应该如何处理这个矛盾?

查看答案

分析:这是"长期偏好"和"临时例外"的冲突。

推荐方案

  1. 不覆盖长期记忆:保留"每天 9 点提醒"的偏好
  2. 添加临时例外:记录"2026-04-24 不提醒"
  3. 明天恢复:第二天继续按原偏好提醒

存储结构建议

json
{
  "preference": {
    "reminder_time": "09:00",
    "enabled": true
  },
  "exceptions": [
    {"date": "2026-04-24", "action": "skip"}
  ]
}

产品设计建议

  • 在 UI 上区分"永久设置"和"临时调整"
  • 当用户说"今天不要"时,自动识别为临时例外

三种主流实现方案

方案 1:Mem0(最简单,推荐入门)

适合场景:对话 Agent、个性化推荐、快速原型

核心优势

  • ✅ 自动实体提取(不需要手动写提取逻辑)
  • ✅ 自动去重(同一信息不会存两次)
  • ✅ 支持多种向量数据库后端(Pinecone / Qdrant / Chroma)
  • ✅ 10 行代码就能集成,工程门槛很低

需要注意

  • ⚠️ 信息提取依赖 LLM 调用,有额外 Token 成本
  • ⚠️ 生产环境需要更多测试

PM 评估维度

  • 开发成本:⭐⭐⭐⭐⭐(最低)
  • 灵活性:⭐⭐⭐(中等)
  • 成本:⭐⭐⭐(中等,依赖 LLM 调用)

方案 2:MemGPT(虚拟内存机制)

适合场景:长期对话、复杂任务、上下文窗口受限的场景

核心思路:模仿操作系统的虚拟内存——工作中的信息放"内存"(上下文),不用的信息放"磁盘"(外部存储),需要时换入。

核心优势

  • ✅ 解决"上下文窗口有限但对话很长"的根本矛盾
  • ✅ 对用户透明——用户感觉 Agent 一直"记得",但实际上在动态换页
  • ✅ 适合超长对话场景(100+ 轮)

需要注意

  • ⚠️ 延迟比 Mem0 高(需要额外的内存管理操作)
  • ⚠️ 实现复杂度较高

PM 评估维度

  • 开发成本:⭐⭐⭐(中等)
  • 灵活性:⭐⭐⭐⭐(高)
  • 成本:⭐⭐⭐⭐(较低,减少上下文 Token)

方案 3:自定义实现(LangChain / LlamaIndex)

适合场景:有特殊需求、需要精细控制记忆策略的团队

核心优势

  • ✅ 最灵活,可以完全定制记忆策略
  • ✅ 适合把记忆系统作为核心竞争力的产品(如个人 AI 助手)
  • ✅ 可以深度优化成本和性能

需要注意

  • ⚠️ 工程成本最高
  • ⚠️ 需要工程团队深度参与设计
  • ⚠️ 维护成本高

PM 评估维度

  • 开发成本:⭐(最高)
  • 灵活性:⭐⭐⭐⭐⭐(最高)
  • 成本:⭐⭐⭐⭐⭐(可深度优化)

方案选择决策树

是否有特殊记忆策略需求?
├─ 否 → 用 Mem0(快速上线)
└─ 是 → 是否需要超长对话支持?
    ├─ 是 → 用 MemGPT
    └─ 否 → 是否有工程资源深度定制?
        ├─ 是 → 自定义实现
        └─ 否 → 用 Mem0 + 后续迭代

记忆系统的产品设计要点

1. 透明度设计

用户应该能够:

功能为什么重要实现建议
查看用户需要知道 AI 记住了什么提供"记忆管理"页面,列出所有记忆
编辑修正不准确的记忆每条记忆旁边有"编辑"按钮
删除清除特定记忆或全部记忆支持单条删除和批量清空
关闭选择不使用记忆功能提供"隐私模式"或"不保存记忆"选项

合规要求

这既是产品体验的要求,也是 GDPR / 《个人信息保护法》的合规要求。不支持用户管理记忆的产品,在欧盟和中国可能面临法律风险。


2. 隐私边界

风险点应对策略
敏感信息(医疗、财务、密码)不要放入长期记忆,或加密存储
多用户场景下记忆串用记忆隔离是基本要求,按 user_id 严格隔离
记忆数据泄露记忆数据需要和普通对话数据一样受到保护
第三方访问明确告知用户记忆数据是否会被第三方访问

3. 成本控制

记忆系统会带来额外的 Token 消耗:

成本来源估算优化方法
检索相关记忆每次对话 +100-500 Token限制检索数量(Top-3)
自动提取和存储每次存储 +200-1000 Token只在关键时刻触发存储
压缩摘要每次压缩 +500-2000 Token定期批量压缩,而非实时

PM 建议:在产品设计时,把记忆功能的 Token 成本单独列出来,纳入产品成本模型。

互动练习:成本估算

假设你的 AI 助手产品有 10,000 DAU,每个用户每天对话 10 轮,每轮检索记忆消耗 200 Token。

使用 GPT-4o($2.5 / 1M Token),记忆检索的月成本是多少?

查看答案

计算过程

  1. 每天总对话轮次:10,000 用户 × 10 轮 = 100,000 轮
  2. 每天记忆检索 Token:100,000 轮 × 200 Token = 20,000,000 Token = 20M Token
  3. 每天成本:20M Token × $2.5 / 1M Token = $50
  4. 每月成本:$50 × 30 天 = $1,500

优化建议

  • 限制检索数量:从 Top-5 减少到 Top-3,成本降低 40%
  • 缓存热门记忆:对高频访问的记忆做缓存,减少重复检索
  • 使用更便宜的模型:用 GPT-4o-mini($0.15 / 1M Token)做记忆检索,成本降低 94%

检查点

在继续之前,确保你能回答:

  • [ ] 能说出三层记忆架构的区别和适用场景
  • [ ] 能回答记忆系统的 5 个核心设计问题
  • [ ] 能根据产品需求选择合适的实现方案(Mem0 / MemGPT / 自定义)
  • [ ] 能设计记忆系统的透明度功能(查看/编辑/删除)
  • [ ] 能估算记忆系统的 Token 成本

专为 AI 产品经理打造