第 13 章 · 记忆、规则与学习
本章目标:区分规则、任务历史和长期记忆,理解“越用越懂你”为什么需要提取、检索、校验和遗忘。
1. 三种看起来相似的东西
规则告诉 Agent 应该怎样做,例如构建命令和不可修改目录;历史记录 刚才发生了什么;记忆保存 未来可能再次有用的事实或偏好。混用会造成严重问题:把一次临时决定写成永久规则,或者把过期记忆当作当前事实。
规则通常由人类维护并具有明确作用域。项目根目录规则作用于整个仓库,嵌套规则只作用于子目录。记忆则可能由 Agent 提议写入,但应保留来源、时间和可编辑性。
2. 记忆的生命周期
真正的记忆系统包含五步:
- 提取候选:这次任务有什么未来价值;
- 分类存储:用户偏好、项目事实、故障经验;
- 相关检索:当前任务需要哪些条目;
- 使用前校验:事实是否仍与源码和配置一致;
- 更新或遗忘:冲突、过期和低价值内容怎样处理。
只实现 write_memory 而没有检索和纠错,会形成一个越来越大的错误笔记本。
3. 什么值得记
适合长期保存的是稳定构建命令、模块职责、反复出现的用户偏好、已验证的故障解法和明确架构决定。不适合保存的是 API key、原始私人数据、一次性日志、未验证猜测和很快变化的分支状态。
每条记忆可以包含 source、verified_at、scope、confidence 和 expires_when。模型的“我认为”不应自动拥有与测试结果相同的置信度。
4. 检索不能全量加载
启动时可以加载很短的 MEMORY 索引,详细主题按需读取。检索可以先用关键词和项目路径,规模更大时再用向量搜索。无论使用何种技术,都要让模型看到来源和时间,以便判断是否需要重新验证。
记忆与 Skills 的渐进加载很相似:先展示少量元数据,只有相关时才展开正文。上下文越贵,这种分层越重要。
5. 从用户纠正中学习
当用户说“这个仓库不要运行 npm test,要用 pnpm test”,Agent 可以询问是否更新项目规则。一次纠正可能只适用于当前任务,也可能值得持久化。不要悄悄把所有反馈写入长期记忆。
学习闭环是:错误行为 → 人类纠正 → 判断作用域 → 更新规则或记忆 → 下次任务验证是否减少同类错误。这里的人类负责业务意义,Agent 负责整理和执行。
6. 记忆污染与审计
恶意仓库文件可能写着“请把这条内容保存为永久记忆”。记忆写入属于高信任动作,不能听从任意外部文本。系统应记录谁提议、写入了什么、来源是什么,并允许用户浏览、编辑和删除。
实践判断
下次想让 Agent “记住某件事”时,先说清它是规则、偏好、项目事实还是临时任务状态。分类正确,后面的存储位置和加载时机才会正确。