架构决策记录(ADR)

August 17, 2026 · View on GitHub

记录项目中有替代方案、被有意识做出的技术决策:当时的上下文、选了什么、放弃了什么、代价是什么。

规则

  • 不可变:ADR 记录决策时点的判断,合并后不再修改实质内容(错别字除外)。推翻决策时新增一条 ADR,并把旧条状态改为 Superseded by NNNN——这是唯一允许的回改。
  • 编号:四位递增(00010002…),文件名 NNNN-短横线小写标题.md
  • 状态Proposed(讨论中)→ Accepted(已采纳)→ Superseded by NNNN / Deprecated
  • 粒度:一条 ADR 一个决策。实现细节不进 ADR,进 design
  • 流程:改变既有决策的 PR 必须先包含对应 ADR;新决策可与实现同 PR。

模板

template.md

索引

编号标题状态
0001使用 GitHub Device Flow 而非 OAuth 回调Accepted
0002用确定性 git 检查而非 AI 判断驱动 PR 状态条Accepted
0003读写操作由单一 provider 拥有Accepted
0004PR 创建幂等化Accepted
0005diff 预算由 consumer 持有、seam 统一执行Accepted
0006直接使用 fetch 调 REST,不引入 octokitAccepted
0007dsh-ui-github 通过注入端口对接客户端外壳Accepted
0008连接入口落在插件配置卡片,端口按 dsh 真实 slot API 绑定Accepted
0009UI 状态更新用轮询与 credentials 事件,不依赖自定义宿主事件转发Accepted
0010flow-state 与 PR 操作以会话工作区为锚点,不再用进程 cwdAccepted
0011状态条 [创建 PR] 直接派发 agent 会话创建,不再弹预填面板Accepted
0012把 PR 审查闭环纳入范围,取代 v1 的"不做 review"约定Accepted
0013结构化审查由 github_pr_review 工具编排证据,判断仍归模型Accepted
0014review 裁决(approve / request changes)默认关闭,仅评论默认可用Accepted
0015CI 失败细节以 check-run annotations 为主、日志尾部为辅Accepted
0016dsh 配置通过 GitHub 私有仓库同步,走 git 协议而非 contents APIAccepted
0017session 同步:只读下行完整交付,写入止于 fork 续聊Accepted