Skip to content

11 · 决策记忆

Agent Note、复盘与升级指南 ​

关键文件.agents/notes/README.md.agents/notes/AGENTS.mdscripts/agent-note-tree.tsdocs/postmortem/docs/upgrade-guide/

模型不记得上一次会话为什么这样决定,所以理由必须写进仓库。仓库把这类文件称为 Agent Note,相当于由 Agent 撰写的 RFC:记录"为什么"和"放弃了什么",这是代码和文档承载不了的部分。

proposed/评审中的提案implemented/已落地,用现在时路径和名称随代码同步archived/永久冻结,不可再改删除三件套英文 · 中文 · i18n 记录rejected/能防止误用才保留决策落地已少有指导价值只记了 UI/机械改动被否决不再能防止误用
Note 的状态编码在路径里:{lifecycle}/{class}/yyyy-mm-dd-topic.md。完全被取代的已实现 Note 可以合并进新的 owner 后删除,前提是保留所有独有的理由、备选方案和验证要求。部分取代时两条都保留并互相链接。

什么时候写,写什么 ​

  • 只为持久的决策理由写。代码、测试和现有文档解释不了的才写。机械性和局部改动(包括局部 UI 调整)不写,这一条本身就在防止模型过度产出文档。
  • class 是封闭集合:feature、bug-fix、simplification、architecture、process、testing,由 scripts/agent-note-tree.ts 定义。refactor 被刻意排除,因为它与 simplification 重叠。
  • 固定格式:提案要有 Problem、Proposal、Alternatives considered、Acceptance criteria、Risks;verify-agent-note-format 检查表头和章节。
  • 每个新 Note 都要做取代检查:搜索已有 Note 是否覆盖同一决策,用 dsh-archive-agent-notes 分类处理,同一 PR 里完成归档。
  • 已实现的 Note 跟随代码:代码移动文件、改包名、换默认值时,在同一改动里更新 Note 的事实部分。Note 不能被改成另一个决定;要换决定就写新 Note 取代旧的。
  • 归档即冻结:archived/ 下的文件永远不改,也不当作现行依据。verify-archived-agent-notes 用哈希清单强制执行。

复盘与升级指南 ​

docs/postmortem/ 是唯一允许写事故经过的地方,记录事件顺序、证据、因果链、影响和预防措施。目前有四篇,例如 0001 记录了 ACP 插件的默认导出导致 Loader 丢弃 inject,这一事故直接产生了 packages/AGENTS.md 的插件导出规则和对应的测试断言。

外部可感知的破坏性变更(CLI、profile、配置键、持久化数据、SDK 或协议、包入口)必须立刻写进 docs/upgrade-guide/v<版本>/<条目>/guide.md,格式由 verify-upgrade-guides 检查。

依据 deepseek-harness 仓库 master 分支及其 git 历史整理