AI Agent 记忆怎么实现?短中长记忆全解
AI Agent 记忆机制怎么工作?这篇用人话讲清短期/中期/长期 3 层记忆 + OpenAI Session/Trimming/Summarization 方案对比
一句话说清 AI Agent 记忆怎么实现
AI Agent 记忆通过 3 层结构实现:短期记忆(当前对话上下文)、中期记忆(本次任务历史摘要)、长期记忆(跨任务持久信息),由 Session 机制统一管理,配合 Trimming(裁剪)和 Summarization(压缩)解决长任务上下文爆窗问题。
直白一点:Agent 的「脑容量」叫上下文窗口(context window),它和人脑一样会爆。OpenAI Agents SDK、Claude、扣子等所有 Agent 平台都在解决一个问题——任务跑长了怎么让 Agent 还记得最初目标、关键决策、用户偏好。
下面拆开讲。
用一个生活场景理解
假设你雇了个秘书帮你跑一周长项目。
没有记忆机制的秘书:每隔 2 小时记忆清空一次。你周一交代「客户姓张不喜欢加班」,周三他完全忘了,又安排周日上午开会,客户当场翻脸。
有 3 层记忆的秘书:
- 短期:他眼前的便签 — 现在正在处理的邮件、刚说的话
- 中期:他桌上的项目本 — 这周整个项目的关键决策、已完成和待办
- 长期:他存在脑子里的客户档案 — 张总不喜欢加班、王总爱喝茶不爱咖啡
3 层联动,他能从早到晚连续干一周不掉线。AI Agent 的记忆机制就是在模拟这套结构。
AI Agent 的 3 层记忆架构
理解这 3 层,你看任何 Agent 平台的「记忆」功能都不会再懵。
第 1 层:短期记忆(Working Context)
是什么:Agent 正在处理的「这一轮对话」能看到的全部内容。本质就是模型的上下文窗口(GPT-5 是 400K tokens、Claude Opus 4.7 是 1M tokens)。
包含什么:
- 系统提示词(system prompt,告诉 Agent 它的角色和规则)
- 用户最新输入
- 最近几轮的对话历史
- 当前正在调用的工具及返回结果
特点:模型每次推理都会”看到”全部短期记忆,所以这一层最准、最贵、最容易爆。
类比:你眼前正在写的微信窗口里看到的所有内容。
第 2 层:中期记忆(Session History / Task Memory)
是什么:这次任务从开始到现在的所有历史,但已经被压缩成更紧凑的形态。
包含什么:
- 任务最初的目标和约束
- 中途的关键决策和结果
- 已经做过的工具调用摘要
- 失败和修正记录
特点:不是每次推理都全塞进上下文,而是按需检索 + 摘要后注入。
类比:你桌上摊开的项目笔记本,平时合着,需要时翻一下。
第 3 层:长期记忆(Long-term Memory)
是什么:跨任务、跨会话、跨天数的稳定信息。
包含什么:
- 用户的偏好(“我不爱接电话,邮件优先”)
- 用户的画像(“程序员、住在深圳、用 Mac”)
- 历史项目档案
- 学过的领域知识(针对企业 Agent)
特点:通常存在外部数据库(向量库、PostgreSQL、Redis),按需检索注入到当前对话。
类比:你脑子里关于客户、同事、规则的”常识”,不需要每次开会都翻。本质是 RAG 的一种应用。
OpenAI Agents SDK 的 Session 机制
理解了 3 层架构,看 OpenAI 是怎么实现的。
Agents SDK 提供一个 Session 对象,自动管理上下文长度、历史和连续性。开发者不需要手动追踪每条消息——只要不停调用 session.run("..."),SDK 自己帮你处理:
- 把新输入加到上下文
- 决定哪些旧内容要丢/要压
- 调用模型,把回复加回历史
- 跨多轮保持任务的连续感
这套机制把「上下文管理」这件繁琐事抽象成了一个开关,工程师可以专心写业务逻辑。
解决「上下文爆窗」的 2 种主流方案
任务跑长了,短期记忆塞不下,怎么办?OpenAI Cookbook 把方案归纳成 2 种:
方案 1:Context Trimming(上下文裁剪)
做法:只保留最近 N 轮(一轮 = 一条用户消息 + 后续所有助理/工具回复,直到下一条用户消息)。N 之外的全部丢掉。
优点:
- 行为确定性强(永远是最后 N 轮)
- 延迟低(短上下文跑得快)
- 工程实现简单
缺点:
- 远期上下文一刀切丢,可能丢关键信息
- 对长任务(如客服处理跨多个问题)不友好
适合场景:
- 工具调用密集、每轮独立的操作型任务
- 短流程、要可控延迟的场景
- 比如「执行命令型 Agent」「订票 Agent」
方案 2:Context Summarization(上下文压缩)
做法:把旧消息压缩成一段结构化摘要,作为合成的「用户—助理消息对」注入上下文。最近 N 轮保留原文。
优点:
- 长期记忆能压得很紧
- 关键约束、用户偏好不丢
- 适合「需要跨多个问题保持理解」的长对话
缺点:
- 摘要可能有损(关键细节被压掉)
- 摘要可能”污染”上下文(错的事实被反复引用)
- 实现复杂度更高
适合场景:
- 长跨度规划、教练、咨询类任务
- 需要把约束/偏好延续到后续问题
- 客服跨硬件+软件等多问题的场景
OpenAI Cookbook 提供了一个 SummarizingSession 类作为参考实现——它逐字保留最近 N 轮,把更早的全部压缩成两条合成消息(一条”过去用户说过的”,一条”过去助理回答的”)。
一张表对比 Trimming vs Summarization
| 维度 | Trimming(裁剪) | Summarization(压缩) |
|---|---|---|
| 远期记忆 | 完全丢失 | 压缩保留 |
| 实现难度 | 低 | 中 |
| 延迟 | 低 | 中 |
| 成本 | 低 | 中(要额外跑摘要模型) |
| 准确率 | 近期高、远期 0 | 整体中等 |
| 适合任务 | 短流程、工具密集 | 长流程、多问题串联 |
经验值:先用 Trimming 跑起来;发现远期上下文确实丢得太狠,再升级到 Summarization。
写好上下文摘要的 4 个原则
如果你要自己实现 Summarization,OpenAI 推荐 4 条原则:
1. 按时间顺序(Temporal Ordering)
事件按发生先后排列。“先发生的写在前面,后发生的写在后面”。这样模型重建上下文更顺畅。
2. 不矛盾(Contradiction Checking)
摘要要和系统指令、最初目标一致。如果用户中途改了主意,要明确标注”用户最初说 X,后改为 Y”。
3. 结构化分类(Structured Formatting)
把摘要分到固定字段里,比如:
- 环境/产品信息(用什么设备、什么版本)
- 问题描述(用户反馈的核心问题)
- 已尝试方案(试过哪些方法、结果如何)
- 未解决项(还没搞定的问题)
这种格式让模型一眼能找到对应信息,比一段流水账好用 10 倍。
4. 标记不确定信息(Hallucination Control)
摘要时拿不准的细节,明确写 “UNVERIFIED”(未核实)。这样后续模型不会拿不确定的当事实再引用。
长期记忆怎么实现:通常靠外部向量库
短期、中期都在内存里搞定,长期记忆需要持久化存外面。主流方案:
1. 向量数据库 + 嵌入
- 每条要记的事实(用户偏好、历史决策)转成向量存进 Pinecone / Milvus / pgvector
- 每次新对话开始,根据当前话题检索相关历史
- 检索到的塞进 system prompt
这本质就是 RAG,只不过资料库存的是”用户和 Agent 的过往交互”。
2. 结构化数据库
- 用户档案(姓名、偏好、企业角色)存 PostgreSQL / Redis
- 关键事实结构化存储,按 key 查
- 适合规则明确的”档案型”长期记忆
3. 混合方案
- 结构化的存数据库(用户姓名、订阅状态)
- 非结构化的存向量库(过往对话摘要)
- 用 Agent 自己决定查哪个
ChatGPT 的 Memory 功能、Claude 的 Projects、扣子 Coze 的”用户记忆”底层都是这套思路。
一个判断「我的 Agent 该用哪种记忆方案」的 prompt
记忆方案选错了,要么爆窗要么花冤枉钱。用下面这个 prompt 帮你判断:
你是 AI Agent 记忆架构顾问。我会描述一个 Agent 使用场景,请按 5 个维度判断该用什么记忆方案:
- 单次任务长度:通常几轮对话搞定(少于 5 / 5-20 / 20-100 / 不限)
- 跨任务延续:需要不需要记住用户上一次说过啥(不需要 / 需要 / 必须)
- 远期信息重要性:开头说的约束在结尾要不要再用(不重要 / 重要 / 关键)
- 工程能力:能不能维护向量库(不能 / 能 / 有专门团队)
- 预算:每次对话能承担多少成本(几毛 / 几块 / 不在乎)
最后给明确建议:
- 短期记忆方案(直接窗口 / Trimming / Summarization)
- 长期记忆方案(需不需要 / 用什么实现)
- 推荐 1-2 个具体平台
我的 Agent 场景是:[这里描述你的场景]
把方括号里换成你的实际场景,扔给 ChatGPT / Claude 就能拿到判断。
AI Agent 记忆的 3 个常见坑
坑 1:什么都往长期记忆里塞
用户随口说一句”今天有点冷”,Agent 也记成长期偏好,下次还在追问要不要开暖气。判断标准:
- 短期事实(“我今天有点头疼”)→ 别记
- 稳定偏好(“我对花生过敏”)→ 必须记
- 不确定的别记,等用户重复 2 次以上再记
坑 2:摘要把关键约束压没了
用户最初说”预算 5000 块以内”,几轮后摘要把这条丢了,Agent 推荐了 1 万的方案。最佳实践:
- 明确把「约束/偏好」列为摘要必保留字段
- 用结构化摘要而不是流水账
- 关键决策点单独记录
坑 3:记忆机制没做 Eval
新功能上线,没人知道记忆是不是真的有用。任何记忆方案上线前要做对照测试:
- 准备 30 条「需要记忆才能答对」的问题
- 用裸 LLM 和带记忆 Agent 各跑一遍
- 看准确率差距,差距小说明记忆没起作用
国内能用什么 Agent 记忆方案?
国产平台都内置了基础记忆能力,按需选:
| 平台 | 短期记忆 | 长期记忆 |
|---|---|---|
| 扣子 Coze | 内置会话上下文 | 内置「用户长期记忆」 |
| Dify | 内置对话上下文 | 接向量库自建(推荐 Milvus) |
| Kimi | 200 万字超长上下文 | 创建项目自动记忆 |
| 百度千帆 AppBuilder | 内置 Session | 集成百度向量数据库 |
最佳入门路径:用扣子 Coze 试一下”用户记忆”功能,理解 Agent 记忆的实际效果,再决定要不要往深里搞。
下一步
读完这篇你已经知道 AI Agent 记忆怎么分层、怎么压缩、什么场景用哪种方案。接着值得看的:
- AI Agent 是什么?1 篇看懂智能体的 5 大组件:理解记忆在 Agent 5 大组件里的位置
- RAG 是什么?让 AI 看你私有资料的关键技术:长期记忆的底层技术
- Agent 工作流是什么?:理解 session 在工作流里的作用
- 多智能体协作是什么?:多 Agent 之间怎么共享记忆
- AI 智能体完全指南:Pillar 长文
常见问题
Q:ChatGPT 的 Memory 功能算 AI Agent 记忆吗? A:算长期记忆的一种实现。它把你说过的”我是程序员住深圳”这类稳定信息存在用户档案里,每次新对话自动注入。详细看 ChatGPT Memory 怎么用。
Q:Claude 的 Projects 算记忆吗? A:Projects 是中期记忆(项目级上下文)+ 长期记忆(项目知识库)的组合。详细看 Claude Projects 怎么用。
Q:上下文窗口越大,是不是就不需要记忆机制了? A:缓解但不解决。即使 1M tokens 也会爆,而且长上下文有「中间丢信息」问题(lost in the middle),关键信息夹中间反而读不到。所以再大窗口也需要主动管理。
Q:记忆机制会泄露隐私吗? A:会,要小心。长期记忆里可能存了用户姓名、地址、偏好。生产环境必须:1)加密存储;2)用户可见可删;3)符合 GDPR/PIPL;4)敏感字段不入向量库。
Q:完全不会代码能用 Agent 记忆吗? A:能。扣子 Coze 的”用户长期记忆”完全可视化配置,Kimi 创建项目自动管理记忆,ChatGPT Memory 直接说”记住 X”就行。代码自建是给企业级场景准备的。
Q:Agent 记忆和数据库有啥区别? A:数据库是按 key 查的精确存储,Agent 记忆通常是按语义查的模糊存储。两者经常配合:硬数据进数据库,软偏好进向量库。