Appearance
一句话总结:Agent 记忆是把受限的"上下文窗口"通过分层 + 检索 + 压缩扩成可跨会话累积的持久认知;主流范式从人工设计分层走向"让模型自己管记忆"(MemGPT/Letta 的操作系统式记忆)。
为什么需要记忆
- LLM 上下文窗口有限,单会话记不全、跨会话完全失忆
- 记忆带来三层能力:会话连贯(短期)、跨会话积累偏好与事实(长期)、可复用经验(程序/情景记忆)
- 与 RAG 互补:RAG 是静态检索外部知识,Agent 记忆是动态自我维护的内部认知
记忆分类
| 类型 | 生命周期 | 载体 | 回答的问题 |
|---|---|---|---|
| 工作记忆 | 单次任务/当前推理 | 上下文窗口、进程内存 | 我现在在想什么 |
| 短期记忆 | 当前会话 | 会话历史、滑动窗口、摘要 | 这次对话讲了什么 |
| 长期记忆 | 跨会话、持久 | 向量库、关系库、知识图谱 | 用户是谁、发生过什么 |
| 语义记忆 | 持久 | 向量/知识图谱(概念规则) | 世界是怎样的 |
| 情景记忆 | 持久 | 结构化轨迹/事件日志 | 上次怎么做的 |
| 程序记忆 | 持久 | 技能库、策略 | 任务怎么做 |
工程落地:三层标准架构
- 工作记忆 = 模型上下文窗口(系统提示 + 对话历史 + 工具结果)
- 短期记忆 = 最近 N 轮(约 8–20 轮)原始对话(环形缓冲),必要时压成"会话摘要"
- 长期记忆 = 向量库 + RAG 检索:重要经历 embedding 入库,决策时检索 top-K 注入
生产级混合存储:
- 用户结构化档案卡(JSON/关系型,精确键值查询,不走语义检索——消除噪声)
- 近期对话摘要(轻量摘要替代长文本,省 token)
- 向量库(语义检索)+ 滑动窗口(当前轮原始上下文)
MemGPT / Letta:操作系统式记忆(重点范式)
核心思想:把上下文窗口当"受限内存",像 OS 虚拟内存一样分层换入换出。
| 层 | 类比 | 说明 |
|---|---|---|
| Core Memory | RAM(常驻 prompt) | 命名块(human / persona),模型每轮看得见、改得动 |
| Recall Memory | 磁盘缓存 | 可检索的会话历史,模型工具搜索 |
| Archival Memory | 冷存储 | 向量索引的长期档案,模型工具插入/查询 |
- 关键设计:让模型自己决定记什么、忘什么、何时归档——系统提供存储与检索,Agent 提供记忆策略(policy)
- 原始 MemGPT 论文用两级(主上下文 / 外部上下文),模型发工具调用分页换入换出
记忆压缩与更新
- 异步压缩:定时(如每晚)或触发(同分类事实超阈值)时,把相似向量拉出交给 LLM 聚合去重,删旧插新
- 上下文压缩:检索 top-N 后先过滤无关、抽取相关片段、重排序,再进上下文
- 反思(Reflection):从过去轨迹/失败抽象经验,沉淀为长期记忆
- 记忆编辑:用户纠错时更新记忆结构
关键框架
- Letta (MemGPT):memory-native,自带 agent loop + 记忆管理
- Mem0:自动从交互提取长期记忆(向量检索 + 记忆更新)
- Zep:会话记忆 + 图谱记忆、时间回溯
- MemoryOS / AgeMem(论文):OS 启发分层存储 / RL 统一管理长短记忆(替代启发式管线)
面试要点
- 讲清 4 类记忆(工作/短期/长期 + 语义·情景·程序)的生命周期与载体
- 讲清"记忆 ≠ RAG":RAG 静态、记忆动态,二者常配合
- 画出 MemGPT 三层架构,说明"模型自管记忆"为什么更优雅
- 知道两种压缩(异步聚合 / 上下文检索压缩)
- 会说生产混合存储:档案卡 JSON + 摘要 + 向量库 + 滑动窗口