让 AI Agent 记住一切的三个层次

一个客服 Agent 聊了 10 轮后,突然问用户:「请问您叫什么名字?」

用户很生气:「我第 3 轮就告诉你了。」

这不是 Agent 的错,是记忆管理没做好

大多数 AI Agent 只有两层记忆:短期(上下文窗口)和长期(数据库)。

但真正的智能 Agent 需要三层记忆架构

第一层:工作记忆(Working Memory)

作用:当前对话的临时信息

生命周期:一次对话

存储内容
– 用户当前的问题
– 正在执行的任务
– 临时的变量和状态

典型场景

用户:「帮我订一张去北京的机票,时间是明天下午」

Agent 需要记住:
– 目的地:北京
– 时间:明天下午
– 任务:订机票

实现方式

用上下文窗口存储,但要定期总结压缩。

第1轮:用户想订机票
第5轮:总结用户需求(目的地、时间、预算)
第10轮:再次总结,添加新信息

压缩技巧

Anthropic 的做法:每 5 轮对话,用模型生成一个总结,替换之前的对话历史。

结果:上下文占用减少了 70%,信息保留率提升了 20%。

第二层:情节记忆(Episodic Memory)

作用:历史对话的记录和检索

生命周期:长期存储

存储内容
– 过去的对话历史
– 用户的偏好设置
– 任务执行记录

典型场景

用户:「我上次订的是哪家航空公司?」

Agent 从情节记忆中检索:
– 上次订票时间
– 选择的航空公司
– 票价和座位偏好

实现方式

用向量数据库存储对话历史。

对话1 → 向量化 → 存储
对话2 → 向量化 → 存储

用户提问 → 向量化 → 相似度搜索 → 返回相关对话

检索技巧

不要只存储对话,要存储「对话摘要 + 关键信息」。

Rechat 的做法:每次对话后生成 3 个摘要
– 用户意图摘要
– 关键信息提取
– 后续行动建议

结果:检索准确率提升了 40%。

第三层:语义记忆(Semantic Memory)

作用:通用知识和规则

生命周期:永久存储

存储内容
– 领域知识
– 业务规则
常见问题和答案

典型场景

用户:「你们的退款政策是什么?」

Agent 从语义记忆中检索:
– 退款政策文档
– 常见退款问题
– 退款流程

实现方式

用知识图谱或文档库。

知识库 → 分块 → 向量化 → 存储
用户提问 → 向量化 → 检索 → 生成答案

优化技巧

不是所有知识都一样重要。

Stripe 的做法:给知识分优先级。

  • 高优先级:政策、流程、常见问题
  • 中优先级:产品功能、技术细节
  • 低优先级:历史文档、旧版本信息

结果:答案相关性提升了 35%。

三层记忆的协同工作

真正的智能不是只靠一层记忆

例子:用户问「帮我订一张和上次一样的机票」

工作记忆:当前任务(订机票)

情节记忆:检索上次的订票记录
– 航空公司:CA1234
– 时间:14:00
– 座位:靠窗

语义记忆:验证规则
– 这个航班是否还在运营
– 价格是否有变化
– 政策是否有更新

综合决策
– 检查可用性
– 对比价格
– 提供建议

一个成功的架构

Character.AI 的记忆系统

第一层:当前对话的上下文(工作记忆)
– 保留最近 10 轮对话
– 每 3 轮总结一次

第二层:用户的历史对话(情节记忆)
– 存储所有历史对话
– 用向量检索相关记录

第三层:角色的知识库(语义记忆)
– 角色设定、背景故事
– 专业知识和技能

结果

  • 用户可以连续对话数周
  • Agent 记住了每个细节
  • 用户留存率提升了 50%

记忆管理的三个原则

原则一:分层管理,不要混在一起

  • 工作记忆:快进快出
  • 情节记忆:持久存储,智能检索
  • 语义记忆:通用知识,全局共享

原则二:定期清理,不要无限增长

  • 工作记忆:定期压缩
  • 情节记忆:设置过期时间
  • 语义记忆:版本控制

原则三:主动更新,不要被动等待

  • 用户信息变化时,立即更新
  • 对话结束时,保存摘要
  • 定期归档旧数据

最后的建议

AI Agent 的记忆不是「越大越好」,是「越智能越好」。

如果你的 Agent 记忆有问题,问自己三个问题:

  1. 我是否区分了短期、中期、长期记忆?
  2. 我的检索机制是「存储」还是「理解」?
  3. 我的记忆会自动清理和更新吗?

如果任何一个答案是「否」,重新设计你的记忆架构。

记忆是 Agent 智能的基础,没有记忆,就没有真正的智能

—— https://it8090.cn

抢沙发

评论前必须登录!

立即登录   注册