#大模型#AI Agent

Agent 的记忆系统设计:短期、长期与遗忘

没有记忆的 Agent 每次都从零开始,谈不了"连续协作"。本文讲清三层记忆模型(工作/短期/长期)、长期记忆的存储与检索、最容易被忽略的"写入策略"与"遗忘机制",以及一个生产级 Agent 记忆系统该怎么搭——记忆不是越多越好,而是越准越好。

本文要点

  • 主题聚焦:大模型、AI Agent
  • 适合人群:独立开发者、全栈工程师、AI 应用开发者
  • 核心价值:快速理解背景、实践路径、常见误区和工程建议
作者 @admin·发布于 2026年2月21日·更新于 2026年7月23日

你和 Agent 聊到一半切个任务回来,它把你忘光了——这是"无记忆"。一个能持续协作的 Agent,必须记住:你是谁、之前定了什么、偏好什么、哪些路走过。记忆系统是 Agent 从"一次性工具"变成"长期伙伴"的关键。

但记忆工程里最容易犯的错,是"什么都记"——结果记了一堆噪声,反而让 Agent 更糊涂。这篇讲怎么把记忆做对。

一、三层记忆模型

借用认知科学的框架,把 Agent 记忆分三层,每层职责不同:

层实现寿命作用
工作记忆当前 prompt 的上下文一次请求这一轮模型能看到的所有信息
短期记忆会话状态(数据库/缓存)一次会话多轮对话的连续性
长期记忆跨会话的知识库永久跨会话的用户偏好、事实、决策

很多人把这三层混在"上下文窗口"里,结果窗口塞爆、关键信息被冲掉。正确的做法是分层存、按需取——工作记忆是"眼前",短期是"今天",长期是"过去",每轮只把相关的那一点点取进工作记忆。

二、长期记忆:存什么、怎么存

长期记忆是差异化所在(前两层大家差不多)。核心是两个问题:存什么,怎么存。

存什么(类型):

  • 事实型:"用户是后端工程师""项目用 Next.js"——结构化、稳定。
  • 偏好型:"喜欢简短回答""代码用 TypeScript"——半稳定。
  • 事件型:"上周一起重构了支付模块"——带时间、易过期。
  • 关系型:"A 是 B 的负责人"——图结构。

怎么存(存储):

  • 结构化表(Postgres):事实型、偏好型。精确查询("这个用户的角色"),快、准。
  • 向量库(pgvector/Qdrant):事件型、自由文本。语义检索("和这次任务相关的历史")。
  • 图数据库(可选):复杂关系网络。多数项目用不上。

经验:别一上来就全向量。事实/偏好走结构化表(精确、便宜),只有"语义相关"的检索才用向量。两者混合是主流。

三、最容易被忽略的:写入策略

记什么、不记什么,比"怎么检索"更重要。无脑把每轮对话存进记忆库,一周后库里全是"好的""嗯""请继续"这种噪声,检索时反而淹没真信息。

一套写入策略:

  1. 显式记忆 > 隐式推断。 "记一下:我喜欢用 pnpm"(显式)值得记;"从对话推断用户可能喜欢 pnpm"(隐式)要谨慎——推断错的记忆是污染。
  2. 抽取再存,别存原文。 把对话里的关键事实抽成结构化条目({type: "preference", key: "package_manager", value: "pnpm"}),而不是存整段对话。存原文 = 记忆库变聊天记录,没法用。
  3. 重要性过滤。 高价值才记(用户明确说的、反复出现的、决策性的)。一次性寒暄、临时性问题不记。
  4. 去重与合并。 同一个事实多次出现,合并成一条(带"最近确认时间"),而不是存 N 条。

写入可以由一个轻量模型专门做("从这轮对话里,有没有值得长期记住的事实?抽成结构化条目"),主 Agent 只管对话。写入是独立的、可异步的、可人工审核的。

四、检索:把对的记忆取进工作记忆

每轮开始,从长期记忆里召回相关的少数几条,注入工作记忆。和 RAG 同构:

  • 按用户/会话隔离:只搜这个用户的记忆(别把别人的偏好混进来)。
  • 按相关性 + 时效:相关度高的优先,过时的降权。
  • 少量精取:取 3–5 条最相关的,别取几十条污染上下文。
  • 带上元数据:每条记忆带"来源/时间/置信度",让模型知道这条有多可信。

五、遗忘:记忆系统的另一半

只记不忘的记忆库会越来越糟:陈旧信息("用户用 Vue"——其实早换 React 了)、错误推断、冲突记录堆积,最终检索质量崩塌。遗忘机制和写入一样重要。

几种遗忘:

  • 更新覆盖:新事实覆盖旧事实("现在用 React" 替换 "用 Vue")。带时间戳的字段,最新的赢。
  • 过期淘汰:事件型记忆(带时间)超期自动归档/删除。
  • 置信度衰减:低置信度、长期未被引用的记忆,逐渐降权。
  • 冲突仲裁:同一事实多条记录冲突时,用规则仲裁(最新、最高置信度、或人工确认)。

一个健康的记忆库,条目数应该是稳定的(有进有出),而不是无限增长。如果你的记忆库只增不减,说明缺了遗忘机制。

六、隐私与安全

记忆里最容易踩雷:

  • 跨用户泄露:记忆按 user_id 严格隔离,检索时强制带 user_id 过滤——这是代码层的硬约束,不是 prompt 里说一句。
  • 敏感数据:身份证、密码、密钥不该进记忆库(即便用户"告诉"了)。写入前做敏感信息检测。
  • 可删除:用户要"忘记我的一切",必须能彻底删(合规要求,GDPR 之类)。

七、实战架构小结

一个生产级 Agent 记忆系统的最小架构:

text
对话轮 → 主 Agent(工作记忆)
          │
          ├─ 写入管线(异步): 抽取事实 → 过滤 → 去重 → 存(表/向量)
          └─ 检索(每轮开始): 按 user_id + 相关性,取 top-3~5 注入工作记忆

后台: 遗忘任务(过期/覆盖/衰减) + 隐私清理

关键点:写入和检索分离、记忆按类型分层、有遗忘机制、按用户隔离。

总结

Agent 的记忆,质量远比数量重要。三层模型(工作/短期/长期)管寿命,写入策略管"记什么"(显式 > 隐式、抽取而非原文、重要性过滤),检索管"用什么"(少量精取、按用户隔离),遗忘管"别变垃圾场"(更新覆盖、过期、衰减)。

记住一句话:没有遗忘的记忆系统不是好记忆系统。 一个克制地只记对的、主动忘掉错的的记忆系统,远比一个"什么都记"的更让 Agent 表现稳定。记忆工程是 Agent 长期价值的根基,值得当作一等公民来设计。

Related

相关推荐