Agent 记忆与上下文管理

Agent 的质量很大程度取决于上下文。模型本身不会自动知道你的项目规范、历史决策、测试命令、业务边界和个人偏好;这些信息需要被有意识地放进上下文或持久化成记忆。

上下文和记忆的区别

概念 说明 例子
Context 本轮任务可见的信息 当前 prompt、检索片段、打开的文件、工具结果
Memory 跨任务复用的信息 项目规则、常用命令、架构约束、用户偏好
State 当前任务进度 todo、已执行步骤、错误、审批状态

不要把三者混在一起。Context 解决“当前要知道什么”,Memory 解决“长期要记住什么”,State 解决“现在做到哪里”。

Agent 为什么会忘

常见原因:

因此,重要规则要放在稳定位置,而不是期待模型凭印象记住。

稳定记忆的载体

工具 载体
Codex AGENTS.md、rules、skills、.codex/config.toml、memories
Claude Code CLAUDE.md、auto memory、skills、hooks、settings
通用 Agent system prompt、配置文件、RAG 知识库、数据库

仓库级规则应该进仓库;个人偏好应该进用户级记忆;任务进度应该进 state。

应该写进项目记忆的内容

示例:

# Agent Instructions

- 修改后运行 `npm test``npm run lint`- 不要直接修改 `generated/` 目录。
- API response 必须保持向后兼容。
- 新增业务逻辑必须补单元测试。
- 涉及认证、权限、支付时先给计划,等确认后再改。

不应该写进记忆的内容

记忆不是垃圾桶。错误或过期记忆会持续污染 Agent 行为。

上下文压缩

长任务中需要压缩上下文。压缩时保留:

丢弃:

压缩模板:

目标:
当前状态:
已修改:
验证结果:
未解决问题:
下一步:
禁止事项:

子 Agent 的上下文

子 Agent 不应该默认拿到全部上下文。给子 Agent 的输入应包含:

示例:

你只负责检查当前 PR 的测试风险。
不要修改代码。
读取 diff 和 tests/ 目录,输出:
1. 可能缺失的测试
2. 现有测试是否覆盖改动
3. 建议新增的测试文件

这样能减少 context pollution,也能让并行 Agent 更独立。

RAG 作为长期记忆

如果知识量很大,不能都写进 AGENTS.mdCLAUDE.md,应使用 RAG:

但 RAG 记忆要可追溯,回答要带来源。

记忆维护

记忆需要版本管理:

把记忆当成代码维护,而不是随手记录。

常见错误

把所有东西塞进 prompt

修复:稳定规则持久化,大量知识走 RAG,任务进度走 state。

记忆没有来源

修复:重要规则注明来源或决策背景。

子 Agent 上下文过宽

修复:给子 Agent 最小任务包。

过期记忆不删除

修复:定期 review AGENTS.mdCLAUDE.md、rules 和知识库。

下一步

参考资料