Agent 记忆
同一个用户,上周说过"我对花生过敏",这周问"推荐个川菜馆"。会话结束时 messages 数组被丢掉,下一次请求里没有任何关于花生的字节 —— 模型不是忘了,是根本没收到。
记忆层就是补上这一段:从已经结束的会话里挑出值得留下的东西,存到会话之外,在下一次需要时放回上下文。本专题拆解这件事的四个动作 —— 挑什么、怎么存、怎么改、怎么取回 —— 以及它们各自会怎么坏。
先约定几个词,本专题全程使用:
| 词 | 意思 |
|---|---|
| 上下文(context) | 这一次请求真正发给模型的那串 token。它是易失的,请求结束就没了 |
| 记忆(memory) | 存在上下文之外、能跨会话活下来的东西。记忆本身不产生效果,只有被读回上下文才有效果 |
| 抽取(extraction) | 用一次额外的模型调用,从对话里挑出"值得记住的事实"。绝大多数记忆库的写入路径第一步 |
| 情景 / 语义 / 程序记忆 | 记忆的三种分型:发生过什么、事实是什么、该怎么做。01 篇细讲 |
| 巩固(consolidation) | 新事实进来时,跟已有记忆比对、合并、改写或作废的过程。冲突消解发生在这里 |
| 双时间轴(bi-temporal) | 同时记录"事实在现实中何时成立"和"系统何时知道这件事"两条时间线。03 篇细讲 |
| 热路径 / 后台 | 记忆写入的两种时机:在用户等回复的这一轮里写(热路径),还是回复完再异步写(后台) |
| 记忆投毒 | 攻击者诱导 Agent 把伪造事实写进记忆,之后每一轮都被读回来。07 篇细讲 |
一、这一层要解决的六个问题
二、七篇正文
| # | 标题 | 覆盖内容 |
|---|---|---|
| 01 | 记忆与上下文的边界 | 四个常被混作一谈的东西、情景 / 语义 / 程序三种分型、Profile 与 Collection 两种存储形态、什么时候不该上记忆层 |
| 02 | 写入路径:什么该被记下来 | 抽取式与原样存两条路线、mem0 从四操作巩固转向纯追加的完整源码、热路径与后台的取舍、UUID 反幻觉映射、写入成本估算 |
| 03 | 冲突、遗忘与时间 | 事实变化的四种形态、硬删除为什么不可行、Graphiti 双时间轴的四个字段、边失效而非删除、遗忘策略与它的代价 |
| 04 | 读取路径:向量、图与结构化 | 纯向量检索的四类失效、Graphiti 三路混合检索与五种重排、召回预算怎么定、注入位置对缓存的影响 |
| 05 | 文件系统式记忆 | Anthropic memory 工具的六个命令与路径穿越防护、Letta 从数据库块转向 git 版本化目录、文件式的边界在哪 |
| 06 | 开源实现横评 | 十四个项目的许可证与部署重量实测、四个选型陷阱、腾讯与阿里两套大厂方案、存储依赖与能力矩阵对照 |
| 07 | 失败模式、评测与选型 | 记忆投毒与错误固化、跨租户串号、LoCoMo 三方争议始末、MemDelta 的对照实验结论、选型决策树与四步落地 |