决策日志
在 Vibe Coding 中,决策留痕是防止 AI 在后续会话中做出矛盾决策的关键。决策日志记录"为什么",不只是"做了什么"。
为什么需要决策日志?
你在一个会话中做了架构决策——比如"选择 SQLite 而非 PostgreSQL"。下一个会话的 AI 不知道这个决策,可能建议用 PostgreSQL。你不得不反复纠正 AI,浪费时间和 token。
决策日志解决了这个问题——它是跨会话的"记忆锚点":
| 没有决策日志 | 有决策日志 |
|---|---|
| 每个新会话 AI 不知道之前的决策 | 新会话读取 decision-log.md 即可恢复上下文 |
| 你反复纠正 AI 的矛盾建议 | AI 主动遵守已记录的决策 |
| 修改旧决策时不知道当初为什么做这个选择 | 记录了 Why,可以判断是否需要改变 |
| 团队成员不知道你的架构思路 | 共享的 decision-log 让所有人理解决策背景 |
与 CLAUDE.md 的区别
| CLAUDE.md | decision-log.md | |
|---|---|---|
| 内容 | 项目约定和规则 | 决策过程和理由 |
| 格式 | 简短的规则列表 | 带 Why 的决策记录 |
| 何时写 | 项目开始或约定变化时 | 每次做重要选择时 |
| 谁来写 | 你或让 AI 跟你确认后写 | 你描述选择,AI 帮你格式化记录 |
| 加载方式 | 每次会话自动加载 | 需要主动让 AI 读取 |
最佳组合: CLAUDE.md 写"项目约定"(规则),decision-log.md 写"为什么这样约定"(理由)。AI 读 CLAUDE.md 知道规则,读 decision-log.md 知道理由。
记录格式
每条决策记录遵循统一格式:
markdown
## DEC-[编号]:[决策标题]
**选择:** [做了什么选择]
**Why:** [为什么做这个选择——最重要的部分]
**How to apply:** [在什么场景下应用]
**被否决的方案:** [考虑过但没选的方案] — 原因:[为什么不选]
**日期:** [记录日期]
**状态:** [已采纳 / 已修改 / 已废弃]Why 是关键
Why 是决策日志最重要的部分。只有知道"为什么",才能判断:
- 这个决策在当前情况下是否仍然有效?
- 如果环境变了,是否需要修改决策?
- AI 在后续操作中是否能理解这个约束的精神而非机械执行?
差的 Why: "选择了 SQLite" — 只记录了事实 好的 Why: "选择了 SQLite 因为本项目是单用户本地部署工具,不需要数据库服务器的运维成本。如果未来需要多用户并发访问,应考虑迁移到 PostgreSQL" — 记录了理由、适用场景和变更触发条件
让 AI 记录决策
在做完重要决策后,让 Claude 记录:
在 decision-log.md 中记录以下决策:
选择:[你的选择]
Why:[你给出的理由]
被否决的方案:[你考虑过但没选的方案]
使用项目决策日志格式。如果 decision-log.md 不存在,先创建。或者更简单:
记录决策:我选择用 SQLite 而不是 PostgreSQL,因为这是单用户本地工具,不需要数据库服务器的运维成本。如果未来需要多用户并发,可以迁移到 PostgreSQL。Claude 会自动格式化为标准决策日志格式。
定期回顾
决策日志不是写完就忘了——需要定期回顾:
| 回顾频率 | 做什么 |
|---|---|
| 每周 | 扫一眼近期决策,确认没有矛盾 |
| 重大变更前 | 读取 decision-log.md,确认变更不违背已有决策 |
| 新项目成员加入时 | 让新成员读 decision-log.md 理解项目历史 |
让 Claude 辅助回顾:
读取 decision-log.md,检查是否有以下问题:
1. 状态为"已采纳"但可能已过时的决策
2. 互相矛盾的决策
3. 之前否决的方案现在可能需要重新考虑的
列出需要讨论的决策。可复用模板
decision-log.md 初始模板
markdown
# 决策日志
本文件记录项目中的重要架构和技术决策。每个决策包含选择、理由和被否决的方案。
## DEC-001:[首个决策标题]
**选择:** [选择]
**Why:** [理由]
**How to apply:** [适用场景]
**被否决的方案:** [否决方案] — 原因:[否决原因]
**日期:** [日期]
**状态:** 已采纳让 AI 记录决策的 prompt
在 decision-log.md 中追加以下决策记录。
选择:[你的选择]
Why:[你的理由]
使用格式:
## DEC-[自动编号]:[标题]
**选择:** ...
**Why:** ...
**How to apply:** ...
**被否决的方案:** ...
**日期:** [今天日期]
**状态:** 已采纳
如果 decision-log.md 不存在,先创建含初始模板的文件。与其他工具的关系
| 工具 | 内容 | 何时使用 |
|---|---|---|
| CLAUDE.md | 项目约定(规则) | 项目开始时 + 约定变化时 |
| decision-log.md | 决策理由(Why) | 每次做重要选择时 |
| MEMORY.md | AI 学到的偏好(自动) | 自动维护 |
| spec.md | 项目需求(做什么) | 项目开始时 |
| plan.md | 实施方案(怎么做) | spec 写完后 |
最佳实践: CLAUDE.md 写规则,decision-log.md 写 Why。AI 自动维护 MEMORY.md。三个文件覆盖"规则→理由→偏好"三层记忆。
下一步
- 高级技巧 — 多 agent 协作、TDD 融合、大仓库策略