dev-playbooks-cn 4.0.0 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +139 -98
- package/bin/devbooks.mjs +1 -1
- package/docs/AI/350/275/257/344/273/266/345/267/245/347/250/213/345/274/200/345/217/221/346/241/206/346/236/266/350/256/276/350/256/241.md +2251 -0
- package/package.json +1 -1
- package/docs/ai-native-workflow.md +0 -69
- /package/docs/{gate-validation-cases.md → /351/227/270/351/227/250/351/252/214/350/257/201/347/224/250/344/276/213/347/237/251/351/230/265.md"} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@
|
|
|
4
4
|
|
|
5
5
|
格式参考 [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),并遵循 [语义化版本](https://semver.org/spec/v2.0.0.html)。
|
|
6
6
|
|
|
7
|
+
## [4.0.1] - 2026-02-03
|
|
8
|
+
|
|
9
|
+
### 变更
|
|
10
|
+
|
|
11
|
+
- **文档结构调整**:将 `AI软件工程开发框架设计.md` 移至 `docs/`(作为用户侧可见文档)
|
|
12
|
+
- **入口提示修正**:CLI 帮助信息中的入口文档对齐为 `docs/使用指南.md`
|
|
13
|
+
|
|
14
|
+
### 修复
|
|
15
|
+
|
|
16
|
+
- **README 链接修复**:`设计原理` 链接对齐到 `docs/AI软件工程开发框架设计.md`
|
|
17
|
+
- **清理已删除文档的 Git 跟踪**:移除已删除的旧文档条目,避免仓库与发布包范围不一致
|
|
18
|
+
|
|
7
19
|
## [4.0.0] - 2026-02-03
|
|
8
20
|
|
|
9
21
|
### 新增
|
package/README.md
CHANGED
|
@@ -3,83 +3,149 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/dev-playbooks-cn)
|
|
4
4
|
[](LICENSE)
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
**让 AI 写代码从"说完成就完成"变成"有证据才算完成"。**
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
- **7 道闸门(G0-G6)**:从输入就绪到归档裁决,全链路可裁判检查点,任何一道失败都会阻断
|
|
10
|
-
- **上游 SSOT 支持**:自动索引项目已有的需求文档,提取可裁判约束;没有需求文档时自动创建最小 SSOT 包
|
|
11
|
-
- **Knife 切片协议**:大需求强制切片,每片有复杂度预算,超预算必须再切
|
|
12
|
-
- **Void 研究协议**:高熵问题先研究再决策,产出可追溯的决策记录(ADR)
|
|
13
|
-
- **证据新鲜度校验**:证据文件必须比被覆盖的交付物更新,防止用旧证据糊弄
|
|
14
|
-
- **弱连接义务**:文档、配置、发布说明等"代码外契约"也被编译为可裁判义务
|
|
8
|
+
DevBooks 是一套面向 AI 的工程协议,通过上游真理源(SSOT)、可执行闸门、证据闭环,把 AI 编程从"对话式猜测"升级为"可审计的工程交付"。
|
|
15
9
|
|
|
16
10
|
---
|
|
17
11
|
|
|
18
|
-
##
|
|
12
|
+
## 核心理念
|
|
19
13
|
|
|
20
|
-
|
|
21
|
-
AI 说"已修复",你问它确定吗,它说"确定"。上线后炸了。回头看,它写的测试恰好能通过它自己的 Bug。
|
|
14
|
+
软件工程的本质是**在不可靠的组件之上构建可靠的系统**。传统工程用 RAID 对抗不可靠的硬盘,用 TCP 重传对抗不可靠的网络,用 Code Review 对抗不可靠的人类程序员。AI 工程同样需要用**闸门与证据闭环**约束不可靠的 LLM 输出。
|
|
22
15
|
|
|
23
|
-
|
|
24
|
-
对话开头你说"不要改 X 模块",三十轮对话后它把 X 模块改了。你提醒它,它道歉,然后下一轮又改了。
|
|
16
|
+
DevBooks 不是提示词优化,而是工程约束。
|
|
25
17
|
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 上游真理源(SSOT):全开发周期的单一权威
|
|
28
21
|
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
DevBooks 的核心是**上游真理源(Single Source of Truth)**——所有关键知识落盘并版本化,跨对话、跨变更稳定。
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
你的需求文档(如果有)
|
|
26
|
+
↓ 提取约束,建立索引
|
|
27
|
+
specs/(术语、边界、决策、场景)← 跨变更稳定的"项目记忆"
|
|
28
|
+
↓ 派生变更包
|
|
29
|
+
changes/<id>/(提案、设计、任务、证据)
|
|
30
|
+
↓ 归档回写
|
|
31
|
+
specs/(更新真理)
|
|
32
|
+
```
|
|
31
33
|
|
|
32
|
-
**
|
|
33
|
-
上次对话里建立的约定,这次对话全忘了。项目的术语、边界、约束,每次都要重新解释。
|
|
34
|
+
**SSOT 解决的问题:**
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
| 问题 | 根因 | SSOT 如何解决 |
|
|
37
|
+
|-----|------|--------------|
|
|
38
|
+
| 每次都要从头教 | 对话是临时的,知识没有持久化 | 术语、边界、约束写在文件里,不依赖对话记忆 |
|
|
39
|
+
| 改着改着就忘了之前说的 | 上下文窗口有限,早期信息被挤出去 | 真理工件持久化,强制注入关键约束 |
|
|
40
|
+
| 不知道改了什么 | 没有可审计的变更记录 | 每次变更有完整记录——提案、设计、任务、证据 |
|
|
37
41
|
|
|
38
42
|
---
|
|
39
43
|
|
|
40
|
-
##
|
|
44
|
+
## 账本与索引:持续追踪完成情况
|
|
41
45
|
|
|
42
|
-
|
|
46
|
+
DevBooks 通过**完成合同(Completion Contract)**和**需求索引(Requirements Index)**持续追踪交付状态。
|
|
43
47
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
### 完成合同:把"我要什么"编译成机器可检查的清单
|
|
49
|
+
|
|
50
|
+
```yaml
|
|
51
|
+
obligations:
|
|
52
|
+
- id: O-001
|
|
53
|
+
describes: "用户可以通过邮箱登录"
|
|
54
|
+
severity: must
|
|
55
|
+
checks:
|
|
56
|
+
- id: C-001
|
|
57
|
+
type: test
|
|
58
|
+
covers: [O-001]
|
|
59
|
+
artifacts: ["evidence/gates/login-test.log"]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
不是"大概做完了",而是"这 5 条义务都有证据"。
|
|
63
|
+
|
|
64
|
+
### 需求索引:把上游文档变成可追溯的义务清单
|
|
65
|
+
|
|
66
|
+
```yaml
|
|
67
|
+
set_id: ARCH-P3
|
|
68
|
+
source_ref: "truth://specs/architecture/design.md"
|
|
69
|
+
requirements:
|
|
70
|
+
- id: R-001
|
|
71
|
+
severity: must
|
|
72
|
+
statement: "所有 API 必须支持版本化"
|
|
73
|
+
- id: R-002
|
|
74
|
+
severity: should
|
|
75
|
+
statement: "响应时间 < 200ms"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
当变更包宣称"已完成上游任务"时,系统可以裁判这个宣称——不是口头确认,而是机器校验。
|
|
52
79
|
|
|
53
80
|
---
|
|
54
81
|
|
|
55
|
-
##
|
|
82
|
+
## Knife 切片协议:把大需求变成可执行队列
|
|
83
|
+
|
|
84
|
+
大需求直接交给 AI 会怎样?改了 A 忘了 B,修了 B 又破坏了 C。
|
|
85
|
+
|
|
86
|
+
Knife 协议通过**复杂度预算**和**拓扑排序**,把 Epic 切成可独立验证的原子变更包队列。
|
|
87
|
+
|
|
88
|
+
### 切片算法
|
|
56
89
|
|
|
57
|
-
```bash
|
|
58
|
-
npm install -g dev-playbooks-cn
|
|
59
|
-
dev-playbooks-cn init
|
|
60
|
-
dev-playbooks-cn delivery
|
|
61
90
|
```
|
|
91
|
+
Score = w₁·Files + w₂·Modules + w₃·RiskFlags + w₄·HotspotWeight
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
| 信号 | 权重 | 说明 |
|
|
95
|
+
|-----|------|-----|
|
|
96
|
+
| files_touched | 1.0 | 每个文件计 1 分 |
|
|
97
|
+
| modules_touched | 5.0 | 跨模块风险高 |
|
|
98
|
+
| risk_flags | 10.0 | 每个风险旗标计 10 分 |
|
|
99
|
+
| hotspot_weight | 2.0 | 高 churn 区域加权 |
|
|
62
100
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
101
|
+
**超预算必须再切**——禁止"硬做"。
|
|
102
|
+
|
|
103
|
+
### 切片不变量
|
|
104
|
+
|
|
105
|
+
1. **MECE 覆盖**:所有切片的验收点并集等于 Epic 的完整验收点集合,且不重叠
|
|
106
|
+
2. **可独立 Green**:每个切片至少一个确定性验证锚点,不允许"中间态不可编译"
|
|
107
|
+
3. **拓扑可排序**:依赖图必须无环,执行顺序必须为拓扑序
|
|
108
|
+
4. **预算熔断**:超预算必须递归切分,或回流补信息
|
|
71
109
|
|
|
72
110
|
---
|
|
73
111
|
|
|
74
|
-
##
|
|
112
|
+
## 7 道闸门:全链路可裁判检查点
|
|
113
|
+
|
|
114
|
+
| 闸门 | 检查什么 | 失败后果 |
|
|
115
|
+
|-----|---------|---------|
|
|
116
|
+
| G0 | 输入就绪了吗?基线工件齐全吗? | 回流到 Bootstrap |
|
|
117
|
+
| G1 | 该有的文件都有吗?结构正确吗? | 阻断 |
|
|
118
|
+
| G2 | 任务都完成了吗?绿证据存在吗? | 阻断 |
|
|
119
|
+
| G3 | 切片正确吗?锚点齐全吗?(大需求) | 回流到 Knife |
|
|
120
|
+
| G4 | 文档同步了吗?扩展包完整吗? | 阻断 |
|
|
121
|
+
| G5 | 风险覆盖了吗?回滚策略有吗?(高风险) | 阻断 |
|
|
122
|
+
| G6 | 证据完整吗?合同满足吗?可以归档吗? | 阻断 |
|
|
123
|
+
|
|
124
|
+
任何一道失败,流程阻断。不是警告,是阻断。
|
|
125
|
+
|
|
126
|
+
---
|
|
75
127
|
|
|
76
|
-
|
|
128
|
+
## 角色隔离:防止 AI 自己验证自己
|
|
129
|
+
|
|
130
|
+
| 角色 | 职责 | 硬约束 |
|
|
131
|
+
|-----|------|-------|
|
|
132
|
+
| Test Owner | 从设计推导验收测试 | 禁止看实现代码 |
|
|
133
|
+
| Coder | 按任务实现功能 | 禁止修改 tests/ |
|
|
134
|
+
| Reviewer | 审查可读性与一致性 | 不改测试不改设计 |
|
|
135
|
+
|
|
136
|
+
Test Owner 和 Coder 必须在**不同上下文**执行——不是"不同人",而是"不同对话/不同实例"。两者之间只能通过**落盘工件**交接。
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 快速开始
|
|
77
141
|
|
|
78
142
|
```bash
|
|
143
|
+
npm install -g dev-playbooks-cn
|
|
144
|
+
dev-playbooks-cn init
|
|
79
145
|
dev-playbooks-cn delivery
|
|
80
146
|
```
|
|
81
147
|
|
|
82
|
-
|
|
148
|
+
你只需要记住一个命令:`delivery`。系统会问你几个问题,然后生成一份 `RUNBOOK.md`——这是你这次任务的操作手册。照着做就行。
|
|
83
149
|
|
|
84
150
|
```
|
|
85
151
|
你的需求
|
|
@@ -99,70 +165,45 @@ Delivery(判断类型、生成 RUNBOOK)
|
|
|
99
165
|
|
|
100
166
|
---
|
|
101
167
|
|
|
102
|
-
## 核心机制
|
|
103
|
-
|
|
104
|
-
**真理源(SSOT)**
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
你的需求文档(如果有)
|
|
108
|
-
↓ 提取约束
|
|
109
|
-
specs/(术语、边界、决策)← 跨变更稳定的"项目记忆"
|
|
110
|
-
↓
|
|
111
|
-
changes/<id>/(本次变更的提案、设计、任务、证据)
|
|
112
|
-
↓ 归档
|
|
113
|
-
specs/(更新真理)
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
如果你没有需求文档,DevBooks 会帮你创建一个最小的。这反而是好事——逼你把模糊的想法写清楚。
|
|
117
|
-
|
|
118
|
-
**完成合同**
|
|
119
|
-
|
|
120
|
-
把"我要什么"编译成机器可检查的清单:
|
|
121
|
-
- 5 条义务
|
|
122
|
-
- 每条有对应的检查项
|
|
123
|
-
- 每条有对应的证据文件
|
|
124
|
-
|
|
125
|
-
不是"大概做完了",而是"这 5 条都有证据"。
|
|
126
|
-
|
|
127
|
-
**7 道闸门(G0-G6)**
|
|
128
|
-
|
|
129
|
-
| 闸门 | 检查什么 |
|
|
130
|
-
|-----|---------|
|
|
131
|
-
| G0 | 输入就绪了吗?需求清楚吗? |
|
|
132
|
-
| G1 | 该有的文件都有吗? |
|
|
133
|
-
| G2 | 任务都完成了吗? |
|
|
134
|
-
| G3 | 切片正确吗?(大需求) |
|
|
135
|
-
| G4 | 文档同步了吗? |
|
|
136
|
-
| G5 | 风险覆盖了吗?(高风险变更) |
|
|
137
|
-
| G6 | 证据完整吗?可以归档吗? |
|
|
138
|
-
|
|
139
|
-
任何一道失败,流程阻断。不是警告,是阻断。
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
168
|
## 目录结构
|
|
144
169
|
|
|
145
170
|
```
|
|
146
171
|
project/
|
|
147
|
-
├── .devbooks/config.yaml
|
|
172
|
+
├── .devbooks/config.yaml # 配置入口
|
|
148
173
|
└── dev-playbooks/
|
|
149
|
-
├── constitution.md
|
|
150
|
-
├── specs/
|
|
151
|
-
|
|
174
|
+
├── constitution.md # 硬约束(不可绕过的规则)
|
|
175
|
+
├── specs/ # 真理源(SSOT)
|
|
176
|
+
│ ├── _meta/
|
|
177
|
+
│ │ ├── glossary.md # 统一语言
|
|
178
|
+
│ │ ├── boundaries.md # 模块边界
|
|
179
|
+
│ │ ├── capabilities.yaml # 能力注册表
|
|
180
|
+
│ │ └── epics/ # Knife 切片计划
|
|
181
|
+
│ └── ...
|
|
182
|
+
└── changes/ # 变更包
|
|
152
183
|
└── <change-id>/
|
|
153
|
-
├── proposal.md
|
|
154
|
-
├── design.md
|
|
155
|
-
├── tasks.md
|
|
156
|
-
├──
|
|
157
|
-
|
|
184
|
+
├── proposal.md # 为什么做、做什么
|
|
185
|
+
├── design.md # 怎么做、验收标准
|
|
186
|
+
├── tasks.md # 拆成可执行的步骤
|
|
187
|
+
├── completion.contract.yaml # 完成合同
|
|
188
|
+
├── verification.md # 怎么证明做对了
|
|
189
|
+
└── evidence/ # 测试日志、构建输出
|
|
158
190
|
```
|
|
159
191
|
|
|
160
192
|
---
|
|
161
193
|
|
|
194
|
+
## 适用场景
|
|
195
|
+
|
|
196
|
+
- **存量项目接入**:自动索引现有文档,提取可裁判约束,建立最小 SSOT 包
|
|
197
|
+
- **新项目启动**:引导补齐术语、边界、场景、决策,建立基线
|
|
198
|
+
- **日常变更**:最小充分闭环,可复现验证锚点 + 证据归档
|
|
199
|
+
- **大型重构**:Knife 切片 + 迁移范式(Expand-Contract / Strangler Fig / Branch by Abstraction)
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
162
203
|
## 下一步
|
|
163
204
|
|
|
164
205
|
- [快速开始](docs/使用指南.md)
|
|
165
|
-
- [设计原理](
|
|
206
|
+
- [设计原理](docs/AI软件工程开发框架设计.md)
|
|
166
207
|
- [Skill 详解](docs/Skill详解.md)
|
|
167
208
|
|
|
168
209
|
---
|
package/bin/devbooks.mjs
CHANGED
|
@@ -35,7 +35,7 @@ const __filename = fileURLToPath(import.meta.url);
|
|
|
35
35
|
const __dirname = path.dirname(__filename);
|
|
36
36
|
|
|
37
37
|
const CLI_COMMAND = 'dev-playbooks-cn';
|
|
38
|
-
const ENTRY_DOC = 'docs
|
|
38
|
+
const ENTRY_DOC = 'docs/使用指南.md';
|
|
39
39
|
const ENTRY_TEMPLATES = {
|
|
40
40
|
delivery: 'templates/claude-commands/devbooks/delivery.md',
|
|
41
41
|
index: 'templates/claude-commands/devbooks/index.md'
|