适用人群:让重复协作少走弯路
适合长期使用 Agent 做内容、研究、自动化或软件工作的个人与小团队。如果你发现它总忘记输出偏好、重复踩同一个环境坑,或工具变化后仍按旧方式执行,就需要一套可维护的记忆结构。
记忆文件只保存可复用、可验证、允许被保存的信息。不要写入凭据、敏感个人资料、客户秘密或一次性闲聊;修复方法未经验证时,只能标为假设。
四类文件,各自只回答一类问题
| 文件 | 负责什么 | 何时写入 | 不要放什么 |
|---|---|---|---|
| USER.md | 协作偏好:输出风格、沟通节奏、优先级与禁忌。 | 用户明确表达稳定偏好,或多次纠正同一问题。 | 敏感个人资料、临时情绪、未经确认的用户画像。 |
| MEMORY.md | 环境与工程事实:系统限制、依赖条件、已验证的规避办法。 | 问题可复现,且解法经过验证并注明适用环境。 | 凭据、绝对私人路径、猜测出的根因。 |
| SKILLS.md | 能力清单:可用工具、输入输出、调用条件与失败回退。 | 新增能力、工具升级、接口或职责边界变化。 | 未实际具备的能力、过长的操作流水账。 |
| RUNBOOK.md | 排障手册:症状、诊断、修复动作与回归步骤。 | 同类故障再次出现,或一次故障已影响关键任务。 | 没有验证步骤的“玄学经验”、无关故障大全。 |
可以先建四个空文件,再按规则逐步补充。文件名只是通用约定,重点是分工稳定,而不是必须采用某种工具。
空白骨架:每条记忆带验证信号
四类记忆文件骨架
USER.md|协作偏好
- 偏好:【用户明确表达的做法】
适用场景:【哪些任务】
来源与确认日期:【何时确认】
反例或例外:【何时不适用】
MEMORY.md|环境与工程事实
- 已确认事实:【客观限制或条件】
适用环境:【系统、版本、依赖范围】
已验证做法:【具体动作】
成功信号:【怎样算有效】
最近验证:【YYYY-MM-DD】
SKILLS.md|能力清单与边界
- 能力名称:【工具或技能】
何时使用:【触发条件】
输入与输出:【格式约定】
不用于:【限制与禁区】
失败回退:【更确定的替代办法】
RUNBOOK.md|排障与回归
- 故障名称:【简短命名】
症状与影响:【可观察表现】
根因状态:【已确认 / 待验证】
诊断与修复:【最小步骤】
回归验证:【重复步骤与通过条件】
什么值得记,什么应该删
- 重复出现。同类问题第二次出现,通常比一次偶然现象更值得沉淀。
- 影响关键边界。涉及权限、数据安全或不可逆动作,即使只出现一次,也要记录安全约束。
- 能明显减少返工。把多轮解释变成稳定模板或检查时,值得保存。
- 可以回归。写入时必须附成功信号;无法验证的内容标成待验证假设,而不是事实。
每周做一次短体检:删除已经失效的环境信息,合并重复偏好,把一次性过程移出长期记忆。条目越多不代表越好,能被快速找到并正确执行才是目标。
故障回归表:修复后必须重新提问
排障时先保存最小复现,再一次只改一个条件。修复后重跑原故障和相关主流程,避免“这个问题没了,另一个功能坏了”。通过次数可按故障风险自行约定,不要用一次偶然成功代替验证。
| 类别 | 症状与影响 | 根因假设 | 修复动作 | 回归验证 |
|---|---|---|---|---|
| 网络或环境 | 【请求失败;哪条任务中断】 | 【待验证的环境因素】 | 【一次只调整一个条件】 | 【原请求成功+关键结果正确】 |
| 工具链 | 【批次中断;影响了什么产物】 | 【待验证的编排或依赖问题】 | 【切换到已确认的回退路径】 | 【按约定次数重复成功+产物可打开】 |
| 记忆冲突 | 【新偏好被旧条目覆盖】 | 【条目重复或适用范围不清】 | 【合并条目并写明例外】 | 【用两组相反场景各测一次】 |
| 自定义 | 【填写症状】 | 【填写假设】 | 【填写最小修复】 | 【填写通过条件】 |
单条故障回归记录
故障编号与名称:【便于检索】
首次与最近发生:【日期】
最小复现步骤:【必要步骤,不含敏感信息】
预期结果:【本来应该发生什么】
实际结果与影响:【观察到什么,影响哪条任务】
根因假设:【待验证,不提前写成事实】
本次只改变:【一个条件】
修复动作:【具体步骤】
原故障回归:【步骤、次数、通过条件】
主流程回归:【相关任务是否仍正常】
结果:【通过 / 未通过 / 回退】
证据位置:【不含敏感信息的记录位置】
后续检查日期:【何时确认仍然有效】
常见误区
- 把聊天记录直接当长期记忆。先提炼规则、适用范围和验证信号。
- 偏好、环境和排障混写。查找困难,也容易让旧环境事实干扰新任务。
- 修复只看一次成功。至少重跑原故障与相关主流程,并记录结果。
- 只增不删。过时记忆会与新指令竞争,需要定期归档和合并。
下一步行动
今天先建立四类空文件,再挑一个最近重复发生的故障填入回归表。不要同时整理全部历史;先让这一条经验在下次任务中被正确找到、执行并验证。