架构决策记录(ADR)
August 17, 2026 · View on GitHub
记录项目中有替代方案、被有意识做出的技术决策:当时的上下文、选了什么、放弃了什么、代价是什么。
规则
- 不可变:ADR 记录决策时点的判断,合并后不再修改实质内容(错别字除外)。推翻决策时新增一条 ADR,并把旧条状态改为
Superseded by NNNN——这是唯一允许的回改。 - 编号:四位递增(
0001、0002…),文件名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 |
| 0004 | PR 创建幂等化 | Accepted |
| 0005 | diff 预算由 consumer 持有、seam 统一执行 | Accepted |
| 0006 | 直接使用 fetch 调 REST,不引入 octokit | Accepted |
| 0007 | dsh-ui-github 通过注入端口对接客户端外壳 | Accepted |
| 0008 | 连接入口落在插件配置卡片,端口按 dsh 真实 slot API 绑定 | Accepted |
| 0009 | UI 状态更新用轮询与 credentials 事件,不依赖自定义宿主事件转发 | Accepted |
| 0010 | flow-state 与 PR 操作以会话工作区为锚点,不再用进程 cwd | Accepted |
| 0011 | 状态条 [创建 PR] 直接派发 agent 会话创建,不再弹预填面板 | Accepted |
| 0012 | 把 PR 审查闭环纳入范围,取代 v1 的"不做 review"约定 | Accepted |
| 0013 | 结构化审查由 github_pr_review 工具编排证据,判断仍归模型 | Accepted |
| 0014 | review 裁决(approve / request changes)默认关闭,仅评论默认可用 | Accepted |
| 0015 | CI 失败细节以 check-run annotations 为主、日志尾部为辅 | Accepted |
| 0016 | dsh 配置通过 GitHub 私有仓库同步,走 git 协议而非 contents API | Accepted |
| 0017 | session 同步:只读下行完整交付,写入止于 fork 续聊 | Accepted |