AI 助手聊着聊着就失忆?先分清"上下文"和"记忆"(五步装长期记忆)

15 阅读1分钟

先说结论:AI 不是记性差,是你把上下文窗口当成了记忆。它其实是临时记事本。

上下文窗口是 RAM,不是硬盘——这句话来自 Mem0 官方博客。RAM 开机就在、关机就清、读写快、贵;硬盘断电还在、要主动去取、便宜。上下文窗口就是 RAM,服务的是"这一次推理的当下"。想让信息跨会话活下来,必须挪到外部存储,需要时再检索回来。

我一开始也信"上下文越长记得越多",直到一个 agent 项目翻车:用户第三天回来问"上次让你改的报表逻辑还在吗",它回"我没有关于这个的上下文"。报表逻辑在,在昨天的会话里。昨天的事,对今天的它等于没发生过。

更痛的是把一整天对话历史全塞回上下文:token 账单涨了 4 倍,回答质量没涨,中间内容反而开始丢。这就是 lost-in-the-middle——模型对上下文中间部分的记忆最差。

失忆不是模型的锅,是架构的锅

模型每一轮都是"第一次见你"。它记住的东西全在上下文窗口里,窗口关掉什么都不剩。

判断一条信息该不该进长期,Anthropic 官方《Effective Context Engineering》给过思路:问自己,这信息 30 天后还有没有用?有用 → 外部存储;没用 → 留在上下文里过期。Rohit Raj 讲记忆架构的文章用 router 做这件事:模型每轮决定哪些数据"30 天后仍重要"就送持久层。

记忆分三层

层是什么活多久存哪
工作记忆当前任务本轮上下文窗口
会话记忆原始对话本次会话会话缓存
长期记忆偏好/事实/教训/硬约束跨会话外部存储

长期记忆放:稳定偏好("用中文回复")、硬约束("禁止访问外网")、跨会话事实("用户是后端工程师")、错误教训。

五步落地清单

01 分类:这条信息 30 天后还有用吗。每轮结束过一遍。 02 结构化笔记:Anthropic 官方做法,Claude Code 靠 CLAUDE.md + 自动记忆。笔记一定要固定模板(决策/事实/约束/待办),否则全是"今天讨论 X 很有收获"的水话。 03 分层存储:核心块(5-10 条关键事实,常驻)+ 归档(完整会话,可搜)+ 检索库(向量/结构化,按需取)。MemGPT/Letta 把这做成了"操作系统"。 04 写入纪律:记忆文件会被原样读回上下文,是 prompt injection 载体(Claude Cookbook 明确警告)。写前过滤、PII 脱敏、作用域隔离。没设隔离的话,A 用户的数据可能被 B 用户检索到,上线才被发现比失忆痛多了。 05 检索更新遗忘:按需检索不全量塞回;事实变了能改(矛盾处理是 arXiv 2603.07670 点名难点);没用的删。评测用 LongMemEval / LoCoMo / PersonaMem v2。

工具选型:别一上来就 MemGPT

方案定位适合
CLAUDE.md / NOTES.md文件化记忆个人 agent
Mem0记忆中间件少写代码
Letta (MemGPT)有状态平台跨会话长跑 agent
自建全可控有专门人力

坑:Letta 让 agent 自己管理记忆,透明但 Hivebook 对比过,基准上更慢、未必更准——每次读写多一次模型调用。

反方:三句话泼冷水

  1. 短会话别折腾,一次性 demo 用上下文窗口够。
  2. 长上下文 GPT 在部分记忆基准能打平专门记忆系统(arXiv 2603.04814)——场景只是"近几轮对话",大窗口+摘要可能够。
  3. 记忆是注入面,安全投入别省。

你的 agent 出过"失忆"事故吗?评论区聊聊,我在收集真实翻车案例。


参考:Mem0《Context Window is RAM, not Storage》(2026-09-03);腾讯云《Agent 为什么总是「失忆」?》(2026-07-27);Anthropic《Effective Context Engineering》;CSDN《AI Agent 架构中的长期记忆》(2026-10-07);arXiv 2603.07670;Letta PyPI 0.15.0;arXiv 2603.04814;Claude Cookbook《Memory & Context Management》(2025-05)。