HXLOLI · AI-DOCS
Agent Memory 选型速览
窗口解决容量, 记忆解决连续性 —— 但连分数都不可比的领域里, 选型该依据什么?
五大架构范式评测可信度危机遗忘盲区记忆投毒四个必补动作
00
三概念边界
| 长上下文 | RAG | Agent Memory |
| 内容来源 | 本次请求输入 | 预置静态语料 | 运行期双向产生 |
| 生命周期 | 单次, 用完即销毁 | 与语料同寿 | 跨会话跨任务持久 |
| 解决什么 | 容量 | 事实召回 | 连续性 |
| 典型失效 | 上下文腐化 | 语料过期 | 幽灵记忆 / 遗忘失败 |
判据: 同一客户第五次来访, RAG 命中同一份文档, Memory 记得他上次问过什么.
01
窗口的账要重新算
- 有效上下文只有标称窗口的 50%~65% —— 买来的窗口有一半拿不到手.
- Context Rot: 18 个前沿模型全部随输入增长退化, 200K 窗口的模型可能在 50K 处就已失稳.
- Lost in the Middle: 关键事实落在中段时, 准确率下降超过 30%.
- 结论: 窗口与记忆是两个正交问题, 记忆评测要先写入再跨轮检索, 写入质量本身就是评测对象.
把窗口从 200K 推到 1M, 并不会让 Agent 记住你上周说过什么.
02
四类记忆与它们的失效
语义 / 情景
语义记事实: X 是 Y. 情景记经历: 遇到 X 时发生了什么.
情景的独有价值是保留失败与试错的分支 —— 事实没有褒贬, 语义记忆说不出"不要先做 X".
程序 / 参数
程序记怎么做: 遇到 X 先做 Y、别做 Z. 参数是学进权重的偏好.
程序记忆正在从研究概念走向产品, 记忆形态也可在明文与权重之间转换.
Zep 悖论: 失败模式往往不是"忘了", 而是"同时记住了太多版本".
03
五大架构范式
| 范式 | 代表 | 换取什么 | 代价 |
| 向量抽取型 | Mem0 / LangMem | 接入成本最低 | 关系推理弱 |
| 时序知识图谱型 | Zep / Graphiti | 双时间轴, 可回答"当时什么是真的" | 图数据库运维, 写延迟最高 |
| Agent 自编辑型 | Letta | 共享记忆块是一等原语 | 可审计性差, 每次操作耗推理 |
| OS 调度型 | MemOS | 明文/激活/参数三形态可互转 | 偏架构参考 |
| 文件即真相型 | Claude Code / Cline / Cursor | 零基础设施, 可 diff 可审计 | 检索能力弱 |
选型第一步是选范式, 不是选产品.
04
失效语义比"删除"复杂
写入只有三个动作
ADD / UPDATE / NO-OP, 加上版本回滚与状态标记 —— 没有 DELETE.
"删除"在记忆系统里通常是标记失效, 不是物理抹除.
召回与删除是两套器官
图谱抽象把具体经历合成事实、丢弃表层形式; 而删除请求恰恰针对表层形式.
图谱越擅长抽象, 这类删除就越容易失效 —— 这是遗忘评测集体翻车的结构性根因.
五种失效语义: 就地覆盖 / 版本化 / 失效不删除 / 时间衰减 / Agent 自主淘汰.
05
评测的可信度危机
| 现象 | 证据 |
| 同一系统分数区间极大 | 38% ~ 92%, 变量是 harness (测试脚手架) |
| 名次随基准形态反转 | 奖励向量存储的 judge 接受了约 63% 的刻意错误答案 |
| 换口径结论翻转 | 排除还是计入"不可回答题", 直接改写排名 |
| 头部基准饱和 | LoCoMo 区分度下降, BEAM 最贴近生产规模 |
读数三件套: harness 版本 + judge 模型 + 产品档位, 缺一项就不能作为选型依据.
06
遗忘: 行业最大的盲区
- 召回被做透了, 删除集体翻车. 控制平面评测 (衰减/清除/漂移) 的数字差距极大.
- 公开对标中, 图结构方案在对抗性遗忘上只有 4.4%~7.0%, 而某些 LLM Hook 方案约 93%.
- 根因是结构性的, 不是实现粗糙: 抽象丢掉了删除请求真正指向的表层形式.
- 受监管场景里, "能不能删干净"比"能不能想起来"更硬.
现有榜单几乎不覆盖遗忘 —— 这意味着公开分数无法替你回答合规问题.
07
最干净的对照实验
| 形态 | LongMemEval 准确率 | 每答对一题 token |
| 策展文件 (Markdown) | 44.9% | 约 665,000 |
| 结构化存储 | 73.6% | 约 27,000 |
准确率差 28.7 分, token 成本差约 24.6 倍. 根因: 策展 Markdown 迫使模型在写入时做推理, 而嵌入不需要.
反例更值得记住: 在弃答指标上, 策展文件反而赢了 11.1 分 —— 材料更少时, 模型更容易承认"历史里没说".
如果场景更怕幻觉而不是更怕答不出来, 文件式记忆反而更值得考虑.
08
选型决策树
Q1 知识主要来自用户对话, 还是文档?
文档 / 业务数据 → 知识图谱 · GraphRAG 路线用户对话 → 看 Q2
Q2 事实会随时间改变, 且需要知道"当时什么是真的"吗?
是 → Zep / Graphiti (接受图数据库成本)只需知道现在什么是对的 → 看 Q3
Q3 技术栈绑定与合规要求?
云原生优先 → AgentCore Memory要长时程自主状态 → Letta要可读可审计 → 文件即真相型
先选范式, 再选产品; 顺序反了, 后面全是补丁.
09
四个必补动作
- 元数据隔离 —— 防跨租户合并: 元数据不同的事件永不被合并, 哪怕语义高度相似.
- 状态过滤层 —— 防幽灵记忆: 同一实体的多个有效版本不应被同时召回.
- 独立跑遗忘测试 —— 不要用召回榜单代替遗忘验证.
- 写入侧内容安全校验 —— 记忆写入是特权操作, 不是普通的一次函数调用.
这四件事不在任何框架的开箱能力里, 成本却远低于换框架.
10
记忆投毒
攻击链两阶段
注入: 单次交互携带隐藏载荷, 或经被投毒文档间接投递, 伪装成事实/偏好/规则, 走常规抽取管线落库.
激活: 后续检索召回该条目, Agent 把它当可信内部状态采信.
四个放大因素
多 Agent 场景还会通过共享检索层形成数字传染.
公开研究: InjecMEM 对 MemoryOS 成功率 76.6%, GhostWriter 注入率约 98%; OWASP 已把记忆与上下文投毒单列为 ASI06.
11
防护与可观测性
| 最有效的四条防护 | 要做成什么 |
| Schema 绑定记忆 | 不允许自由文本, 用结构化 Schema 约束一切写入与修改 |
| 写入即特权操作 | 写入/修改必须经过权限校验与上下文审核 |
| 读取以"数据"角色注入 | 检索结果只作数据, 不作指令; 按可信度、时效性、一致性评分 |
| 来源与置信度分级 | 每条记忆标注来源与信任值 |
核心健康指标是"幽灵率" —— 同一实体同时存在多个有效版本的比率. 它比命中率更能提前预警失败.
12
趋势与结论
- 记忆正在变成一层可治理的服务: 从"功能"到独立服务层, 从"记住更多"到"控制得更好".
- 评测从单一榜单走向透明聚合: 2027 年的标准问题会变成"请给出 harness 版本、judge 模型、产品档位与独立复现结果".
- 记忆层不总是省钱: 当压缩丢掉关键细节时, 完整上下文可能反而更准.
- 遗忘的语义化是当前最被低估的工程缺口.
选型的本质是按记忆类型与失效语义做判断, 而不是按榜单分数排序.
13
一句话带走
先用"知识来自文档还是对话"把范式定下来, 再用"要不要知道当时什么是真的"决定是否上双时间轴; 然后无论选谁, 先把那四件必补动作做完.—— 个人判断, 非事实陈述
完整推导与数据口径说明见配套笔记 (含"哪些数字查得到、哪些只是转述"一节).