架构决策记录的命令行工具——
让重要的技术决策,像代码一样被版本管理。
经典之作 · 源自 Michael Nygard 2011 年 ADR 文章 · ADR 实践的奠基工具
← 返回汇总给技术决策建一本账。
轻量 CLI,把架构决策记录成 Markdown,随项目版本管理。
一份短文本,记录一个决策的来龙去脉。
ADR (Architecture Decision Record) 由 Michael Nygard 在 2011 年提出。它不是冗长文档,而是与代码同生命周期的短记录,纳入版本管理,随项目演进。
面临什么问题,约束是什么。
选了什么方案,考虑过哪些备选。
带来什么影响,后续要注意什么。
doc/adr/0009-use-rust-for-performance.md
# 1. 初始化 ADR 目录(自建首条记录) adr init doc/architecture/decisions # 2. 新建一条决策,自动编号 + 打开编辑器 adr new "Implement as Unix shell scripts" # 3. 新决策取代旧决策(如取代 ADR 9) adr new -s 9 "Use Rust for performance-critical functionality" # ↑ 自动更新 ADR 9 状态为 Superseded,并互链 # 4. 查看帮助 adr help
生成的 Markdown 存于 doc/adr/,编号自增,支持决策间引用关系。
纯 Bash,任何 Unix 系统开箱即用,无需 runtime。
Markdown 输出,git 友好,diff 清晰,可全文检索。
ADR 存项目仓库内,决策与代码同步演进。
支持 supersede / link,决策演化链清晰。
每条 ADR 有明确状态。新决策取代旧决策时,工具自动更新双方状态并建立链接,形成决策演化图谱。
作为奠基项目,它启发了大量多语言移植与增强工具。
| 项目 | 语言 | 特点 |
|---|---|---|
| adr-tools(本作) | 原始经典 | |
| log4brains | 带 Web 预览,跨平台 | |
| adr-viewer | 可视化浏览 ADR | |
| adr-j | JVM 生态移植 |
架构决策记录领域的奠基之作,价值稳定但不追求增长。它更像一种工程文化载体——工具可以换代(已有更现代的替代品),但 ADR 作为一种实践会长期存在。对个人,掌握 ADR 思维比用哪个工具更重要;对团队,引入 ADR 文化是提升决策质量的高杠杆动作。