AI 记忆治理:让 Agent 学会"忘"¶
记忆污染——Agent 最容易被忽视的陷阱,也是最难排查的。一条错误记忆一旦沉淀,会稳定地影响所有后续决策。这不是 bug,不是模型不够聪明,而是缺了一道叫"闸门"的东西。本文拆解三层记忆治理框架,帮助理解生产级 Agent 记忆的核心设计问题。
目录¶
存储 vs 记忆:一个根本区别¶
核心区别¶
| 维度 | 存储 | 记忆 |
|---|---|---|
| 本质 | 被动数据保存 | 主动回忆与调用 |
| 触发 | 显式调用 | 上下文/条件触发 |
| 目的 | 数据持久化 | 理解过去、优化决策 |
| 类比 | 仓库管理员(找到相似材料) | 主厨(决定今天哪些材料能上桌) |
RAG 不是 Memory¶
RAG 解决的是"能不能找到相似内容"。Memory 要多回答一层:
RAG: 有没有跟这个相似的材料?→ 搬几箱过来
Memory:这些材料今天能不能用?
├─ 这段历史现在还有效吗?
├─ 是长期偏好还是一次性要求?
├─ 是正式政策还是内部讨论稿?
├─ 是用户让记的还是系统自己推断的?
└─ 跟当前信息冲不冲突?
旧材料不是一定不能用,但得先过闸门。 没有这道闸门,Agent 就是被自己的历史拖着走。
记忆污染:被自己的历史拖着走¶
什么是记忆污染¶
旧信息未经重新审查就直接影响了新判断。
三种典型场景¶
| 场景 | 表现 | 根因 |
|---|---|---|
| 偏好固化 | 你说"今天赶时间别展开",下次复杂问题也短答 | 临时约束被当成长期偏好存了 |
| 知识过期 | 公司换了退款政策,Agent 还拿旧政策回复新用户 | 没有版本/时效验证 |
| 错误沉淀 | Agent 记住了一次稿子的错误判断,后面反复带回来 | 没有纠错和覆盖机制 |
为什么更难排查¶
这不是模型笨。正相反,很多时候是模型太会补全——它把旧资料、模糊记忆、自己的语言能力混在一起,生成一个听着很顺、但实际上已经过期或者越界的答案。
更长的上下文、更大的向量库、更强的模型都不能自动解决这个问题。有确实有帮助,但如果没规则,它带进来的不是智慧,而是更大的历史包袱。
记忆规模 vs 治理需求
记忆少 → 不需要管理
记忆多 → 必须管理
↑
你会发现:真正能落地的 Memory
越来越不像搜索框,更像一套治理系统
它得回答:来源是哪?谁存进去的?何时失效?冲不冲突?听谁的?
三层记忆治理框架¶
Agent = Model + Harness
┌──────────────────────────────────────────────────┐
│ Memory System │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ Ledger │──→│ Views │──→│ Policy │ │
│ │ 原始账本 │ │ 派生视图 │ │ 调用策略 │ │
│ └──────────┘ └──────────┘ └──────────────┘ │
│ ↑ ↑ ↑ │
│ 发生了什么 整理成了什么 什么时候允许 │
│ 从哪来的 能更新能覆盖 它影响当前决策 │
└──────────────────────────────────────────────────┘
第一层:Ledger(原始账本)¶
记的是:发生了什么、从哪来的、什么时候的事、前后是什么。
类比财务:你不能把原始发票直接改成漂亮报表。报表可以由原始凭证生成,但原始凭证得留着。
Agent 的记忆也一样:
| 必须记录的元数据 | 说明 |
|---|---|
| 来源 | 用户明确说的?系统推断的?原始文档?模型总结的? |
| 时间戳 | 什么时候存的 |
| 作用域 | 哪个用户/会话/任务 |
| 类型 | 对话记录、用户偏好、关键决策、政策版本 |
| 状态 | 有效/过期/被覆盖 |
Ledger 是追加式(Append-only)的权威记录。所有写入、更新、删除都带来源和时间。这是记忆治理的"原始凭证"。
第二层:Views(派生视图)¶
从原始记录里整理出来的东西,面向检索和推理优化。
Ledger(原始账本) Views(派生视图)
原始对话 ──────────→ 用户画像摘要
用户偏好记录 ──────→ 近期任务状态
关键决策记录 ──────→ 历史摘要
政策版本 ────────→ 当前有效政策
⚠️ Views 不是原始事实,是总结出来的
既然是总结,就可能过期、可能有错
所以必须能更新、能覆盖、能回溯到 Ledger
| View 类型 | 内容 | 特点 |
|---|---|---|
| 用户画像 | 偏好、习惯、历史决策 | 可多、可 lossy |
| 任务状态 | 近期进展、待办、上下文 | 高时效性 |
| 政策索引 | 当前有效版本 + 过期标记 | 必须可回溯 |
| 知识图谱 | 实体关系网络 | 支持多跳推理 |
关键约束:Views 可以多、可以 lossy,但必须能回指到 Raw Ledger。
第三层:Policy(调用策略)¶
最容易漏掉,也最关键。决定什么能写进去、什么时候翻出来、冲突听谁的、哪些任务不能用记忆。
Policy 把"能不能搜到"变成了"能不能用"
没有 Policy:
Agent 把历史一股脑带进当前任务
→ 看着听懂你,其实在拿过去塑造现在
有 Policy:
"我以后写稿喜欢短句" → 可存长期偏好 ✅
"今天赶时间别展开" → 临时约束,不存 ❌
退款政策 v2 → 历史背景参考,但不能直接回复用户 ❌
退款政策 v3(当前有效)→ 可以使用 ✅
Policy 的四类决策¶
| 决策 | 问题 | 示例 |
|---|---|---|
| 写策略 | 什么能写进去? | 用户明确说"记住"→ 写;临时抱怨 → 不写 |
| 读策略 | 什么时候翻出来? | 新会话开始 → 加载画像;敏感决策 → 清空偏见 |
| 冲突策略 | 新旧矛盾听谁的? | 新信息覆盖旧信息,但旧信息保留在 Ledger |
| 遗忘策略 | 什么该被清理? | 一次性对话偏好不持久化;过期政策标记失效 |
程序性记忆:从事实到步骤¶
事实记忆 vs 程序性记忆¶
| 类型 | 定义 | 记错了的后果 |
|---|---|---|
| 事实记忆 | "是什么" | 一个答案错 |
| 程序性记忆 | "怎么做"(成功干成过的事,直接可套用的步骤) | 后面会稳定地错 |
程序性记忆听着更强大(直接复用成功经验),但也更凶险——因为事实记错最多一个答案错,程序记错后面会稳定地错。
当前状态¶
程序性记忆目前还是正在成熟的方向,不算已经能铺开用的东西。但它是记忆系统最值得关注的演进方向。
记忆系统的工程实践¶
ChatGPT 的记忆架构(逆向工程)¶
ChatGPT Memory 三层结构
┌─────────────────────────────────────────┐
│ 可保存记忆(Save Memories) │
│ - 用户主动控制 │
│ - "记住我喜欢简洁的技术解释" │
│ - 注入系统提示使用 │
├─────────────────────────────────────────┤
│ 聊天历史 │
│ ├─ 当前会话:过去一天 <10 条消息 │
│ ├─ 对话历史:两周内精确引用,超两周摘要 │
│ └─ 用户洞察:自动化高级版记忆 │
└─────────────────────────────────────────┘
用户洞察生成流程:找活跃用户 → 聚类分析(k-NN)→ LLM 生成洞察摘要 → 附时间戳和置信度。
关键特征:把"Save Memories"、"历史对话"、"临时绘画"分开,用户可以自己看、自己删。
Mem0 框架¶
| 操作 | 场景 |
|---|---|
| ADD | 原有记忆中不存在的新事实 |
| UPDATE | 新旧事实可合并(如"喜欢冰淇淋"+"喜欢烧烤"→合并) |
| DELETE | 新旧事实矛盾(移除旧记忆) |
| NOOP | 不需要修改知识库 |
2026 年 Mem0 基准成绩:
| Benchmark | 分数 | 平均 token/查询 |
|---|---|---|
| LoCoMo | 92.5 | 6,956 |
| LongMemEval | 94.4 | 6,787 |
| BEAM (1M) | 64.1 | 6,719 |
~6,900 tokens/查询 vs 全量上下文方案的 ~26,000 tokens。在规模上这是显著的推理成本差异。
System 1 + System 2 架构¶
System 1(快循环) System 2(慢循环)
通用 Agent 推理 记忆检索 + 验证
(LLM + tools + planner) (PreThink → Retrieve → Evidence → Stop)
↑ │
└──── 检索结果 + 来源溯源 ───────┘
System 1 提供基线能力(通用性)
System 2 通过记忆提供修正项 Δ(个性化、时序修正、经验复用)
Memory 能力与 LLM 其他 Agent 能力「相对正交」——可拆成低耦合模块分别优化。同一 base model 接入不同记忆策略显著改变长程表现;同一套记忆 infra 可服务多种 base model。
评估任何 AI 记忆的四个问题¶
评估清单:面对任何 AI 记忆功能,先问四件事
① 来源:这条记忆从哪来的?
├─ 用户让记的还是系统推断的?
├─ 来自原始文档还是模型写的总结?
└─ 能不能追溯到 Ledger?
② 时效:它现在还有效吗?
├─ 有时间限制吗?有版本限制吗?
├─ 有场景限制吗?
└─ 是长期偏好还是这一回的临时要求?
③ 可控:能不能看、能不能删、能不能改?
├─ 发现记错了有办法纠吗?
├─ 政策失效了能让它停用吗?
└─ 用户有完整的查看和删除权吗?
④ 适用:这次任务该不该用记忆?
├─ 需要历史背景 → 用
├─ 敏感决策 → 清空偏见
├─ 全新项目 → 需要客观判断
└─ 不能让旧印象自动进场
什么场景不能用记忆¶
| 场景 | 原因 |
|---|---|
| 敏感决策 | 旧偏见可能扭曲判断 |
| 全新项目 | 需要客观视角,不被历史束缚 |
| 政策变更后 | 旧版本必须失效,不能自动召回 |
| 用户明确要求"忘掉" | 遗忘权和删除权 |
参考资料¶
- 真正的 Agent 要会记住!Memory 架构与思考 - dbaplus
- 上下文记忆——AI Agent Native 的任务存储机制 - 李乾坤
- State of AI Agent Memory 2026 - Mem0
- Agentic AI 基础设施实践:Agent 记忆模块的最佳实践 - AWS
- AI Agent Memory Governance: Access, Audit, and Best Practices - Atlan
相关笔记¶
- 上下文熵增与 Claude Code 架构拆解
- Harness Engineering 五件套:普通人也能用的 AI 工作系统
- Vibe Coding Token 省钱指南
- [[AI Agent]]
- [[上下文工程]]