跳到主要内容
日期Aug 9, 2026·版本v0.7.9·AI 使用情况翻译·翻译自English

ADR 0000 - ADR 记录什么(以及不记录什么)

ADR 记录的是架构决策及其理由——我们决定了什么、为什么,是在列举的备选方案中作出选择,并附上由此产生的权衡。该决策约束此后代码的写法。

ADR 不是已完成工作的变更日志,也不是未来工作的待办清单。

1. 结构

每份 ADR 依主题不同,包含以下各节(可酌情调整):

  • Context(背景)——促使决策的情境(当前存在什么、要解决什么问题)。此处可出现当前状态以框定决策,但不是工作流水账。
  • Decision(决策)——所作的选择,表述为一条长期有效的规则。
  • Considered(备选方案)——被否决的方案,以及原因。
  • Consequences(后果)——该决策的结构性影响(使什么更易、更难或成为必需),正反两面。

2. 纪律

  • Consequences 是影响,而非工作日志。「现在 N 个二进制编译同一份测试体」是后果;「我们写了 44 个测试」是变更日志条目——后者不应出现在 ADR 中。已完成的度量和 bug 修复归入追踪产物。
  • 不设 Follow-up / TODO 节。 未来工作归入 issue 追踪器或相关追踪文件,而非 ADR。
  • 每个 ADR 一个决策。 本身即构成决策的变更(例如改变公开 API 行为)应单立一份 ADR;不要折进不相关 ADR 的 Consequences。
  • 代码风格规则(格式、命名)归入 CONTRIBUTING 等其他位置,不归此处——ADR 位于风格之上。

3. 范围

为重大且难以撤销的设计选择撰写 ADR:新的测试工作流、追踪模型、类别体系、全生态机制。不要为日常实现撰写 ADR。