AI Agent记忆系统设计:短期、长期与语义记忆的工程实现

📅 2026/4/26 ✍️ 小文 📖 约 1 分钟

Agent 记不住事?从短期对话缓冲、长期向量库到语义摘要记忆,讲清三类记忆的架构设计、写入时机与检索策略,附主流框架实现方案。

Agent 为什么”转头就忘”

一个能连续帮你干活的 Agent,最大的短板往往是记忆。默认情况下,Agent 只有当前对话窗口——关掉就忘光。要让它在多轮、多天、多任务中”记得住”,需要专门设计记忆系统。

三类记忆,各司其职

借鉴认知科学,Agent 记忆分三层:

1. 短期记忆(工作记忆) 当前对话的上下文。保持任务连贯性,但窗口有限,需要滚动压缩。

2. 长期记忆(事实记忆) 跨会话保留的用户偏好、关键事实。存进向量数据库,按需检索。

3. 语义记忆(摘要记忆) 把长对话浓缩成要点,既省 Token 又保留主干。

架构设计:写入与读取

记忆系统的核心是回答两个问题:什么时候写,什么时候读。

写入时机:

  • 对话结束时,抽取”值得记住的事实”存入长期记忆
  • 每 N 轮对话,生成一段摘要追加到语义记忆
  • 用户显式说”记住这个”时立即写入

读取策略:

  • 每条新消息进来,先用当前问题去长期记忆检索相关事实
  • 把检索结果 + 最近几轮对话 + 摘要一起拼进上下文
  • 分层注入:事实在前,对话在后,摘要兜底

关键:别什么都记

新手最容易犯的错是无差别记录一切,结果检索时噪音淹没信号。正确做法:

  • 只记稳定信息:偏好、身份、长期目标
  • 时效信息加过期:临时状态标记 TTL
  • 冲突时更新而非追加:用户改了偏好,覆盖旧值

实现示意

# 写入长期记忆
memory_store.add(text="用户偏好简洁输出,不用表格",
                 metadata={"type": "preference", "user": uid})

# 对话前检索
hits = memory_store.search(query=user_input, top_k=3)
context = build_context(hits, recent=last_n_turns, summary=running_summary)

主流框架里,LangGraph 提供持久化状态,Mem0、Zep 专注记忆层,都能省去从零搭建。

评估记忆系统好不好

别只看”能不能记住”,要看:

  1. 召回率:该记的记住了吗?
  2. 精确率:检索出来的有没有跑题?
  3. 冲突处理:偏好变化时是否更新正确?
  4. 成本:检索和注入带来的额外 Token 开销是否可接受?

小结

好的记忆系统让 Agent 从”每次重新认识你”变成”越用越懂你”。设计要点是分层、择时、去噪:短期保连贯,长期保个性,语义保效率;写入要克制,读取要精准。

记住:Agent 的记忆不是”存得越多越好”,而是”在对的时候用对的信息”。

📤 分享到