Agent 记忆(Memory)
上下文窗口是 Agent 的短期记忆,装不下也留不久;长期记忆要把关键信息写进外部存储再按需检索。CLAUDE.md / AGENTS.md 是最朴素的长期记忆,也是当前工程上最有效的方案。
发布 2026-08-30更新 2026-08-30为什么 Agent 需要记忆
把 Agent 当实习生看就懂了:实习生入职第一天能干活,是因为记住了团队约定(用 pnpm 不用 npm、提交前跑 lint)。而一个没有记忆的 Agent,每次会话都像失忆重来——你反复教它同样的事,它反复犯同样的错。
更硬的约束来自上下文窗口本身:
- 容量有限:Context Rot 证明输入一长质量就掉,窗口远未满就已退化
- 生命周期短:会话结束、compaction 压缩之后,早期内容就没了
- 按 token 计费:每次都重读全部历史,账单撑不住
记忆系统的本质:把「每次都要重学」的东西挪到窗口外面,按需取回。
两层记忆:短期与长期
| 短期记忆 | 长期记忆 | |
|---|---|---|
| 载体 | 上下文窗口 | 外部存储(文件/向量库/数据库) |
| 生命周期 | 单次会话内 | 跨会话、跨项目 |
| 容量 | 几十~几百 K token | 无上限 |
| 读写 | 模型原生 | 需要 Agent 主动调用工具 |
| 典型内容 | 当前任务步骤、刚读过的文件 | 项目约定、踩过的坑、用户偏好 |
学术界的分层更细(受认知科学启发,MemGPT/Letta 一系把这套发扬光大):
- 工作记忆:当前上下文里的活跃内容
- 情景记忆(episodic):过去发生的事件流水——「上次重构是怎么失败的」
- 语义记忆(semantic):沉淀下来的事实与偏好——「这个项目用 pnpm」
- 程序记忆(procedural):固化成规则的操作流程——「提交前必须跑测试」
工程上不必照搬四层,但**「事件流 → 提炼 → 沉淀」**这个方向是共通的:先记录发生了什么,再总结成可复用的结论,最后固化到规则文件里。
工程实现的三条路线
1. 记忆文件:CLAUDE.md / AGENTS.md(最朴素,最有效)
把项目约定写成 Markdown 放在仓库根目录,Agent 每次启动自动读取:
它同时解决两件事:人也是读者(新人 onboarding 看同一份文件),版本可管理(记忆跟着 git 走,可 review、可回滚)。这比任何智能记忆系统都可靠——因为它简单到不会出错。
写法要点:只写 Agent 会反复用到的稳定约定(构建命令、目录结构、禁区),别写成需求文档。详见 AGENTS.md 详解。
2. 向量检索:记忆库 + RAG
把历史会话、踩坑记录切块后存进向量库(embedding),新任务开始时先检索相关记忆注入上下文:
- 优点:能记住海量历史,按语义召回
- 风险:检索质量决定一切——召回错了等于给 Agent 喂错误记忆,比没有记忆更糟
适合多项目、长周期积累的个人助手型 Agent;单仓库编程场景下,记忆文件通常够用。
3. 内置记忆系统:工具厂商的尝试
MiMo Code 把记忆系统做进了 Agent 本体——跨会话记住项目上下文与用户习惯。方向正确,但注意两点:记忆存在哪(本地 or 云端)决定隐私边界;记忆能否查看、编辑、清除决定可控性。闭源记忆系统在这两点上天然存疑,选型时要看厂商的披露。
记忆的坑:污染与过时
记忆系统不是纯增益,它引入两类新故障:
- 记忆污染:早期学到的错误约定(比如某个已废弃的构建命令)被反复注入,Agent 把错误越滚越扎实。解法:记忆要可编辑、可清除,且标注来源与时间
- 记忆过时:项目演进后旧约定失效(monorepo 拆分了、框架升级了),记忆文件没跟着更新。解法:把记忆文件纳入维护流程,lastVerified 思维同样适用于记忆
一个实用习惯:让 Agent 在每次踩坑后主动提议把教训写进 AGENTS.md——人审核后合入。记忆的写入路径有人把关,污染速度就可控。
和上下文工程的关系
记忆是上下文工程的子问题:后者管「这一次请求的窗口里放什么」,前者管「跨请求的沉淀与召回」。完整链路是:
踩坑/约定 → 沉淀进记忆(AGENTS.md / 向量库) → 下次任务按需召回注入 → 窗口内只保留当前任务的高信噪比内容
三层各司其职,缺哪层都会退化:没记忆则反复重学,没检索则记了找不到,没上下文工程则找到了也淹没在噪声里。
常见误区
- 「上下文窗口够大就不需要记忆」:错。窗口再大也跨不了会话,且长输入直接触发 Context Rot
- 「记忆文件是给模型写的文档」:错。AGENTS.md 首先写给人看——它是一份恰好能被机器消费的工程约定
- 「记忆越多越好」:错。污染与过时的记忆是负资产,宁缺毋滥,定期清理
- 「向量库是记忆的标准答案」:过度设计。单项目编程场景,一个 Markdown 文件解决 80% 的问题
相关阅读
相关工具
相关模型
Aider vs Claude Code:终端 AI 编程双雄怎么选
Aider vs Claude Code 2026 选型对比:开源 BYOK 多模型 vs Anthropic 订阅长任务 Agent,从编程能力、多模型支持、价格、Git 集成、国内可用性和适合人群判断,帮你选对终端 AI 编程工具。
Claude Code vs Cline:CLI AI Agent 怎么选?2026 对比
Claude Code vs Cline 2026 选型对比:Anthropic 官方闭源 CLI Agent vs Apache-2.0 开源 VS Code 插件。从模型绑定、工作流、MCP 支持、价格、隐私和适合人群 6 个维度帮你选对 CLI AI 编程工具。
Claude Code vs Codex CLI:终端 AI Agent 双雄对比
Claude Code vs Codex CLI 2026 选型对比:Anthropic 与 OpenAI 两大官方终端 Agent 的模型、长任务、MCP 生态、Windows 支持、订阅打包价格和国内可用性全方位对比,帮你判断该用哪个终端 AI Agent,以及能不能两个一起用。
Claude Code vs Crush:Anthropic 官方 vs 多模型 TUI(2026 实测选型)
Claude Code vs Crush 2026 选型对比:Anthropic 官方 CLI Agent(Claude only + 长任务最稳 + MCP 一等公民)vs Charmbracelet 开源 TUI Agent(多模型 mid-session 切换 + LSP + FSL-1.1-MIT)。从模型、长任务、生态、价格、国内可用性帮你选对终端 AI 编程工具。
Cursor vs Claude Code:什么时候用哪个?(2026 实测选型)
Cursor 和 Claude Code 到底怎么选?一句话结论 + 决策树 + 价格实测 + 国内可用性对比。GUI 派选 Cursor,终端长任务派选 Claude Code,最优解其实是共存。
Devin vs Claude Code:AI 编程 Agent 怎么选?异步自主 vs 终端同步对比
Devin vs Claude Code 2026 选型对比:Cognition 异步自主 Cloud Agent vs Anthropic 终端同步 CLI Agent,从形态、工作模式、长任务能力、并发、价格、中文支持和适合人群 8 个维度判断,帮你选对 AI 编程 Agent。