保存本轮目标、最近命令、刚发生的判断和待确认事项。
最新消息优先,旧对话很快会过期,不能把一次性状态沉淀成长期事实。Memory:让 Agent 带着上下文持续工作
约 1249 字大约 4 分钟
2026-05-25
Memory 让 Agent 不只依赖当前一句 prompt,而是能在不同层级读取和复用上下文。但 memory 不是事实真理,仍需要项目文件、官方文档和当前任务校验。更准确地说,它不是“万能长期大脑”,而是 Agent 进入任务时要读取的一组分层上下文。
MEMORY LAYERS
Memory 不是长期大脑,而是 Agent 进入任务时读取的一组分层上下文。
优先级永远是:当前任务和项目事实先决定方向,规则约束行为,项目记忆和全局记忆只负责帮助 Agent 更快进入状态。约束 Agent 在这个仓库里怎么读、怎么写、哪些操作要谨慎。
规则负责约束行为,不负责替代代码事实和官方文档。沉淀长期有效的仓库约定、内容口径、工作流修复和重复出现的偏好。
必须可索引、可审查、可更新,不能无限堆历史碎片。减少重复沟通,例如回复语言、写作风格和长期工作习惯。
不能覆盖项目规则,也不能压过当前任务和项目事实。SHOULD STORE
适合写进项目记忆
- 反复出现的目录约定、组件命名口径和写作规则
- 未来任务仍必须遵守的安全边界和协作习惯
- 长期有效的架构决策、工作流修复和内容偏好
- 需要通过 `.memory/index.md` 稳定索引的项目级事实
DO NOT STORE
不适合写进项目记忆
- 会频繁变化的版本号、价格、安装方式和额度信息
- 只对当前一次任务有效的临时状态
- 可以直接从源码、README 或官方文档读到的事实
- 未经验证的猜测、印象和一次性试错结论
为什么需要 Memory
如果每次协作都要从零开始重新描述项目结构、风格约束、安全边界和历史决策,Agent 很难稳定进入状态。Memory 的价值就在这里:它把那些会重复出现、又不适合每次都重新手写的上下文沉淀下来。
但这不意味着 Agent 会“永远记住一切”。在工程场景里,更准确的理解是:
- 当前任务负责方向
- 项目文件负责事实
- 规则负责约束
- Memory 负责帮助 Agent 更快进入正确状态
上下文层次
| 层次 | 典型内容 | 用途 | 边界 |
|---|---|---|---|
| 当前会话上下文 | 用户最新目标、执行状态、刚跑过的命令 | 保持本次任务连续 | 最新消息优先,旧上下文可能过期 |
| 项目规则 | AGENTS.md、项目工作流、禁止操作 | 约束 Agent 如何在本仓库工作 | 规则不能替代事实检查 |
| 项目记忆 | .memory/rules.md、.memory/index.md、长期偏好 | 复用本项目长期有效决策 | 需要索引和审查,不能无限堆 |
| 全局记忆 | 用户跨项目偏好、常用表达、长期习惯 | 减少重复沟通 | 不应覆盖项目规则和当前任务 |
这四层不是并列投票,而是有优先级的。你可以把它理解成一个读取顺序:
当前消息项目文件事实项目规则项目记忆全局记忆
越靠前,越直接决定本轮任务。越靠后,越偏辅助进入状态。
Codex 中的读取顺序
在一个 Codex 协作项目中,AGENTS.md 通常提供项目级指令,openspec/project.md 提供项目上下文,.memory/rules.md 和 .memory/index.md 管理项目记忆,当前线程记录任务进度和刚刚发生的决策。
一个更实用的理解顺序是:
- 用户当前消息决定这轮到底要解决什么。
AGENTS.md告诉 Agent 在这个仓库里怎么工作。openspec/project.md补项目级技术事实和命令入口。.memory/index.md决定要不要继续读取某条项目记忆。- 当前线程再把刚刚的执行结果和判断接回下一轮。
全局记忆更偏“用户长期偏好”:比如回复语言、文档风格、视觉偏好、提交信息习惯。项目记忆更偏“这个仓库长期有效”:比如目录结构、组件约定、OpenSpec 流程、写作口径。
优先级
用户当前消息和项目文件优先,其次是项目规则,再看项目记忆和全局记忆。涉及库、API、安装、价格、权限等易变事实时,要回到官方文档或项目源码核对。
写入判断
这一步不用再背一份长清单,关键是看两条判断线:
它会不会在未来反复出现?它是不是不能简单从项目文件或官方文档直接读出来?
如果两条都满足,才值得考虑写进项目记忆。
比如下面这些信息通常适合沉淀:
- 这个仓库长期有效的写作口径或组件命名方式
- 团队已经确认过的协作边界和安全习惯
- 某次复盘后沉淀出的上下文加载顺序
而下面这些信息更适合留在别的地方:
- 当前一次任务的临时状态,应该留在当前线程
- 版本号、安装方式、价格这类易变事实,应该回到官方文档
- 代码和 README 已经写清楚的事实,应该直接从项目读取
所以 Memory 更像“高频复用的项目背景”,不是“把所有信息都记下来”。
Memory 的边界
Memory 应该小、准、可审查。它帮助 Agent 快速进入状态,但不能替代代码、测试、官方文档和人的最终判断。
这篇里最重要的边界有三条:
- Memory 不能覆盖当前用户消息。
- Memory 不能替代项目文件和官方事实源。
- Memory 不能绕过验证和人工审查。
所以 Memory 解决的是“带着上下文进入任务”,不是“替你完成判断”。
后续关系
理解了 Memory 以后,后面的文章会分别补这个体系里的其它缺口:
Skill:把经验从“记得住”推进到“可复用”MCP:让 Agent 能带着上下文去连接外部能力Agent Orchestration:把 Memory 放回整体协作里看它和 Skill、MCP、Tool、Hook 怎么配合