@dtt_siye/atool 1.3.0 → 1.4.0
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/VERSION +1 -1
- package/hooks/doc-sync-reminder +4 -4
- package/hooks/hooks-cursor.json +20 -0
- package/hooks/hooks.json +21 -1
- package/hooks/pre-commit +191 -0
- package/hooks/prompt-guard +84 -35
- package/hooks/session-start +34 -12
- package/hooks/task-state-tracker +145 -0
- package/lib/common.sh +36 -23
- package/lib/compute-importance.sh +73 -0
- package/lib/install-cursor.sh +2 -2
- package/lib/install-hooks.sh +64 -0
- package/lib/install-skills.sh +19 -0
- package/lib/knowledge-graph.sh +483 -81
- package/lib/pre-scan.sh +81 -6
- package/package.json +1 -1
- package/skills/agent-audit/SKILL.md +180 -0
- package/skills/architecture-guard/SKILL.md +164 -0
- package/skills/architecture-guard/rules/violation-detection.md +90 -0
- package/skills/ci-feedback/SKILL.md +165 -0
- package/skills/project-analyze/SKILL.md +131 -23
- package/skills/project-analyze/phases/phase1-setup.md +15 -1
- package/skills/project-analyze/phases/phase2-understand.md +17 -2
- package/skills/project-analyze/phases/phase2.5-refine.md +293 -0
- package/skills/project-analyze/phases/phase3-graph.md +7 -1
- package/skills/project-analyze/phases/phase4-synthesize.md +117 -120
- package/skills/project-analyze/phases/phase5-export.md +117 -33
- package/skills/project-analyze/prompts/understand-agent.md +17 -0
- package/skills/project-analyze/rules/android.md +61 -260
- package/skills/project-analyze/rules/devops.md +61 -421
- package/skills/project-analyze/rules/generic.md +53 -221
- package/skills/project-analyze/rules/go.md +60 -275
- package/skills/project-analyze/rules/harmony.md +64 -237
- package/skills/project-analyze/rules/java.md +47 -485
- package/skills/project-analyze/rules/mobile-flutter.md +57 -292
- package/skills/project-analyze/rules/mobile-react-native.md +65 -262
- package/skills/project-analyze/rules/mobile-swift.md +58 -303
- package/skills/project-analyze/rules/python.md +50 -296
- package/skills/project-analyze/rules/rust-tauri.md +51 -217
- package/skills/project-analyze/rules/rust.md +50 -274
- package/skills/project-analyze/rules/web-nextjs.md +61 -335
- package/skills/project-analyze/rules/web-react.md +50 -272
- package/skills/project-analyze/rules/web-vue.md +58 -352
- package/skills/project-analyze/rules/web.md +55 -347
- package/skills/project-query/SKILL.md +681 -120
- package/skills/requirements-writer/SKILL.md +48 -1
- package/skills/software-architecture/SKILL.md +73 -3
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
# Phase 2.5: REFINE(精炼链 — AI sub-agents ≤5 并行)
|
|
2
|
+
|
|
3
|
+
**目标**:对 Phase 2 生成的模块初稿,串联 requirements-writer 和 software-architecture 的 Refine Mode 进行精炼,将初稿升级为专业级交付文档。
|
|
4
|
+
|
|
5
|
+
**并发上限**:最多 5 个模块同时精炼。每个模块内部串行(PRD 精炼 → 架构精炼)。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 前置检查
|
|
10
|
+
|
|
11
|
+
1. `analysis-state.json` 中 `phases.phase2_understand == "completed"`
|
|
12
|
+
2. 读取 `stack` 用于 conventions 加载
|
|
13
|
+
3. 如果 `phases.phase2_5_refine == "completed"` 且非 `--force`,跳过本 Phase
|
|
14
|
+
4. 如果 `--skip-refine`,跳过本 Phase
|
|
15
|
+
|
|
16
|
+
## 输入数据
|
|
17
|
+
|
|
18
|
+
| 来源 | 文件 |
|
|
19
|
+
|------|------|
|
|
20
|
+
| Phase 2 模块文档 | `atool-analysis/modules/*/README.md`, `api.md`, `data-model.md`, `dev-guide.md`, `prd.md`, `test-cases.md` |
|
|
21
|
+
| Phase 2 结构化数据 | `.atool-docs/modules/*/data.json` |
|
|
22
|
+
| Conventions | `~/.claude/skills/{stack}-conventions/SKILL.md`(仅 Architecture + API Design 节) |
|
|
23
|
+
|
|
24
|
+
## 执行流程
|
|
25
|
+
|
|
26
|
+
### 2.5.1 加载 Conventions 上下文
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# 从 state.json 读取技术栈
|
|
30
|
+
STACK=$(jq -r '.stack // "generic"' .atool-docs/analysis-state.json)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
从对应 conventions SKILL.md 中提取以下章节内容(不加载全文,控制在 ~200 行):
|
|
34
|
+
- `## Architecture` 或 `## 架构` 章节
|
|
35
|
+
- `## API Design` 或 `## API 设计` 章节
|
|
36
|
+
|
|
37
|
+
存为 `{conventions_context}` 变量。如果对应 conventions skill 不存在,`{conventions_context}` 为空字符串。
|
|
38
|
+
|
|
39
|
+
### 2.5.2 构建模块精炼队列
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# 读取模块列表,按重要性降序排列
|
|
43
|
+
MODULES=$(jq -r '.modules | sort_by(-.importance) | .[].name' .atool-docs/pre-scan/manifest.json)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**断点续传检查**:对每个模块读取 `refine_status.{module}`:
|
|
47
|
+
|
|
48
|
+
| 状态 | 行为 |
|
|
49
|
+
|------|------|
|
|
50
|
+
| `arch_refine == "completed"` | 跳过该模块 |
|
|
51
|
+
| `prd_refine == "completed"` 且 `arch_refine != "completed"` | 加入队列,从架构精炼开始 |
|
|
52
|
+
| `prd_refine != "completed"` | 加入队列,从 PRD 精炼开始 |
|
|
53
|
+
| `degraded == true` | 跳过(除非 `--force`) |
|
|
54
|
+
|
|
55
|
+
### 2.5.3 Gate 1: 初稿完整性检查(Hard Gate)
|
|
56
|
+
|
|
57
|
+
**对每个待精炼模块执行**:
|
|
58
|
+
|
|
59
|
+
检查项:
|
|
60
|
+
- `atool-analysis/modules/{name}/prd.md` 存在且 ≥ 30 行
|
|
61
|
+
- `atool-analysis/modules/{name}/README.md` 存在
|
|
62
|
+
- `.atool-docs/modules/{name}/data.json` 存在且是合法 JSON
|
|
63
|
+
|
|
64
|
+
**失败处理**:该模块不进入精炼队列,记录 `refine_status.{name}.gate1 = "failed"`,打印警告,其他模块继续。
|
|
65
|
+
|
|
66
|
+
### 2.5.4 批量派发精炼 Sub-Agents
|
|
67
|
+
|
|
68
|
+
**每批最多 5 个模块并行**,每个模块的精炼链为串行两步。等待当前批次全部完成后再派发下一批。
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
#### Step A: requirements-writer Refine(PRD 精炼)
|
|
73
|
+
|
|
74
|
+
为每个模块派发 sub-agent,prompt 模板:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
你是 requirements-writer 的精炼模式(Refine Mode)。
|
|
78
|
+
|
|
79
|
+
## 任务
|
|
80
|
+
将以下模块的 PRD 初稿精炼为标准 8 节结构。
|
|
81
|
+
|
|
82
|
+
## 模块信息
|
|
83
|
+
- 模块名:{module_name}
|
|
84
|
+
- 模块路径:{module_path}
|
|
85
|
+
- 技术栈:{detected_stack}
|
|
86
|
+
|
|
87
|
+
## 输入文件(必须全部读取)
|
|
88
|
+
- atool-analysis/modules/{module_name}/prd.md — Phase 2 初稿
|
|
89
|
+
- atool-analysis/modules/{module_name}/api.md — 接口定义
|
|
90
|
+
- atool-analysis/modules/{module_name}/data-model.md — 数据模型(可能不存在,跳过)
|
|
91
|
+
- .atool-docs/modules/{module_name}/data.json — 结构化数据
|
|
92
|
+
|
|
93
|
+
## 编码规范约束
|
|
94
|
+
{conventions_context}
|
|
95
|
+
|
|
96
|
+
## 精炼规则
|
|
97
|
+
**必须读取并遵循**:`~/.claude/skills/requirements-writer/SKILL.md` 中的 **Refine Mode(精炼模式)** 章节。该章节定义了标准的 PRD 精炼流程和输出格式。按照其中的精炼规则逐条执行。
|
|
98
|
+
|
|
99
|
+
补充说明(与 Refine Mode 保持一致):
|
|
100
|
+
- 保留初稿 §1-§3 和原 §4 非目标(移至 §6)
|
|
101
|
+
- 补全 §4 数据需求、§5 跨模块依赖、§7 风险与假设、§8 需求追溯矩阵
|
|
102
|
+
- 增强 §2 加 FR-{MOD}-NNN 编号 + Given-When-Then AC + UI 交互表;§3 加 NFR-{MOD}-NNN 编号,标注 [待系统级确认]
|
|
103
|
+
- 输出必须包含完整 8 节结构
|
|
104
|
+
|
|
105
|
+
## 输出
|
|
106
|
+
原地覆盖 atool-analysis/modules/{module_name}/prd.md
|
|
107
|
+
|
|
108
|
+
## 禁止行为
|
|
109
|
+
- 不做交互式问答
|
|
110
|
+
- 不修改 README.md / api.md / data-model.md / dev-guide.md / test-cases.md
|
|
111
|
+
- 不创建新文件
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
完成后立即写入 checkpoint(使用唯一临时文件避免并发竞争):
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
TMP_FILE=".atool-docs/analysis-state.json.tmp.{module_name}"
|
|
118
|
+
jq --arg mod "{module_name}" \
|
|
119
|
+
'.refine_status[$mod].prd_refine = "completed"' \
|
|
120
|
+
.atool-docs/analysis-state.json > "$TMP_FILE" && mv "$TMP_FILE" .atool-docs/analysis-state.json
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
#### Gate 2: PRD 覆盖率门禁(Hard Gate)
|
|
126
|
+
|
|
127
|
+
**对每个模块的精炼后 prd.md 执行**:
|
|
128
|
+
|
|
129
|
+
检查项(每项 20 分,满分 100):
|
|
130
|
+
|
|
131
|
+
| 检查项 | 验证方式 | 分值 |
|
|
132
|
+
|--------|---------|------|
|
|
133
|
+
| 8 节结构完整 | `grep -c "^## [0-9]"` ≥ 8 | 20 |
|
|
134
|
+
| FR 编号存在 | `grep -c "FR-"` ≥ 1 | 20 |
|
|
135
|
+
| Given-When-Then AC | `grep -c "Given\|When\|Then"` ≥ 3 | 20 |
|
|
136
|
+
| NFR 编号存在 | `grep -c "NFR-"` ≥ 1 | 20 |
|
|
137
|
+
| 数据需求填充 | §4 非空(> 3 行) | 20 |
|
|
138
|
+
|
|
139
|
+
**通过**(≥ 70 分)→ 记录分数到 `refine_status.{name}.prd_coverage`,进入 Step B
|
|
140
|
+
|
|
141
|
+
**失败**(< 70 分)→ 提供恢复选项:
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
❌ Gate 2 失败:模块 {module_name} PRD 覆盖率 {score}%(需 ≥ 70%)
|
|
145
|
+
缺失项:{列出具体未通过的检查项}
|
|
146
|
+
|
|
147
|
+
恢复选项:
|
|
148
|
+
[A] 重跑该模块的 PRD 精炼(自动重试 1 次)
|
|
149
|
+
[B] 手动编辑 prd.md 后输入 "继续"
|
|
150
|
+
[C] 降级:跳过精炼,使用 Phase 2 初稿(标记 [未精炼])
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
选择 A 时:重新派发 Step A sub-agent(仅 1 次重试,再失败则自动降级)
|
|
154
|
+
选择 C 时:`refine_status.{name}.degraded = true, degraded_reason = "PRD coverage {score}% below threshold"`
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Gate 2 通过时写入(使用唯一临时文件)
|
|
158
|
+
TMP_FILE=".atool-docs/analysis-state.json.tmp.{module_name}.gate2"
|
|
159
|
+
jq --arg mod "{module_name}" --argjson score {score} \
|
|
160
|
+
'.refine_status[$mod].prd_coverage = $score | .refine_status[$mod].prd_gate = "passed"' \
|
|
161
|
+
.atool-docs/analysis-state.json > "$TMP_FILE" && mv "$TMP_FILE" .atool-docs/analysis-state.json
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
#### Step B: software-architecture Refine(架构精炼)
|
|
167
|
+
|
|
168
|
+
仅对通过 Gate 2 的模块执行。为每个模块派发 sub-agent,prompt 模板:
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
你是 software-architecture 的精炼模式(Refine Mode)。
|
|
172
|
+
|
|
173
|
+
## 任务
|
|
174
|
+
在以下模块的 dev-guide.md 基础上追加架构章节。
|
|
175
|
+
|
|
176
|
+
## 模块信息
|
|
177
|
+
- 模块名:{module_name}
|
|
178
|
+
- 模块路径:{module_path}
|
|
179
|
+
- 技术栈:{detected_stack}
|
|
180
|
+
|
|
181
|
+
## 输入文件(必须全部读取)
|
|
182
|
+
- atool-analysis/modules/{module_name}/dev-guide.md — 当前内容(保留全部,在末尾追加)
|
|
183
|
+
- atool-analysis/modules/{module_name}/prd.md — 精炼后的标准 PRD(8 节)
|
|
184
|
+
- atool-analysis/modules/{module_name}/api.md — 接口定义
|
|
185
|
+
- atool-analysis/modules/{module_name}/data-model.md — 数据模型(可能不存在,跳过)
|
|
186
|
+
- atool-analysis/modules/{module_name}/README.md — 模块概述
|
|
187
|
+
- .atool-docs/modules/{module_name}/data.json — 结构化数据(含 refine_hints)
|
|
188
|
+
|
|
189
|
+
## 编码规范约束
|
|
190
|
+
{conventions_context}
|
|
191
|
+
|
|
192
|
+
## 精炼规则
|
|
193
|
+
**必须读取并遵循**:`~/.claude/skills/software-architecture/SKILL.md` 中的 **Refine Mode(精炼模式)** 章节。该章节定义了标准的架构设计精炼流程和输出格式。按照其中的精炼规则逐条执行。
|
|
194
|
+
|
|
195
|
+
补充说明(与 Refine Mode 保持一致):
|
|
196
|
+
- 在现有 dev-guide.md 内容末尾追加(不删除原有内容)
|
|
197
|
+
- 追加 B-subset 组件设计(分层表 + 边界 + 依赖方向)
|
|
198
|
+
- 追加 C-subset 数据与交互设计(数据所有权 + 同步/异步边界 + API 契约)
|
|
199
|
+
- 追加至少 1 个 ADR(使用 7 节 ADR 模板:Status/Context/Decision/Options/Consequences/NFR Impact/Related)
|
|
200
|
+
- NFR 对齐:标注 [待系统级确认]
|
|
201
|
+
|
|
202
|
+
## 输出
|
|
203
|
+
原地覆盖 atool-analysis/modules/{module_name}/dev-guide.md
|
|
204
|
+
|
|
205
|
+
## 禁止行为
|
|
206
|
+
- 不删除 dev-guide.md 的原有内容
|
|
207
|
+
- 不修改 prd.md / api.md / data-model.md / README.md / test-cases.md
|
|
208
|
+
- 不创建新文件
|
|
209
|
+
- 不生成项目级文档(A/D/E/F)
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
完成后写入 checkpoint(使用唯一临时文件):
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
TMP_FILE=".atool-docs/analysis-state.json.tmp.{module_name}.archrefine"
|
|
216
|
+
jq --arg mod "{module_name}" \
|
|
217
|
+
'.refine_status[$mod].arch_refine = "completed"' \
|
|
218
|
+
.atool-docs/analysis-state.json > "$TMP_FILE" && mv "$TMP_FILE" .atool-docs/analysis-state.json
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
#### Gate 3: 架构精炼门禁(Hard Gate)
|
|
224
|
+
|
|
225
|
+
**对每个模块的精炼后 dev-guide.md 执行**:
|
|
226
|
+
|
|
227
|
+
检查项:
|
|
228
|
+
- 包含 "组件设计" 或 "Component Design" 章节标题(`grep -c "组件设计\|Component Design"`)
|
|
229
|
+
- 包含 "ADR" 或 "架构决策" 标题(`grep -c "ADR\|架构决策"`)
|
|
230
|
+
- ADR 中包含 "Status" + "Decision" + "Consequences"(或中文等价 "状态" + "决策" + "影响")
|
|
231
|
+
|
|
232
|
+
**通过** → 记录 `arch_gate = "passed"`
|
|
233
|
+
**失败** → 同 Gate 2 的三选项恢复机制(A 重试 / B 手动 / C 降级)
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
# Gate 3 通过时写入(使用唯一临时文件)
|
|
237
|
+
TMP_FILE=".atool-docs/analysis-state.json.tmp.{module_name}.gate3"
|
|
238
|
+
jq --arg mod "{module_name}" \
|
|
239
|
+
'.refine_status[$mod].arch_gate = "passed"' \
|
|
240
|
+
.atool-docs/analysis-state.json > "$TMP_FILE" && mv "$TMP_FILE" .atool-docs/analysis-state.json
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### 2.5.5 完成 Checkpoint
|
|
244
|
+
|
|
245
|
+
每个模块完成全部精炼(或降级)后,写入完整状态(使用唯一临时文件):
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
TMP_FILE=".atool-docs/analysis-state.json.tmp.{module_name}.final"
|
|
249
|
+
jq --arg mod "{module_name}" \
|
|
250
|
+
--argjson score {prd_score} \
|
|
251
|
+
--arg conv "{conventions_skill}" \
|
|
252
|
+
'.refine_status[$mod] = {
|
|
253
|
+
"prd_refine": "completed",
|
|
254
|
+
"prd_coverage": $score,
|
|
255
|
+
"prd_gate": "passed",
|
|
256
|
+
"arch_refine": "completed",
|
|
257
|
+
"arch_gate": "passed",
|
|
258
|
+
"conventions_loaded": $conv,
|
|
259
|
+
"degraded": false,
|
|
260
|
+
"degraded_reason": null
|
|
261
|
+
}' .atool-docs/analysis-state.json > "$TMP_FILE" && mv "$TMP_FILE" .atool-docs/analysis-state.json
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### 2.5.6 跨 IDE 降级
|
|
265
|
+
|
|
266
|
+
| IDE | 检测方式 | 行为 |
|
|
267
|
+
|-----|---------|------|
|
|
268
|
+
| Claude Code | Agent tool 可用 | 完整并行(≤5 模块同时) |
|
|
269
|
+
| Cursor | Agent tool 不可用 | 顺序执行(每次 1 个模块) |
|
|
270
|
+
| Kiro | 无 Agent tool + 无 sub-agent | 跳过 Phase 2.5(与 Phase 2 一样) |
|
|
271
|
+
|
|
272
|
+
检测逻辑沿用 SKILL.md 的 Cross-IDE Adaptation 章节。
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## 完成条件
|
|
277
|
+
|
|
278
|
+
- 所有非降级模块的 `refine_status.{name}.arch_gate == "passed"`
|
|
279
|
+
- 降级模块已记录 `degraded = true` 和 `degraded_reason`
|
|
280
|
+
- 更新 state:
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
jq '.phases.phase2_5_refine = "completed"' .atool-docs/analysis-state.json > tmp && mv tmp .atool-docs/analysis-state.json
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
- 打印精炼摘要:
|
|
287
|
+
|
|
288
|
+
```
|
|
289
|
+
✅ Phase 2.5 REFINE 完成
|
|
290
|
+
精炼模块:{M}/{N}({M} 个精炼完成,{D} 个降级)
|
|
291
|
+
平均 PRD 覆盖率:{avg_score}%
|
|
292
|
+
降级模块:{list}(如有,标注降级原因)
|
|
293
|
+
```
|
|
@@ -2,7 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
**目标**:从 Phase 2 的 data.json 构建知识图谱 + 五维分析。全部通过 bash 库函数执行,禁止 AI 生成。
|
|
4
4
|
|
|
5
|
-
**执行时间目标**:< 30
|
|
5
|
+
**执行时间目标**:< 30秒(大型项目 < 60秒)
|
|
6
|
+
|
|
7
|
+
**性能特点**:
|
|
8
|
+
- Pure bash + jq(无 AI 开销)
|
|
9
|
+
- 线性时间复杂度:O(M*E),M=模块数,E=边数
|
|
10
|
+
- 内存消耗:~50MB per 100 modules(jq slurp)
|
|
11
|
+
- 中断保护:超过 120 秒自动停止,记录为 "failed"
|
|
6
12
|
|
|
7
13
|
## 前置检查
|
|
8
14
|
|
|
@@ -1,57 +1,67 @@
|
|
|
1
|
-
# Phase 4: SYNTHESIZE(主 Agent
|
|
1
|
+
# Phase 4: SYNTHESIZE(主 Agent — 聚合模式)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**目标**:以 Phase 2.5 精炼后的模块文档 + 知识图谱为数据源,**聚合**为项目级交付物。Phase 4 不再从零生成模块级内容,而是聚合、补全项目级独有文档、并生成 PROJECT-DELIVERABLE.md 总览入口。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## IDE 适配(执行前检查)
|
|
8
|
+
|
|
9
|
+
- **Claude Code**:主 Agent 单条线执行 Phase 4 逻辑(无额外并行)
|
|
10
|
+
- **Cursor/其他**:同 Claude Code(Phase 4 本身是单 Agent,无 sub-agent 并行需求)
|
|
11
|
+
|
|
12
|
+
**注**:Phase 4 与 Phase 2/4 不同,本身不使用 sub-agents,仅为单条线聚合逻辑,故无 IDE 差异。
|
|
13
|
+
|
|
14
|
+
---
|
|
4
15
|
|
|
5
16
|
## 前置检查
|
|
6
17
|
|
|
7
18
|
1. 确认 `phases.phase2_understand == "completed"`(必须)
|
|
8
|
-
2. 检查 `phases.
|
|
19
|
+
2. 检查 `phases.phase2_5_refine`(必须):
|
|
20
|
+
- `"completed"` → 使用精炼后的 prd.md、dev-guide.md(含 ADR、架构设计)
|
|
21
|
+
- `"skipped"` 或 `"failed"` → **警告用户并询问是否继续**
|
|
22
|
+
- 若继续:使用 Phase 2 初稿(内容可能不完整)
|
|
23
|
+
- 若中止:建议用户重新执行 Phase 2.5
|
|
24
|
+
3. 检查 `phases.phase3_graph`:
|
|
9
25
|
- `"completed"` → 可使用图谱数据生成完整文档
|
|
10
26
|
- `"failed"` → 跳过图谱相关输出(data-flow.mmd、module-dependencies.mmd),其余正常生成
|
|
11
27
|
|
|
12
28
|
## 输入数据
|
|
13
29
|
|
|
14
30
|
- 模块文档(必须):`atool-analysis/modules/*/README.md`
|
|
31
|
+
- 模块精炼文档(必须):`atool-analysis/modules/*/prd.md`、`dev-guide.md`、`test-cases.md`
|
|
15
32
|
- 模块数据(必须):`.atool-docs/modules/*/data.json`
|
|
16
33
|
- 图谱数据(可选):`.atool-docs/knowledge-graph.json`
|
|
17
34
|
- 五维分析(可选):`.atool-docs/multi-dimensional-analysis.json`
|
|
18
35
|
|
|
19
36
|
## 步骤
|
|
20
37
|
|
|
21
|
-
### 4.1
|
|
22
|
-
|
|
23
|
-
创建 `atool-analysis/overview/` 目录下 4 个文件:
|
|
38
|
+
### 4.1 聚合项目概述(overview/)
|
|
24
39
|
|
|
25
|
-
#### 4.1a
|
|
40
|
+
#### 4.1a summary.md(聚合)
|
|
26
41
|
|
|
27
|
-
|
|
28
|
-
1
|
|
29
|
-
2
|
|
30
|
-
3.
|
|
31
|
-
4. **健康度摘要**(如存在严重技术债,用业务影响语言描述,如"某模块修改风险较高,可能影响XX功能稳定性")
|
|
42
|
+
从各模块 `README.md` 提取摘要,拼接为项目级概述:
|
|
43
|
+
- 第 1 段:Executive Summary(CEO/VP 可读级别,3-5 句)
|
|
44
|
+
- 第 2 段:模块清单表(模块名 / 职责 / 状态)
|
|
45
|
+
- 第 3 段:技术栈概述(从 `analysis-state.json` 的 `detected_stack` 提取)
|
|
32
46
|
|
|
33
|
-
|
|
47
|
+
#### 4.1b architecture.md(聚合 + 项目级补全)
|
|
34
48
|
|
|
35
|
-
|
|
49
|
+
从各模块精炼后的 `dev-guide.md` 的架构章节聚合:
|
|
50
|
+
1. **全局架构图**(Mermaid graph TB):从各模块的组件设计章节提取模块名和依赖关系,生成项目级视图
|
|
51
|
+
2. **各模块架构摘要**:每个模块一段(模块名 / 分层 / 关键 ADR)
|
|
52
|
+
3. **ADR 汇总**:从各模块 dev-guide.md 提取所有 ADR,汇总为项目级 ADR 列表
|
|
53
|
+
4. **项目级补全**(引用 software-architecture A/E/F 模板结构):
|
|
54
|
+
- A. Architecture Summary:Business Context + Technical Drivers + Style Decision
|
|
55
|
+
- E. Risk and Trade-offs:项目级风险登记表
|
|
56
|
+
- F. Evolution Roadmap:分阶段演进表
|
|
36
57
|
|
|
37
|
-
|
|
38
|
-
1. **系统架构图**(Mermaid graph TB 格式,同时写入 `diagrams/architecture.mmd`)
|
|
39
|
-
2. **各层/模块职责说明**
|
|
40
|
-
3. **核心数据流**(用 Mermaid sequence diagram,同时写入 `diagrams/data-flow.mmd`)
|
|
41
|
-
4. **关键设计决策**(ADR 格式:决策/选择/替代/理由)
|
|
58
|
+
#### 4.1c tech-stack.md(保持不变)
|
|
42
59
|
|
|
43
|
-
|
|
60
|
+
从 Phase 1 pre-scan 数据聚合,无需精炼。
|
|
44
61
|
|
|
45
|
-
|
|
62
|
+
#### 4.1d getting-started.md(聚合)
|
|
46
63
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
**Zero-KT 标准**:新人仅凭此文档可完成:
|
|
50
|
-
1. **环境搭建**(前置依赖 + 安装命令)
|
|
51
|
-
2. **运行项目**(启动命令 + 验证成功的方式)
|
|
52
|
-
3. **理解主要业务流程**(3-5 个核心场景 walkthrough)
|
|
53
|
-
4. **添加第一个功能**(具体到哪个模块/文件/类,附代码模板)
|
|
54
|
-
5. **运行测试**(命令 + 预期结果)
|
|
64
|
+
从各模块 `dev-guide.md` 的快速启动部分聚合。
|
|
55
65
|
|
|
56
66
|
### 4.2 生成 Mermaid 图表(diagrams/)
|
|
57
67
|
|
|
@@ -120,49 +130,41 @@ Phase 3(1-3月): {长期优化}
|
|
|
120
130
|
#### 4.3c `recommendations.md`
|
|
121
131
|
可行动的 Top 10 改进建议。每项包含:问题描述、建议行动、预期收益、工作量。
|
|
122
132
|
|
|
123
|
-
### 4.4
|
|
124
|
-
|
|
125
|
-
创建 `atool-analysis/project/` 目录下 4 个文件:
|
|
126
|
-
|
|
127
|
-
#### 4.4a `project/prd.md` — 项目级 PRD(聚合视角)
|
|
133
|
+
### 4.4 聚合项目级文档(project/)
|
|
128
134
|
|
|
129
|
-
|
|
135
|
+
#### 4.4a project/prd.md(聚合)
|
|
130
136
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
137
|
+
从各模块精炼后的 `prd.md` 聚合为项目级 PRD:
|
|
138
|
+
1. **Executive Summary**:项目整体业务目标 + 成功标准
|
|
139
|
+
2. **功能矩阵**:模块 × 功能 交叉表
|
|
140
|
+
3. **NFR 汇总**:
|
|
141
|
+
- 从各模块 NFR-{MOD}-NNN 归纳生成 NFR-SYS-NNN(系统级)
|
|
142
|
+
- NFR-SYS-NNN 必须覆盖所有模块 NFR 的范围
|
|
143
|
+
4. **全局用户流**:Mermaid journey 图
|
|
144
|
+
5. **非目标汇总**:各模块非目标聚合
|
|
145
|
+
6. **Phased Rollout Roadmap**
|
|
136
146
|
|
|
137
|
-
|
|
147
|
+
#### 4.4b project/deployment.md(项目级独有)
|
|
138
148
|
|
|
139
|
-
|
|
149
|
+
Phase 4 主 agent 直接引用 software-architecture D 模板结构生成(不启动 sub-agent):
|
|
150
|
+
- 部署拓扑(Mermaid)
|
|
151
|
+
- 环境配置矩阵(dev/staging/prod)
|
|
152
|
+
- CI/CD 流程
|
|
153
|
+
- 可观测性表
|
|
154
|
+
- 回滚策略
|
|
155
|
+
- 扩缩容规则
|
|
140
156
|
|
|
141
|
-
|
|
157
|
+
#### 4.4c project/testing-strategy.md(聚合 + 项目级补全)
|
|
142
158
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
6. **回滚策略**:基于部署方式的回滚步骤
|
|
149
|
-
7. **健康检查接口**:从代码中的 /health /ready /live 端点提取
|
|
159
|
+
Phase 4 主 agent 聚合各模块 `test-cases.md` + 补全:
|
|
160
|
+
- 模块级测试覆盖汇总
|
|
161
|
+
- 集成测试策略
|
|
162
|
+
- E2E 测试策略
|
|
163
|
+
- 性能测试策略
|
|
150
164
|
|
|
151
|
-
#### 4.
|
|
165
|
+
#### 4.4d project/runbook.md(聚合)
|
|
152
166
|
|
|
153
|
-
|
|
154
|
-
2. **覆盖率目标**:行覆盖/分支覆盖建议值
|
|
155
|
-
3. **关键路径测试场景**:从 `project/prd.md` 核心用户流推导的 E2E 场景
|
|
156
|
-
4. **自动化建议**:推荐测试框架 + 配置模板(基于技术栈,如 Jest/JUnit/pytest)
|
|
157
|
-
5. **测试数据策略**:种子数据/工厂模式建议
|
|
158
|
-
|
|
159
|
-
#### 4.4d `project/runbook.md` — 运维手册
|
|
160
|
-
|
|
161
|
-
1. **常见故障排查**:`| 症状 | 可能原因 | 诊断命令 | 解决方案 |`(至少 5 个场景)
|
|
162
|
-
2. **监控指标建议**:API 延迟/错误率/内存/CPU/数据库连接池
|
|
163
|
-
3. **告警阈值建议**:每个指标的 warning/critical 阈值
|
|
164
|
-
4. **日志查看**:日志文件路径 + 常用查询命令(grep/jq)
|
|
165
|
-
5. **扩缩容指南**(如有容器化)
|
|
167
|
+
Phase 4 主 agent 聚合各模块 `dev-guide.md` 的运维相关章节。
|
|
166
168
|
|
|
167
169
|
### 4.5 生成安全和性能文档(quality/ 扩展)
|
|
168
170
|
|
|
@@ -197,64 +199,59 @@ OWASP Top 10 逐项检查,从所有 data.json 的 `security_issues` 聚合:
|
|
|
197
199
|
4. **并发处理**:线程池/连接池配置评估
|
|
198
200
|
5. **建议优化点**:Top 5 性能改进建议(按预期收益排序,每项包含:问题/影响/建议/预期收益)
|
|
199
201
|
|
|
200
|
-
### 4.6
|
|
201
|
-
|
|
202
|
-
> **执行命令(必须通过 Bash 工具):**
|
|
203
|
-
> ```bash
|
|
204
|
-
> DOCS_DIR="$(pwd)/.atool-docs"
|
|
205
|
-
> jq --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
|
206
|
-
> '.phases.phase4_synthesize = "completed" | .updated_at = $ts' \
|
|
207
|
-
> "$DOCS_DIR/analysis-state.json" > "$DOCS_DIR/analysis-state.json.tmp" \
|
|
208
|
-
> && mv "$DOCS_DIR/analysis-state.json.tmp" "$DOCS_DIR/analysis-state.json"
|
|
209
|
-
> echo "Phase 4 completed"
|
|
210
|
-
> ```
|
|
211
|
-
|
|
212
|
-
### 4.7 PRD 覆盖率检测
|
|
213
|
-
|
|
214
|
-
在所有文档生成完成后,检查模块级 PRD 的覆盖率:
|
|
215
|
-
|
|
216
|
-
**对每个 `atool-analysis/modules/{name}/prd.md`,检查是否包含以下关键要素**:
|
|
217
|
-
1. 用户故事(As a... I want...)— 搜索 "As a" 或 "用户故事"
|
|
218
|
-
2. 验收标准(AC-)— 搜索 "AC-" 或 "验收标准"
|
|
219
|
-
3. 按钮/交互定义 — 搜索 "按钮" 或 "输入字段" 或 "交互"
|
|
220
|
-
4. 字段校验规则 — 搜索 "校验" 或 "必填" 或 "validation"
|
|
221
|
-
5. 四种状态 — 搜索 "加载中" 或 "空数据" 或 "错误状态"
|
|
222
|
-
|
|
223
|
-
**覆盖率评分**:每个要素命中 = 20分,总分 0-100。
|
|
224
|
-
|
|
225
|
-
将评分写入 `analysis-state.json`:
|
|
226
|
-
```json
|
|
227
|
-
"prd_coverage": {
|
|
228
|
-
"average_score": 60,
|
|
229
|
-
"modules_below_70": ["order-service", "payment-service"],
|
|
230
|
-
"recommendation": "建议运行 /requirements-writer 补齐 PRD 深度"
|
|
231
|
-
}
|
|
232
|
-
```
|
|
202
|
+
### 4.6 NFR 一致性回扫
|
|
233
203
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
204
|
+
在 `project/prd.md` 生成 NFR-SYS-NNN 后,对所有模块的 prd.md 执行回扫:
|
|
205
|
+
|
|
206
|
+
1. 读取 `project/prd.md` 中的 NFR-SYS-NNN 列表
|
|
207
|
+
2. 对每个 `modules/*/prd.md`:
|
|
208
|
+
- 将 `[待系统级确认]` 替换为 `(≤ NFR-SYS-NNN)`(匹配对应类别:性能→性能,安全→安全,可用性→可用性)
|
|
209
|
+
- 如果模块 NFR 数值超出系统 NFR 范围,标注 `[⚠️ 超出系统级约束 NFR-SYS-NNN]`
|
|
210
|
+
3. 记录回扫结果到 `analysis-state.json`:`nfr_backscan.conflicts_count`
|
|
211
|
+
|
|
212
|
+
### 4.7 架构违反率检测
|
|
213
|
+
|
|
214
|
+
如果 `.atool-docs/knowledge-graph.json` 存在:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
VIOLATIONS=$(jq '[.edges[] | select(.type == "layer_violation")] | length' .atool-docs/knowledge-graph.json)
|
|
218
|
+
TOTAL=$(jq '.edges | length' .atool-docs/knowledge-graph.json)
|
|
244
219
|
```
|
|
245
220
|
|
|
221
|
+
如果 `VIOLATIONS / TOTAL > 0.30`(>30%):
|
|
222
|
+
- 记录到 `analysis-state.json`:`arch_violation_rate`
|
|
223
|
+
- 在 Phase 5 完成摘要中建议:`⚠️ 架构层违反率 {rate}%(>30%),建议运行 /software-architecture 进行深度架构审查`
|
|
224
|
+
|
|
225
|
+
### 4.8 生成 PROJECT-DELIVERABLE.md
|
|
226
|
+
|
|
227
|
+
生成 `atool-analysis/PROJECT-DELIVERABLE.md` 总览入口文件。
|
|
228
|
+
|
|
229
|
+
结构(硬性):
|
|
230
|
+
|
|
231
|
+
1. **标题 + 元信息**:项目名、生成时间、分析深度、技术栈、模块数/精炼数/降级数
|
|
232
|
+
2. **执行摘要**:3-5 段项目级业务概述(CEO/VP 可读)
|
|
233
|
+
3. **文档导航**:
|
|
234
|
+
- 项目级文档表(PRD / 架构 / 部署 / 测试策略 / 运维手册,含相对链接)
|
|
235
|
+
- 模块级文档表(每个模块一行,含 PRD/架构/API/数据模型/测试用例链接 + 精炼状态 ✅/⚠️)
|
|
236
|
+
- 质量报告表(code-review / tech-debt / security-audit / performance-baseline)
|
|
237
|
+
4. **全局架构概览**:从 `overview/architecture.md` 内联 Mermaid 图
|
|
238
|
+
5. **功能矩阵**:从 `project/prd.md` 内联核心功能表
|
|
239
|
+
6. **精炼覆盖率报告**:每个模块的 PRD 覆盖率 + 架构完整度 + 精炼状态(从 `analysis-state.json` 的 `refine_status` 读取)
|
|
240
|
+
7. **后续操作建议**:降级模块补全 / code-review / project-query / software-architecture(如架构违反率 >30%)
|
|
241
|
+
|
|
246
242
|
## 完成条件
|
|
247
243
|
|
|
248
|
-
- `
|
|
249
|
-
- `
|
|
250
|
-
- `
|
|
251
|
-
- `
|
|
252
|
-
- `
|
|
253
|
-
- `
|
|
254
|
-
- `
|
|
255
|
-
-
|
|
256
|
-
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
-
|
|
244
|
+
- `overview/summary.md` 存在
|
|
245
|
+
- `overview/architecture.md` 存在且包含 Mermaid 图
|
|
246
|
+
- `project/prd.md` 存在且包含 NFR-SYS
|
|
247
|
+
- `project/deployment.md` 存在
|
|
248
|
+
- `project/testing-strategy.md` 存在
|
|
249
|
+
- `project/runbook.md` 存在
|
|
250
|
+
- `PROJECT-DELIVERABLE.md` 存在且包含所有模块链接
|
|
251
|
+
- NFR 一致性回扫已执行
|
|
252
|
+
- 更新 state:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
jq '.phases.phase4_synthesize = "completed" | .deliverable_status.project_deliverable_md = "completed"' \
|
|
256
|
+
.atool-docs/analysis-state.json > tmp && mv tmp .atool-docs/analysis-state.json
|
|
257
|
+
```
|