跳转至

Agent Memory:只记值得记、允许记、能删掉的事

繁體中文 | English | 简体中文

回到 Stage 6:RAG 与 Memory

Agent Memory(代理记忆)像一本有管理规则的笔记本。它不是把所有聊天偷偷存起来;它只保存之后真的需要、用户允许,而且可以查看、修改与删除的内容。

📌 学习目标

完成这页后,你可以:

  1. 分清聊天记录、context、RAG 与 Memory。
  2. 分清短期/长期,以及 semantic/episodic/procedural memory。
  3. 画出一笔记忆从写入、搜索、更新到删除的生命周期。
  4. 为每笔记忆设置拥有者、来源、保存期限与删除方法。
  5. 用固定测试检查“该记的找得到,不该记的不会留下”。

🧩 先把四样东西分开

核心术语 好理解的说法 正确意思
Chat History(聊天记录) 这次对话的逐字稿 消息记录;不代表每一则都应永久保存或放进模型 context。
Context(上下文) 这一刻放在桌上的资料 本次模型调用实际看到的 instructions、messages、工具结果与取回内容。
RAG 有问题时去书架找资料 从外部知识来源取回证据,再交给模型回答。
Memory(记忆) 助理留给下次的短笔记 跨步骤、thread 或 session 仍需读回的状态,必须有写入与治理规则。

最重要的判断:产品手册放知识库;当前任务做到哪里放短期 state;经用户同意保存的偏好才可能进入长期 memory。

📚 必读材料

  1. LangChain:Memory overview — 先理解 thread-scoped short-term memory、跨 session long-term memory,以及 semantic/episodic/procedural 三种类型。
  2. LangGraph:Add and manage memory — 看 checkpointer、store、namespace 与 semantic search 的实现边界。
  3. CoALA paper — 用共同框架理解 language agent 的 memory 结构与操作。
  4. Generative Agents paper — 看 recency、importance、relevance 与 reflection 的经典研究设计。
  5. Mem0Letta Code — 选一个现行实现,观察状态如何保存与取回。Letta 项目入口目前是 landing page;现行 source 与 App Server 都在 Letta Code。

⏱ 两种时间范围

  • Short-term Memory(短期记忆):只服务一个 thread 或当前任务,例如消息、上传文件、工具结果与做到哪一步。LangGraph 通常把它放在 thread-scoped state,通过 checkpointer 保存。
  • Long-term Memory(长期记忆):跨 thread 或 session 仍需要,例如用户允许保存的偏好、项目事实或可重用经验。它必须用 namespace 隔离不同用户与应用。

短期不等于“只放 RAM”;长期也不等于“永远不删”。差别在取回范围与生命周期,不是硬盘或内存的名称。

🧠 三种内容类型

类型 记什么 例子 风险
Semantic Memory(语义记忆) 较稳定的事实 用户偏好短答、项目使用 Python 3.13 事实会过期或互相冲突
Episodic Memory(情节记忆) 发生过的事件与结果 上次部署在哪一步失败、哪个修法有效 成功一次不代表永远适用
Procedural Memory(程序记忆) 做事规则与步骤 发版前要跑哪些 gate 恶意内容可能污染未来行为

Semantic memorysemantic search 不是同一件事:前者是记住的内容类型,后者是按意思相近来搜索的取回方法。

🔄 一笔 Memory 的生命周期

  1. 提议写入:先判断是否真的需要跨 session 使用。
  2. 取得同意:敏感资料或个人偏好要让用户知道保存目的。
  3. 规范化:保存简短事实,不直接把整段聊天当记忆。
  4. 加上 metadata:至少有 owner、source、created_at、updated_at、expires_at 与 sensitivity。
  5. 隔离保存:用 user/workspace/agent namespace 分开,查询前先套权限。
  6. 搜索与使用:只取回与当前任务相关的少量记忆,并保留来源。
  7. 更新或解决冲突:新信息不能悄悄和旧信息并存;要标记版本或取代关系。
  8. 删除与遗忘:用户可查看、修改、删除;过期资料自动清除,备份也要有处理规则。

🧱 先选最简单的设计

问题 先用什么 何时升级
字段固定,例如语言、时区、通知偏好 直接状态表 字段种类变多或需要模糊搜索时
内容较自由,例如短摘要或可重用经验 可搜索文字 memory 关系、时间与冲突成为主要问题时
人、事件与关系会随时间改变 Temporal Knowledge Graph 只有测试证明一般资料表/搜索不够时
只需恢复同一个工作流程 Checkpoint/thread state 真正需要跨 thread 分享时

