Agent 记忆体系
一句话定位:Agent 怎么”记住”东西——不只是”存哪儿”,更是”该记什么、什么时候写下来、怎么想起来、什么时候该忘”。本文给一张 Agent 记忆的分类地图 + 读写遗忘循环 + 一张王牌辨析表「记忆 vs 上下文 vs RAG vs 状态」。这是 Agent 架构师能力地图 能力域 4 的展开,也把 Harness 工程与 Agent 解剖 § 5.5.2 的”记忆三类生命周期”从认知角度铺开。
💬 大白话:给 Agent 配记忆,跟人差不多——有”现在脑子里正想的”(工作记忆)、“这两天的事”(短期)、“刻进骨子里的”(长期);还分”记得发生过啥”(情节)、“懂得的知识”(语义)、“会做某件事”(程序)。
目录
- 1. 为什么是”记忆体系”而不只是”上下文”
- 2. 记忆分类地图(两个维度)
- 3. 记忆的读 / 写 / 忘 循环
- 4. 王牌辨析:记忆 vs 上下文 vs RAG vs 状态 vs CLAUDE.md
- 5. 落地:Agent 记忆的常见实现
- 6. 常见坑
- 7. 术语速查
- 与本知识库其他章节的关联
- 来源与局限性
1. 为什么是”记忆体系”而不只是”上下文”
新手常以为”Agent 的记忆 = 上下文窗口”。不对。上下文窗口是模型这一次能看见的字,它会满、会被压缩、会随会话结束消失(见 上下文窗口与 Token 计费)。
💬 大白话:上下文窗口就像你的手头便签——能写的就那么多,写满了得擦掉旧的。“记忆体系”是你有策略地把重要的东西归档进抽屉、需要时再翻出来,而不是全靠那张便签。
记忆体系 = 一套”该记什么、怎么存、怎么取、怎么忘”的策略,让 Agent 不会”一关机就失忆、一压缩就忘事”。
⚠️ 和”长程任务状态”分清楚:长程任务原语 讲的是”任务进度怎么跨时间存活”(机制——存档/续跑);本文讲的是”Agent 该记住哪些知识、怎么回忆”(认知——记什么/怎么忆)。一个管”活下来”,一个管”想起来”。
2. 记忆分类地图(两个维度)
人的记忆有成熟的分类,Agent 直接借用。两个维度交叉看:
2.1 按”能留多久”分:工作 / 短期 / 长期
这一维是 Harness § 5.5.2 “三类生命周期”的认知版说法:
| 类型 | 大白话 | 存在哪 | Agent 例子 |
|---|---|---|---|
| 工作记忆 | 此刻正握在手里的 | 当前上下文窗口 | 当前这一步要用的工具返回值 |
| 短期记忆 | 这次任务 / 会话内的 | 上下文 + 会话状态 | 本次需求、已生成的代码片段 |
| 长期记忆 | 跨会话要一直记得的 | 向量库 / 数据库 / 文件 | 用户偏好、项目背景、技术栈 |
💬 大白话:工作记忆=手里这张便签;短期记忆=今天桌上摊开的资料;长期记忆=归进文件柜、明年还能翻出来的档案。
2.2 按”记的是哪种东西”分:情节 / 语义 / 程序
| 类型 | 英文 | 大白话 | Agent 例子 |
|---|---|---|---|
| 情节记忆 | Episodic | 记得”发生过什么事" | "上次用户让我改的是登录模块” |
| 语义记忆 | Semantic | 懂得”事实和知识" | "这个项目用的是 PostgreSQL” |
| 程序记忆 | Procedural | 会做”某个流程 / 技能" | "部署要先跑测试再 build”(≈ Skill / CLAUDE.md 里的规程) |
💬 大白话:情节=你记得”昨天和谁吃了饭”;语义=你知道”水的化学式是 H₂O”;程序=你会”骑自行车”不用想。这三类在大脑里走的是不同记忆系统(程序记忆尤其独立),所以在 Agent 里也建议按类型分区存储——不是说必须各建一个库,而是别把它们搅成一锅、互相覆盖。
两维交叉(举例):用户偏好 = 长期 + 语义;“上次任务做到第 3 步” = 短期 + 情节;部署规程 = 长期 + 程序。
3. 记忆的读 / 写 / 忘 循环
记忆不是只管存,是一个写入 → 检索 → 遗忘的循环。三步都要有策略:
| 环节 | 关键问题 | 大白话 | 做法要点 |
|---|---|---|---|
| 写入(Write) | 什么值得记?什么时候写? | 别啥都记,也别该记的不记 | 只记”以后还用得上”的(偏好、结论、踩过的坑);在每轮 / 每任务结束时写回 |
| 检索(Recall) | 怎么想起相关的那条? | 要”想起来”,不是”全倒出来” | 按相关性取(向量检索 / 关键词 / 元数据过滤),只把相关的喂回上下文 |
| 遗忘(Forget) | 什么时候该删 / 更新? | 过时的记忆比没记忆更坑 | 旧偏好要更新、噪音要淘汰(呼应 Harness § 5.5.2 “长期记忆不更新 → 答非所问”) |
💬 大白话:好记忆三件事——该记的记下来、要用时找得到、过期的扔得掉。三件少一件都出问题:不写=失忆;不会检索=记了也白记;不遗忘=抱着过时信息办错事。
4. 王牌辨析:记忆 vs 上下文 vs RAG vs 状态 vs CLAUDE.md
这几个概念最容易被搅成一团。一张表理清(这是本文最该记住的一节):
| 概念 | 是什么 | 存在哪 | 寿命 | 一句话抓本质 |
|---|---|---|---|---|
| 上下文窗口 | 模型这一次能看见的全部字 | 当前请求 | 单次推理 | 记忆的”临时工作台”,会满会清 |
| 工作 / 短期记忆 | 当前任务正在用的信息 | 上下文窗口里 | 任务 / 会话期间 | 就是”用上下文实现的手头记忆” |
| 长期记忆 | 跨会话要长期记住的事实 / 偏好 | 向量库 / 数据库 / 文件 | 持久 | 真正意义的”记住”,要主动写 + 主动取 |
| RAG | 从外部知识库检索内容喂进上下文 | 向量库 + 文档 | 持久(外部知识) | 本质是检索技术:检索的是”记忆性内容”(用户/项目记录)时才算长期语义记忆的实现;检索通用资料时只是”外部知识检索”,不等于记忆 |
| Session 状态 | 任务进行到哪一步了 | transcript / workspace | 会话 / 任务 | 是”进度存档”不是”知识”(见 长程任务原语) |
CLAUDE.md | 启动时自动读入的指令 / 背景 | 文件 | 持久 | 长期记忆的”开机自启”形态——但它是全量注入、无按需检索、无遗忘机制,是持久指令载体,不是完整记忆系统 |
💬 一句话串起来:上下文是工作台,长期记忆是文件柜,RAG 是去文件柜里”按需取档”的动作,Session 状态是”干到哪了”的进度条,CLAUDE.md 是开机就自动摆上工作台的常用手册。
5. 落地:Agent 记忆的常见实现
| 记忆类型 | 常见实现 | 本库参考 |
|---|---|---|
| 工作 / 短期 | 直接放上下文 + 会话状态;满了靠压缩 | 上下文窗口与 Token 计费、长程任务原语 § 3.3 |
| 长期 · 语义 | 向量库 + RAG 检索 | RAG 学习笔记、 向量数据库 |
| 长期 · 偏好 / 事实 | 结构化存储(KV / 数据库)+ 启动注入 | CLAUDE.md / MEMORY.md(Harness 记忆层) |
| 长期 · 程序 | Skill / 规程文件 | Claude Code 扩展生态(Skill) |
| 模型层”记忆” | 把记忆做进模型结构(前沿方向) | DeepSeek Engram 条件记忆 |
💡 注意最后一行:Engram 是把”记忆”做进模型权重层的探索,和本文讲的应用层记忆是两个层面——一个改模型,一个在模型外面搭策略。
6. 常见坑
| 坑 | 症状 | 解法 |
|---|---|---|
| 把”上下文”当”记忆” | 以为塞进上下文就永久记住了,压缩后全丢 | 该长期的写到 Workspace / 向量库 |
| 什么都往长期记忆塞 | 噪音淹没有用信息,检索越来越不准 | 只记”复用价值高”的;定期清理 |
| 长期记忆不更新 | 拿过时偏好办事、答非所问 | 每次交互后更新(Harness § 5.5.2) |
| 三类记忆混存 | 用户偏好被任务数据覆盖 | 按生命周期分独立存储区 |
| 检索召回不相关 | 把一堆无关记忆喂回上下文,挤占窗口还带偏 | 提升检索相关性(Reranker / 元数据过滤,见 Embedding-Reranker) |
7. 术语速查
| 术语 | 英文 | 一句话 | 💬 大白话 |
|---|---|---|---|
| 工作记忆 | Working memory | 此刻正在用的信息 | 手里这张便签 |
| 短期记忆 | Short-term memory | 当前任务 / 会话内的信息 | 今天桌上摊的资料 |
| 长期记忆 | Long-term memory | 跨会话持久记住的 | 归进文件柜的档案 |
| 情节记忆 | Episodic memory | 记得”发生过什么” | 记得昨天和谁吃饭 |
| 语义记忆 | Semantic memory | 懂得的事实 / 知识 | 知道水是 H₂O |
| 程序记忆 | Procedural memory | 会做的流程 / 技能 | 会骑车不用想 |
| 写回 | Write-back | 把值得记的存进长期记忆 | 把结论归档进抽屉 |
| 检索 | Retrieval / Recall | 按相关性取出记忆 | 要用时翻出对的那一份 |
| 遗忘 / 淘汰 | Forgetting / Eviction | 删除或更新过时记忆 | 把过期的扔掉 |
| 记忆漂移 | Memory drift | 多份记忆不一致 | 几个本子记的对不上 |
与本知识库其他章节的关联
| 文档 | 关系 |
|---|---|
| Skill工程化设计与失效防御 | 那篇的「激活优于存储」是记忆问题的另一面:写下来(存储)和想得起来(召回)是两件事,记在没人走的路径上等于没记 |
| Agent 架构师能力地图与学习路线 | 本文是其**能力域 4(记忆与上下文管理)**的展开 |
| Harness 工程与 Agent 解剖 | § 5.5.2 从”存储生命周期”讲记忆三类,本文从”认知分类 + 读写遗忘”铺开,互补 |
| 长程任务原语 | 那篇管”任务状态怎么跨时间存活”(机制),本文管”该记什么、怎么回忆”(认知) |
| 上下文窗口与 Token 计费 | 工作 / 短期记忆的物理载体;解释为什么不能只靠上下文 |
| RAG 学习笔记 / Embedding-Reranker-向量数据库 | 长期·语义记忆的主流落地实现(检索) |
| DeepSeek Engram 条件记忆 | 模型权重层的”记忆”探索,与应用层记忆对照 |
| Claude Code 扩展生态 | Skill / 规程文件 ≈ 程序记忆的工程载体 |
来源与局限性
- 来源:补全 Agent 架构师能力地图 能力域 4 的覆盖空洞;记忆分类借用认知科学经典框架(工作 / 短期 / 长期、情节 / 语义 / 程序),结合本库已有的上下文、RAG、Harness 记忆层笔记提炼。
- 局限性:
- 认知科学的记忆分类是类比框架,不代表 Agent 内部真有对应的生物机制——用它是为了好记好设计;
- 本文聚焦”记忆的分类与读写遗忘策略”,具体向量库 / 检索实现见 RAG 与 Embedding 两篇,不在此展开;
- “记忆”这个词在不同框架里指代不一(有的把 RAG 直接叫 memory),用时以本文 § 4 辨析表 的口径为准。
- 最后更新:2026-06-03