先从资料表开始。能用明确字段保存的内容,不必先做向量搜索;能用短期 state 解决的问题,不必先做永久记忆。

🛡️ Memory 的安全底线

  • 默认不保存密码、API key、付款资料、医疗秘密或未经同意的个人资料。
  • 不让不同用户、tenant、workspace 或 agent 共用同一个未隔离 namespace。
  • 取回前做权限检查;不能先拿到秘密再靠 prompt 要模型“不要说”。
  • 记忆内容是不可信输入。写入前做 schema、来源与 prompt-injection 检查。
  • 每笔记忆要能回答“谁写的、从哪里来、何时更新、何时删”。
  • 删除要涵盖主要存储、搜索索引、cache 与依政策管理的备份。

🛠 一个最小 Memory 练习

只保存一项无敏感性的偏好,例如“回答先给短版”。

  1. 写入偏好与 user_id、来源、时间、保存期限。
  2. 用另一个 thread 搜索并读回。
  3. 把偏好改成“先给表格”,确认旧值不再被使用。
  4. 删除偏好,再搜索一次,结果必须为空。
  5. 用另一个 user_id 查询,不能看到前一位用户的内容。

完成条件:add、search、update、delete 与 user isolation 五项测试都通过;只会 add 不算完成。

Hot path、Background 与冲突处理
  • Hot path write:回答前立即写入,结果最新,但会增加延迟,错误也直接影响用户。
  • Background write:回复后异步整理,交互较快,但要处理失败、重试与晚到更新。
  • 同一事实有新旧版本时,保存时间、来源与有效范围;不要只依向量相似度随机挑一笔。
  • 先把“模型建议的 memory”放入待确认区,再由规则或用户批准,适合高风险内容。
常见失败与排查顺序
  1. 找不到:先看 namespace、权限、filter 与保存是否成功。
  2. 找到旧资料:看 update 是否留下互相冲突的版本,以及 cache 是否刷新。
  3. 记太多:提高写入门槛、缩短保存期限,不要只扩大 context window。
  4. 记错:保留来源与信心,让用户能修改,不把模型推测直接当事实。
  5. 删不干净:追踪主库、索引、cache、事件串流与备份的删除路径。

🎯 精选 Projects 与学习资源

评分代表“对这张学习地图的教学价值”,不是项目质量排行榜。先选一种 memory 形状,再选工具。

资料核查:2026-08-30 UTC

分类项目/资源编辑评分适合谁能学什么状态/限制
Memory layerMem0⭐⭐⭐⭐⭐第一次做跨 session memorylibrary、server、cloud 与搜索生命周期Apache-2.0;OSS 与 managed 能力分开看
LangMem⭐⭐⭐⭐已使用 LangGraph 的团队hot-path/background memoryMIT;先理解 LangGraph store
Letta 项目入口⭐⭐⭐⭐先分清 Letta 的产品范围现行安装、文档与 source 去向landing page;退役 V1 server 只留在 archive branch
Letta Code⭐⭐⭐⭐建立 stateful agent 或 App Serveragent harness、git-backed MemFS、长期 identity现行 source;产品型 agent harness,不是通用 memory DB
时间与关系Graphiti⭐⭐⭐⭐⭐关系会随时间改变的应用bi-temporal facts、temporal graphApache-2.0;需要图数据库与治理
Zep examples⭐⭐⭐评估 Zep Cloud 的团队集成与示例入口旧 Community Edition 已移到 legacy/deprecated
LangChain Memory overview⭐⭐⭐⭐⭐想先学清楚概念的读者thread state、store、三种 memory 类型框架文档;概念可移植,API 需看版本
研究与评测CoALA⭐⭐⭐⭐⭐研究 agent memory 架构working、episodic、semantic、procedural分析框架,不是可安装产品
Generative Agents⭐⭐⭐⭐⭐研究反思与记忆取回recency、importance、relevance经典研究,不是 production 标准答案
Reflexion⭐⭐⭐⭐研究经验反馈的读者verbal feedback 与下一次尝试reflection 只有持久保存后才成为跨 session memory
Mem0 Memory Benchmarks⭐⭐⭐⭐要测 memory quality 的开发者数据集与可重复运行评测入口供应商维护;自行加入 isolation/deletion 测试

✅ 自我检查

  • 我不会把 Chat History、Context、RAG 与 Memory 当成同一件事。
  • 每笔长期 memory 都有 owner、source、时间与删除方法。
  • 我能解释 semantic memory 和 semantic search 的差别。
  • 我测过更新、删除、过期与跨用户隔离,不只测写入和搜索。
  • 敏感资料默认不写入,用户能看见并控制被保存的内容。

回到 Stage 6:RAG 与 Memory