mspec-cli 4.0.14__tar.gz → 5.0.1__tar.gz
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.
- {mspec_cli-4.0.14/src/mspec_cli.egg-info → mspec_cli-5.0.1}/PKG-INFO +54 -3
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/README.md +53 -2
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/pyproject.toml +1 -1
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/__init__.py +1 -1
- mspec_cli-5.0.1/src/mspec/templates/adr.md +23 -0
- mspec_cli-5.0.1/src/mspec/templates/config.yaml +454 -0
- mspec_cli-5.0.1/src/mspec/templates/glossary.md +24 -0
- mspec_cli-5.0.1/src/mspec/templates/retrospective-notes.md +40 -0
- mspec_cli-5.0.1/src/mspec/templates/risk-map.md +43 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1/src/mspec_cli.egg-info}/PKG-INFO +54 -3
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec_cli.egg-info/SOURCES.txt +4 -0
- mspec_cli-4.0.14/src/mspec/templates/config.yaml +0 -243
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/LICENSE +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/MANIFEST.in +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/setup.cfg +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/__main__.py +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/cli.py +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/commands/__init__.py +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/commands/doctor.py +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/commands/init.py +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/commands/update.py +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/core/__init__.py +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/core/config.py +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/core/openspec_manager.py +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/core/template.py +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/templates/design-issue-taxonomy.md +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/templates/design-issues.md +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/templates/requirement-issue-taxonomy.md +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/templates/requirement-issues.md +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/utils/__init__.py +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec/utils/console.py +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec_cli.egg-info/dependency_links.txt +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec_cli.egg-info/entry_points.txt +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec_cli.egg-info/requires.txt +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/src/mspec_cli.egg-info/top_level.txt +0 -0
- {mspec_cli-4.0.14 → mspec_cli-5.0.1}/tests/test_init.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mspec-cli
|
|
3
|
-
Version:
|
|
3
|
+
Version: 5.0.1
|
|
4
4
|
Summary: mspec-cli(Member Spec)- 会员组规范驱动开发工作流 CLI 工具
|
|
5
5
|
Author-email: shirayner <team@mspec.io>
|
|
6
6
|
License: MIT
|
|
@@ -45,7 +45,7 @@ Dynamic: license-file
|
|
|
45
45
|
|
|
46
46
|
**mspec-cli**(Member Spec)- 会员组规范驱动开发工作流 CLI 工具
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
通过交互式命令行澄清机制,实现结构化问题发现与澄清;通过自发进化体系,使 AI 随着项目积累越来越了解你的项目。
|
|
49
49
|
|
|
50
50
|
## 特性
|
|
51
51
|
|
|
@@ -53,6 +53,7 @@ Dynamic: license-file
|
|
|
53
53
|
- 🔄 **批量式澄清** - 一次性列出所有问题,统一回答,高效不拖沓
|
|
54
54
|
- 💾 **断点续传** - 支持随时中断,下次自动恢复
|
|
55
55
|
- 📚 **结构化问题分类** - 6个需求维度 + 7个设计维度
|
|
56
|
+
- 🧬 **自发进化体系** - 使用越久,整个 spec coding 流程越精准
|
|
56
57
|
- 🎨 **美观界面** - 使用 Rich 库提供彩色终端输出
|
|
57
58
|
|
|
58
59
|
## 文档
|
|
@@ -197,9 +198,59 @@ mspec doctor
|
|
|
197
198
|
└─────────────────────────────────────┘
|
|
198
199
|
│
|
|
199
200
|
▼
|
|
200
|
-
|
|
201
|
+
┌─────────────────────────────────────┐
|
|
202
|
+
│ 实施 (apply) │
|
|
203
|
+
│ - 按任务清单逐步实施 │
|
|
204
|
+
│ - 可选:记录实施中的轻量观察 │
|
|
205
|
+
└─────────────────────────────────────┘
|
|
206
|
+
│
|
|
207
|
+
▼
|
|
208
|
+
┌─────────────────────────────────────┐
|
|
209
|
+
│ 归档 (archive) + 进化 │
|
|
210
|
+
│ - 生成复盘报告(9个维度) │
|
|
211
|
+
│ - 更新项目知识库(ADR/词汇/风险) │
|
|
212
|
+
│ - 积累 3 次后自动触发进化分析 │
|
|
213
|
+
└─────────────────────────────────────┘
|
|
201
214
|
```
|
|
202
215
|
|
|
216
|
+
## 🧬 进化体系
|
|
217
|
+
|
|
218
|
+
mspec 内置 3层8维度 的完整进化体系,无需额外命令,每次 archive 自动推进:
|
|
219
|
+
|
|
220
|
+
### Layer A — 项目事实(每次立即更新)
|
|
221
|
+
|
|
222
|
+
| 文件 | 内容 | 作用 |
|
|
223
|
+
|------|------|------|
|
|
224
|
+
| `openspec/decisions/adr.md` | 技术决策账本 | 不重复讨论已决定的事 |
|
|
225
|
+
| `openspec/glossary.md` | 领域词汇表 | 统一业务术语命名 |
|
|
226
|
+
| `openspec/risk-map.md` | 风险图谱 | 已知高风险区和 bug 模式 |
|
|
227
|
+
|
|
228
|
+
### Layer B — 流程模式(积累 3+ 次后自动触发)
|
|
229
|
+
|
|
230
|
+
| 文件 | 内容 | 作用 |
|
|
231
|
+
|------|------|------|
|
|
232
|
+
| `openspec/templates/*.md` | 进化后的问题分类学 | 精准识别项目特有问题 |
|
|
233
|
+
| `openspec/task-patterns/` | 任务模板库 | 按 change 类型分解任务 |
|
|
234
|
+
| `openspec/config.yaml` | 用户偏好档案 | 减少重复对齐 |
|
|
235
|
+
|
|
236
|
+
### Layer C — 元信号(长期积累)
|
|
237
|
+
|
|
238
|
+
| 文件 | 内容 | 作用 |
|
|
239
|
+
|------|------|------|
|
|
240
|
+
| `openspec/specs/CHANGELOG.md` | 规格演化日志 | 揭示业务边界稳定性 |
|
|
241
|
+
| `openspec/metrics.md` | 效率信号 | 发现系统性瓶颈 |
|
|
242
|
+
|
|
243
|
+
### 预期效果
|
|
244
|
+
|
|
245
|
+
| 时间点 | 效果 |
|
|
246
|
+
|--------|------|
|
|
247
|
+
| 第 1 次 archive | ADR 建立,词汇表开始填充 |
|
|
248
|
+
| 第 3 次 archive | 首次触发进化,分类学开始个性化 |
|
|
249
|
+
| 第 5-10 次 | 澄清轮次减少,apply 意外减少 |
|
|
250
|
+
| 长期(20+次) | 项目知识库完备,AI 越来越了解项目 |
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
203
254
|
## 问题分类学
|
|
204
255
|
|
|
205
256
|
### 需求问题 (6个维度)
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
**mspec-cli**(Member Spec)- 会员组规范驱动开发工作流 CLI 工具
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
通过交互式命令行澄清机制,实现结构化问题发现与澄清;通过自发进化体系,使 AI 随着项目积累越来越了解你的项目。
|
|
10
10
|
|
|
11
11
|
## 特性
|
|
12
12
|
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
- 🔄 **批量式澄清** - 一次性列出所有问题,统一回答,高效不拖沓
|
|
15
15
|
- 💾 **断点续传** - 支持随时中断,下次自动恢复
|
|
16
16
|
- 📚 **结构化问题分类** - 6个需求维度 + 7个设计维度
|
|
17
|
+
- 🧬 **自发进化体系** - 使用越久,整个 spec coding 流程越精准
|
|
17
18
|
- 🎨 **美观界面** - 使用 Rich 库提供彩色终端输出
|
|
18
19
|
|
|
19
20
|
## 文档
|
|
@@ -158,9 +159,59 @@ mspec doctor
|
|
|
158
159
|
└─────────────────────────────────────┘
|
|
159
160
|
│
|
|
160
161
|
▼
|
|
161
|
-
|
|
162
|
+
┌─────────────────────────────────────┐
|
|
163
|
+
│ 实施 (apply) │
|
|
164
|
+
│ - 按任务清单逐步实施 │
|
|
165
|
+
│ - 可选:记录实施中的轻量观察 │
|
|
166
|
+
└─────────────────────────────────────┘
|
|
167
|
+
│
|
|
168
|
+
▼
|
|
169
|
+
┌─────────────────────────────────────┐
|
|
170
|
+
│ 归档 (archive) + 进化 │
|
|
171
|
+
│ - 生成复盘报告(9个维度) │
|
|
172
|
+
│ - 更新项目知识库(ADR/词汇/风险) │
|
|
173
|
+
│ - 积累 3 次后自动触发进化分析 │
|
|
174
|
+
└─────────────────────────────────────┘
|
|
162
175
|
```
|
|
163
176
|
|
|
177
|
+
## 🧬 进化体系
|
|
178
|
+
|
|
179
|
+
mspec 内置 3层8维度 的完整进化体系,无需额外命令,每次 archive 自动推进:
|
|
180
|
+
|
|
181
|
+
### Layer A — 项目事实(每次立即更新)
|
|
182
|
+
|
|
183
|
+
| 文件 | 内容 | 作用 |
|
|
184
|
+
|------|------|------|
|
|
185
|
+
| `openspec/decisions/adr.md` | 技术决策账本 | 不重复讨论已决定的事 |
|
|
186
|
+
| `openspec/glossary.md` | 领域词汇表 | 统一业务术语命名 |
|
|
187
|
+
| `openspec/risk-map.md` | 风险图谱 | 已知高风险区和 bug 模式 |
|
|
188
|
+
|
|
189
|
+
### Layer B — 流程模式(积累 3+ 次后自动触发)
|
|
190
|
+
|
|
191
|
+
| 文件 | 内容 | 作用 |
|
|
192
|
+
|------|------|------|
|
|
193
|
+
| `openspec/templates/*.md` | 进化后的问题分类学 | 精准识别项目特有问题 |
|
|
194
|
+
| `openspec/task-patterns/` | 任务模板库 | 按 change 类型分解任务 |
|
|
195
|
+
| `openspec/config.yaml` | 用户偏好档案 | 减少重复对齐 |
|
|
196
|
+
|
|
197
|
+
### Layer C — 元信号(长期积累)
|
|
198
|
+
|
|
199
|
+
| 文件 | 内容 | 作用 |
|
|
200
|
+
|------|------|------|
|
|
201
|
+
| `openspec/specs/CHANGELOG.md` | 规格演化日志 | 揭示业务边界稳定性 |
|
|
202
|
+
| `openspec/metrics.md` | 效率信号 | 发现系统性瓶颈 |
|
|
203
|
+
|
|
204
|
+
### 预期效果
|
|
205
|
+
|
|
206
|
+
| 时间点 | 效果 |
|
|
207
|
+
|--------|------|
|
|
208
|
+
| 第 1 次 archive | ADR 建立,词汇表开始填充 |
|
|
209
|
+
| 第 3 次 archive | 首次触发进化,分类学开始个性化 |
|
|
210
|
+
| 第 5-10 次 | 澄清轮次减少,apply 意外减少 |
|
|
211
|
+
| 长期(20+次) | 项目知识库完备,AI 越来越了解项目 |
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
164
215
|
## 问题分类学
|
|
165
216
|
|
|
166
217
|
### 需求问题 (6个维度)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# 技术决策账本(Architecture Decision Records)
|
|
2
|
+
|
|
3
|
+
> **用途**: 记录项目中已做出的架构和技术决策,避免重复讨论已决定的事项。
|
|
4
|
+
> **更新时机**: 每次 archive 时,自动从复盘报告提取新决策追加。
|
|
5
|
+
>
|
|
6
|
+
> **如何消费**:
|
|
7
|
+
> - design 阶段:先查询此文件,已有决策不重复讨论
|
|
8
|
+
> - explore 阶段:比较技术方案时直接引用
|
|
9
|
+
> - propose 阶段:评估 Impact 时与已有决策对齐
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<!-- 格式:
|
|
14
|
+
## {决策标题} | 来源: {change-name} | 日期: {YYYY-MM-DD}
|
|
15
|
+
|
|
16
|
+
**选择**: 选了什么方案
|
|
17
|
+
**理由**: 为什么选择这个方案
|
|
18
|
+
**备选**: 考虑过哪些其他方案
|
|
19
|
+
**放弃原因**: 为什么放弃备选方案
|
|
20
|
+
**状态**: active / superseded / deprecated
|
|
21
|
+
-->
|
|
22
|
+
|
|
23
|
+
*暂无决策记录。第一次 archive 后将自动填充。*
|
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
schema: spec-driven
|
|
2
|
+
|
|
3
|
+
# =============================================================================
|
|
4
|
+
# OpenSpec 工作流增强配置 v5
|
|
5
|
+
# 交互式命令行澄清机制 + 完整进化体系(3层8维度)- 寄生模式
|
|
6
|
+
# =============================================================================
|
|
7
|
+
# ⚠️ 重要:本配置采用"寄生模式"增强 OpenSpec 核心流程
|
|
8
|
+
# 所有增强逻辑通过 context 和 rules 注入,不改变 OpenSpec schema
|
|
9
|
+
# =============================================================================
|
|
10
|
+
|
|
11
|
+
version: "5.0.1"
|
|
12
|
+
language: zh
|
|
13
|
+
|
|
14
|
+
# =============================================================================
|
|
15
|
+
# 前置条件检查清单(寄生增强)
|
|
16
|
+
# =============================================================================
|
|
17
|
+
#
|
|
18
|
+
# 以下检查项必须在创建对应 artifact 之前完成。
|
|
19
|
+
# 如果检查不通过,禁止继续。
|
|
20
|
+
#
|
|
21
|
+
context: |
|
|
22
|
+
## ⚠️ 强制前置检查清单(不完成禁止继续)
|
|
23
|
+
|
|
24
|
+
### 前置检查 1: 需求澄清
|
|
25
|
+
|
|
26
|
+
**检查项**: `spec/requirement-issues.md` 必须存在且状态为 `clarified`
|
|
27
|
+
|
|
28
|
+
**检查方法**:
|
|
29
|
+
1. 检查文件 `openspec/changes/{change-name}/spec/requirement-issues.md` 是否存在
|
|
30
|
+
2. 检查文件中的状态标记是否为 `clarified`
|
|
31
|
+
|
|
32
|
+
**如果不通过,执行以下流程**:
|
|
33
|
+
```
|
|
34
|
+
步骤 1: 读取 openspec/templates/requirement-issue-taxonomy.md
|
|
35
|
+
步骤 2: 分析需求,识别功能点(Capabilities)
|
|
36
|
+
步骤 3: 按 6 个维度检查每个功能点的问题
|
|
37
|
+
步骤 4: 创建 spec/requirement-issues.md,填充发现问题
|
|
38
|
+
步骤 5: 启动批量澄清(一次性提问)
|
|
39
|
+
- 将所有 High/Medium 问题组织为编号列表,一次性展示给用户
|
|
40
|
+
- 格式:"需要确认 N 个问题,请一并回答:\n1. [问题]\n 选项:A) ... B) ...\n2. ..."
|
|
41
|
+
- 等待用户一次性回答所有问题,不要逐题单独提交
|
|
42
|
+
- 收到完整回答后,统一同步到 requirement-issues.md
|
|
43
|
+
步骤 6: 确认所有 High 问题已澄清后,更新状态为 clarified
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**阻塞条件**: requirement-issues.md 不存在 或 状态 ≠ clarified → 禁止创建 proposal
|
|
47
|
+
|
|
48
|
+
### 前置检查 2: 设计澄清
|
|
49
|
+
|
|
50
|
+
**检查项**: `spec/design-issues.md` 必须存在且状态为 `clarified` 或 `resolved`
|
|
51
|
+
|
|
52
|
+
**执行时机**: AFTER creating design.md, BEFORE creating tasks
|
|
53
|
+
|
|
54
|
+
**如果不通过,执行类似的需求澄清流程**:
|
|
55
|
+
```
|
|
56
|
+
步骤 1: 读取 openspec/templates/design-issue-taxonomy.md
|
|
57
|
+
步骤 2: 按 7 个维度分析 design.md 的不确定性
|
|
58
|
+
步骤 3: 创建 spec/design-issues.md
|
|
59
|
+
步骤 4: 【强制用户确认——无论是否发现问题都必须执行】
|
|
60
|
+
使用 AskUserQuestion 工具,将分析结果呈现给用户并请求确认:
|
|
61
|
+
- 如果发现 High/Medium 问题:将所有问题组织为编号列表,一次性展示:
|
|
62
|
+
格式:"需要确认 N 个设计问题,请一并回答:\n1. [问题]\n 选项:A) ... B) ...\n2. ..."
|
|
63
|
+
- 如果未发现 High/Medium 问题:仍须展示分析摘要并确认:
|
|
64
|
+
格式:"设计分析完成,未发现高优先级问题。主要设计决策摘要如下:\n[列出关键决策]\n请确认以上设计,或提出任何顾虑/补充:"
|
|
65
|
+
- 等待用户回答,不得跳过此步骤
|
|
66
|
+
- 收到回答后,将用户意见同步到 design-issues.md
|
|
67
|
+
步骤 5: 根据澄清结果更新 design.md
|
|
68
|
+
步骤 6: 更新状态为 clarified
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**阻塞条件**: design-issues.md 不存在 或 状态 ∉ {clarified, resolved} → 禁止创建 tasks
|
|
72
|
+
|
|
73
|
+
### 为什么这些检查是强制的?
|
|
74
|
+
|
|
75
|
+
mspec 采用"寄生模式"增强 OpenSpec 核心流程:
|
|
76
|
+
- 不改变 OpenSpec schema(宿主透明)
|
|
77
|
+
- 通过前置条件检查注入增强逻辑
|
|
78
|
+
- 目的是捕获需求/设计中的不确定性,避免返工
|
|
79
|
+
|
|
80
|
+
如果跳过澄清阶段:
|
|
81
|
+
- AI 会基于假设进行实现
|
|
82
|
+
- 假设可能在后续被发现错误
|
|
83
|
+
- 导致代码返工、设计变更
|
|
84
|
+
- 违反"理解先于编码"原则
|
|
85
|
+
|
|
86
|
+
## 📚 问题分类学知识库(用于问题发现)
|
|
87
|
+
|
|
88
|
+
1. **需求问题分类学**: `openspec/templates/requirement-issue-taxonomy.md`
|
|
89
|
+
- 6 个维度:功能完整性、数据相关、用户体验、边界异常、集成依赖、优先级
|
|
90
|
+
|
|
91
|
+
2. **设计问题分类学**: `openspec/templates/design-issue-taxonomy.md`
|
|
92
|
+
- 7 个维度:架构决策、技术选型、接口设计、数据状态、安全合规、性能可靠性、部署运维
|
|
93
|
+
|
|
94
|
+
## 🔄 澄清流程状态机
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
需求澄清: discovering → clarifying → clarified → superseded
|
|
98
|
+
设计澄清: analyzing → clarifying → clarified → resolved
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 💬 交互式澄清配置
|
|
102
|
+
|
|
103
|
+
- **交互模式**: 批量提问——一次性列出所有 High/Medium 问题,等待用户统一回答
|
|
104
|
+
- **界面元素**: 编号问题列表,每题附带 2-4 个备选选项说明
|
|
105
|
+
- **同步策略**: 收到用户完整回答后,统一同步到问题清单(不在每题之后单独同步)
|
|
106
|
+
- **断点续传**: 支持 'q' 退出保存,下次自动从断点恢复
|
|
107
|
+
- **进度显示**: 在批量提问标题中显示总题数,如 "需要确认 5 个问题(2 High,3 Medium)"
|
|
108
|
+
- **操作指令**:
|
|
109
|
+
- 按编号回答每道题,一次性提交所有答案
|
|
110
|
+
- 输入 'q' 随时退出,进度将自动保存
|
|
111
|
+
|
|
112
|
+
## 📋 问题清单模板位置
|
|
113
|
+
|
|
114
|
+
- 功能点问题清单: `openspec/templates/requirement-issues.md`
|
|
115
|
+
- 设计问题清单: `openspec/templates/design-issues.md`
|
|
116
|
+
|
|
117
|
+
## ⚠️ 问题严重程度定义
|
|
118
|
+
|
|
119
|
+
- 🔴 High: 阻塞性问题,必须澄清后才能继续
|
|
120
|
+
- 🟡 Medium: 重要问题,建议澄清
|
|
121
|
+
- 🟢 Low: 建议性问题,可后续补充
|
|
122
|
+
|
|
123
|
+
## 🧬 完整进化体系(v5)
|
|
124
|
+
|
|
125
|
+
mspec 的知识积累分为三层,在 archive 时自动推进——**使用越久,整个 spec coding 流程越精准**:
|
|
126
|
+
|
|
127
|
+
**Layer A(每次 archive 立即更新)— 项目事实积累**
|
|
128
|
+
- `openspec/decisions/adr.md`:技术决策账本,防止反复讨论已决定的事
|
|
129
|
+
- `openspec/glossary.md`:领域词汇表,统一业务术语命名
|
|
130
|
+
- `openspec/risk-map.md`:风险图谱,记录已知高风险区和 bug 模式
|
|
131
|
+
|
|
132
|
+
**Layer B(积累 3+ 复盘后自动触发)— 流程模式学习**
|
|
133
|
+
- `openspec/templates/`:基于跨 change 漏检/噪音模式优化问题分类学
|
|
134
|
+
- `openspec/task-patterns/`:按 change 类型积累的任务分解模板库
|
|
135
|
+
- `openspec/config.yaml` user_preferences:记录用户的稳定决策偏好
|
|
136
|
+
|
|
137
|
+
**Layer C(长期积累,元信号)— 系统性洞察**
|
|
138
|
+
- `openspec/specs/CHANGELOG.md`:规格演化历史,揭示业务边界稳定性
|
|
139
|
+
- `openspec/metrics.md`:工作流效率信号,支持系统性优化
|
|
140
|
+
|
|
141
|
+
**AI 在各阶段如何消费知识库**:
|
|
142
|
+
- `explore`:读 ADR + Glossary + Risk Map → 引用已有决策、使用正确术语
|
|
143
|
+
- `propose`:读 Glossary + Task Patterns → Capabilities 命名一致、工作量参考
|
|
144
|
+
- `specs`:读 Glossary + Spec Changelog → 标准术语写 Scenario、避免历史错误
|
|
145
|
+
- `design`:读 ADR + Risk Map + Taxonomy → 不重复已决策、优先检查已知风险
|
|
146
|
+
- `tasks`:读 Task Patterns + Risk Map → 选模板定制、高风险区增加验证步骤
|
|
147
|
+
- `apply`:读 ADR + Risk Map → 遵循已有决策、高风险区主动预警
|
|
148
|
+
- `archive`:读取全部 → 更新全部 → 自动触发进化分析
|
|
149
|
+
|
|
150
|
+
# =============================================================================
|
|
151
|
+
# 阶段规则(与前置检查配合使用)
|
|
152
|
+
# =============================================================================
|
|
153
|
+
|
|
154
|
+
rules:
|
|
155
|
+
# ===========================================================================
|
|
156
|
+
# 阶段 1: 需求澄清 (在 proposal 之前)
|
|
157
|
+
# ===========================================================================
|
|
158
|
+
proposal:
|
|
159
|
+
# 强制前置检查
|
|
160
|
+
- |
|
|
161
|
+
⚠️ 强制性前置检查(MUST 执行):
|
|
162
|
+
|
|
163
|
+
BEFORE creating proposal:
|
|
164
|
+
1. MUST 检查 spec/requirement-issues.md 是否存在
|
|
165
|
+
2. MUST 检查状态是否为 clarified
|
|
166
|
+
3. 如果不满足以上条件,MUST 先执行前置检查 1: 需求澄清流程
|
|
167
|
+
4. ONLY THEN 创建 proposal
|
|
168
|
+
|
|
169
|
+
检查失败时的处理:
|
|
170
|
+
- 停止 artifacts 创建流程
|
|
171
|
+
- 启动交互式需求澄清
|
|
172
|
+
- 等待澄清完成后再继续
|
|
173
|
+
|
|
174
|
+
# 引用澄清结果
|
|
175
|
+
- |
|
|
176
|
+
创建 proposal 时引用澄清结果:
|
|
177
|
+
- 在 "Why" 部分说明需求澄清中发现的核心问题和决策
|
|
178
|
+
- 在 "What Changes" 部分反映澄清后的功能范围
|
|
179
|
+
- 在 "Capabilities" 部分确保与功能点问题清单中的功能点 ID 一致
|
|
180
|
+
- 在 "Impact" 部分体现澄清后的约束和依赖
|
|
181
|
+
|
|
182
|
+
# 质量门禁
|
|
183
|
+
- "🚫 禁止跳过: 如果 requirement-issues.md 不存在,禁止创建 proposal"
|
|
184
|
+
- "🚫 禁止跳过: 如果状态不是 clarified,禁止创建 proposal"
|
|
185
|
+
- "✅ 必须引用: proposal 中必须提及需求澄清中的关键决策"
|
|
186
|
+
|
|
187
|
+
# ===========================================================================
|
|
188
|
+
# 阶段 2: 需求规格 (specs)
|
|
189
|
+
# ===========================================================================
|
|
190
|
+
specs:
|
|
191
|
+
- |
|
|
192
|
+
创建 specs 时:
|
|
193
|
+
1. 参考 requirement-issues.md 中的功能点定义
|
|
194
|
+
2. 确保每个功能点的规格与澄清结果一致
|
|
195
|
+
3. 对于需求变更(MODIFIED/REMOVED/RENAMED),在问题清单中记录变更原因
|
|
196
|
+
|
|
197
|
+
# ===========================================================================
|
|
198
|
+
# 阶段 3: 技术方案 (design)
|
|
199
|
+
# ===========================================================================
|
|
200
|
+
design:
|
|
201
|
+
# 设计内容要求
|
|
202
|
+
- |
|
|
203
|
+
创建 design.md 时:
|
|
204
|
+
1. 确保技术决策明确,不回避关键问题
|
|
205
|
+
2. 每个技术决策必须包含:
|
|
206
|
+
- 选择了什么方案
|
|
207
|
+
- 为什么选择这个方案(决策理由)
|
|
208
|
+
- 考虑过哪些其他方案(备选方案)
|
|
209
|
+
- 为什么放弃其他方案
|
|
210
|
+
3. 特别注意 requirement-issues.md 中澄清的约束条件
|
|
211
|
+
|
|
212
|
+
# 后置强制检查
|
|
213
|
+
- |
|
|
214
|
+
⚠️ 强制性后置检查(MUST 执行):
|
|
215
|
+
|
|
216
|
+
AFTER creating design.md:
|
|
217
|
+
1. MUST 检查 spec/design-issues.md 是否存在
|
|
218
|
+
2. MUST 检查状态是否为 clarified 或 resolved
|
|
219
|
+
3. 如果不满足以上条件,MUST 先执行前置检查 2: 设计澄清流程
|
|
220
|
+
4. 根据澄清结果更新 design.md
|
|
221
|
+
5. ONLY THEN 创建 tasks
|
|
222
|
+
|
|
223
|
+
# 质量门禁
|
|
224
|
+
- "🚫 禁止跳过: 如果 design-issues.md 不存在,禁止创建 tasks"
|
|
225
|
+
- "🚫 禁止跳过: 如果状态不是 clarified/resloved,禁止创建 tasks"
|
|
226
|
+
|
|
227
|
+
# ===========================================================================
|
|
228
|
+
# 阶段 4: 实施任务 (tasks)
|
|
229
|
+
# ===========================================================================
|
|
230
|
+
tasks:
|
|
231
|
+
# 前置检查(冗余声明,确保不被遗漏)
|
|
232
|
+
- |
|
|
233
|
+
⚠️ 前置检查(再次确认):
|
|
234
|
+
BEFORE creating tasks:
|
|
235
|
+
1. 检查 spec/requirement-issues.md 状态为 clarified ✓
|
|
236
|
+
2. 检查 spec/design-issues.md 状态为 clarified 或 resolved ✓
|
|
237
|
+
3. 两个检查都通过后才能创建 tasks
|
|
238
|
+
|
|
239
|
+
- |
|
|
240
|
+
创建 tasks 时:
|
|
241
|
+
1. 基于最终确定的技术方案创建任务
|
|
242
|
+
2. 确保任务覆盖 design-issues.md 中所有 🔴 High 严重程度的决策
|
|
243
|
+
3. 如果设计澄清导致 design.md 重大变更,相应调整任务列表
|
|
244
|
+
4. 在任务描述中引用相关的设计决策(方便追溯)
|
|
245
|
+
|
|
246
|
+
# ===========================================================================
|
|
247
|
+
# 阶段 5: 实施 (apply)
|
|
248
|
+
# ===========================================================================
|
|
249
|
+
apply:
|
|
250
|
+
- |
|
|
251
|
+
实施前阅读参考文档:
|
|
252
|
+
- spec/requirement-issues.md:了解需求澄清中的决策
|
|
253
|
+
- spec/design-issues.md:了解设计澄清中的决策
|
|
254
|
+
|
|
255
|
+
- |
|
|
256
|
+
实施过程中:
|
|
257
|
+
1. 严格遵循需求澄清和设计澄清中的决策
|
|
258
|
+
2. 如果在实施中发现新的问题:
|
|
259
|
+
- 暂停实施
|
|
260
|
+
- 评估问题类型(需求问题 / 设计问题)
|
|
261
|
+
- 更新相应的问题清单
|
|
262
|
+
- 【可选】启动交互式澄清补充确认
|
|
263
|
+
- 等待澄清后再继续
|
|
264
|
+
3. 完成每个任务后立即用 "- [x]" 标记完成
|
|
265
|
+
|
|
266
|
+
- |
|
|
267
|
+
实施完成后的总结:
|
|
268
|
+
- 对比实际实施与澄清决策的一致性
|
|
269
|
+
- 记录实施过程中的任何偏差及原因
|
|
270
|
+
- 归档问题清单作为项目知识资产
|
|
271
|
+
|
|
272
|
+
- |
|
|
273
|
+
实施中的轻量观察(选做,提升复盘质量):
|
|
274
|
+
如果在实施过程中遇到以下情况,记录到 spec/retrospective-notes.md:
|
|
275
|
+
1. "当初澄清没有覆盖,但实际很重要"的问题 → 记录到【需求层面的意外】
|
|
276
|
+
2. "设计方案不明确,需要临时决策"的问题 → 记录到【设计层面的意外】
|
|
277
|
+
3. "某个澄清问题明确避免了返工" → 记录到【好的实践】
|
|
278
|
+
4. 发现高风险代码区域或意外的技术问题 → 记录到【风险事件】
|
|
279
|
+
这些记录将在归档时自动汇入复盘报告。
|
|
280
|
+
|
|
281
|
+
# ===========================================================================
|
|
282
|
+
# 阶段 6: 归档 (archive) — v5 进化体系
|
|
283
|
+
# ===========================================================================
|
|
284
|
+
archive:
|
|
285
|
+
# ─────────────────────────────────────────────────────────
|
|
286
|
+
# Step 1:生成复盘报告(MUST,归档前执行)
|
|
287
|
+
# ─────────────────────────────────────────────────────────
|
|
288
|
+
- |
|
|
289
|
+
BEFORE archiving,必须完成以下步骤:
|
|
290
|
+
|
|
291
|
+
1. 读取 spec/requirement-issues.md
|
|
292
|
+
2. 读取 spec/design-issues.md
|
|
293
|
+
3. 读取 spec/retrospective-notes.md(如存在)
|
|
294
|
+
4. 读取本次 design.md(用于提取技术决策)
|
|
295
|
+
5. 读取本次 proposal.md(用于提取新术语)
|
|
296
|
+
6. 在 openspec/retrospectives/ 目录下创建复盘报告:
|
|
297
|
+
文件名:{YYYY-MM-DD}-{change-name}.md
|
|
298
|
+
(目录不存在时先创建)
|
|
299
|
+
7. 复盘报告必须覆盖以下九个章节:
|
|
300
|
+
|
|
301
|
+
# 复盘报告 - {change-name}
|
|
302
|
+
**变更日期**: {YYYY-MM-DD}
|
|
303
|
+
**变更类型**: bug-fix / feature-add / refactor / config-update / 其他
|
|
304
|
+
**复盘状态**: `pending-review`
|
|
305
|
+
|
|
306
|
+
## 一、变更概述
|
|
307
|
+
- **做了什么**: 简述需求
|
|
308
|
+
- **实际结果**: 实施了什么,与预期是否一致
|
|
309
|
+
|
|
310
|
+
## 二、需求澄清质量(→ Layer B1 原料)
|
|
311
|
+
### 命中的关键问题(避免了返工)
|
|
312
|
+
| # | 问题 | 维度 | 为什么重要 |
|
|
313
|
+
### 无效问题(问了但实际不重要)
|
|
314
|
+
| # | 问题 | 维度 | 实际影响 |
|
|
315
|
+
### 漏检问题(实施中才暴露)
|
|
316
|
+
| # | 问题 | 建议归入哪个维度 | 重要性 |
|
|
317
|
+
|
|
318
|
+
## 三、设计澄清质量(→ Layer B1 原料)
|
|
319
|
+
### 命中的关键决策
|
|
320
|
+
| # | 问题 | 维度 | 为什么重要 |
|
|
321
|
+
### 过度担心的问题(实际无关紧要)
|
|
322
|
+
| # | 问题 | 维度 | 实际影响 |
|
|
323
|
+
### 漏检的设计盲点(实施中才发现)
|
|
324
|
+
| # | 问题 | 建议归入哪个维度 | 涉及代码区域 |
|
|
325
|
+
|
|
326
|
+
## 四、技术决策(→ Layer A1:ADR 更新原料)
|
|
327
|
+
| 决策 | 选择了什么 | 为什么 | 考虑过哪些备选 |
|
|
328
|
+
|
|
329
|
+
## 五、领域词汇(→ Layer A2:词汇表更新原料)
|
|
330
|
+
| 术语 | 定义 | 首次出现场景 |
|
|
331
|
+
|
|
332
|
+
## 六、风险事件(→ Layer A3:风险图谱更新原料)
|
|
333
|
+
| 事件描述 | 涉及代码区域/模块 | 问题类型 | 是否已在风险图谱中 |
|
|
334
|
+
|
|
335
|
+
## 七、实施观察(来自 retrospective-notes.md)
|
|
336
|
+
{如有,复制 retrospective-notes.md 内容;无则填"无"}
|
|
337
|
+
|
|
338
|
+
## 八、效率信号(→ Layer C2:指标原料)
|
|
339
|
+
| 项目 | 值 |
|
|
340
|
+
| 需求澄清轮次 | |
|
|
341
|
+
| 设计澄清轮次 | |
|
|
342
|
+
| apply 暂停次数 | |
|
|
343
|
+
| 最终任务总数 | |
|
|
344
|
+
|
|
345
|
+
## 九、综合评分
|
|
346
|
+
| 维度 | 评分(1-5) |
|
|
347
|
+
| 需求识别准确率 | |
|
|
348
|
+
| 设计识别准确率 | |
|
|
349
|
+
| 澄清效率 | |
|
|
350
|
+
| 实施中意外问题数(越少越好) | |
|
|
351
|
+
|
|
352
|
+
8. 向用户展示复盘摘要(5-8 行),然后继续执行归档
|
|
353
|
+
|
|
354
|
+
# ─────────────────────────────────────────────────────────
|
|
355
|
+
# Step 2:Layer A 立即更新(每次 archive 执行)
|
|
356
|
+
# ─────────────────────────────────────────────────────────
|
|
357
|
+
- |
|
|
358
|
+
AFTER archiving,立即更新项目知识库:
|
|
359
|
+
|
|
360
|
+
A1. 技术决策账本(ADR):
|
|
361
|
+
- 读取复盘报告"四、技术决策"章节
|
|
362
|
+
- 如有新决策,追加到 openspec/decisions/adr.md
|
|
363
|
+
格式:## {决策标题} | 来源: {change-name} | 日期: {date}
|
|
364
|
+
**选择**: {选了什么}
|
|
365
|
+
**理由**: {为什么}
|
|
366
|
+
**备选**: {考虑过哪些}
|
|
367
|
+
**状态**: active
|
|
368
|
+
- 如文件不存在,先创建(参考 openspec/templates/adr.md 格式)
|
|
369
|
+
|
|
370
|
+
A2. 领域词汇表:
|
|
371
|
+
- 读取复盘报告"五、领域词汇"章节
|
|
372
|
+
- 如有新术语,追加到 openspec/glossary.md
|
|
373
|
+
- 如文件不存在,先创建(参考 openspec/templates/glossary.md 格式)
|
|
374
|
+
|
|
375
|
+
A3. 风险图谱:
|
|
376
|
+
- 读取复盘报告"六、风险事件"章节
|
|
377
|
+
- 如有新风险事件,追加到 openspec/risk-map.md 的对应分区
|
|
378
|
+
("代码热点"或"问题模式")
|
|
379
|
+
- 如文件不存在,先创建(参考 openspec/templates/risk-map.md 格式)
|
|
380
|
+
|
|
381
|
+
C1. 规格演化日志(如本次有 delta spec sync):
|
|
382
|
+
- 将 delta spec 的变更(改了什么 + 为什么)追加到 openspec/specs/CHANGELOG.md
|
|
383
|
+
- 如文件不存在,先创建并写入标题行
|
|
384
|
+
|
|
385
|
+
C2. 效率指标:
|
|
386
|
+
- 将复盘报告"八、效率信号"的数据追加到 openspec/metrics.md
|
|
387
|
+
格式:| {date} | {change-name} | {change-type} | {需求澄清轮次} | {设计澄清轮次} | {暂停次数} | {任务数} |
|
|
388
|
+
- 如文件不存在,先创建并写入表头
|
|
389
|
+
|
|
390
|
+
# ─────────────────────────────────────────────────────────
|
|
391
|
+
# Step 3:Layer B 模式分析(达到阈值时触发,完全自发)
|
|
392
|
+
# ─────────────────────────────────────────────────────────
|
|
393
|
+
- |
|
|
394
|
+
Layer B 进化分析(自发触发):
|
|
395
|
+
|
|
396
|
+
1. 统计 openspec/retrospectives/ 下 pending-review 状态复盘文件数 N
|
|
397
|
+
(不含 accumulated-insights.md)
|
|
398
|
+
|
|
399
|
+
2. 如果 N < 3:
|
|
400
|
+
提示:「✅ 归档完成,项目知识库已更新。复盘已保存(第 N 个)。
|
|
401
|
+
还需 {3-N} 个复盘后将自动触发模式分析与进化。」
|
|
402
|
+
结束。
|
|
403
|
+
|
|
404
|
+
3. 如果 N ≥ 3,执行以下进化分析:
|
|
405
|
+
|
|
406
|
+
a. 读取所有 pending-review 复盘文件
|
|
407
|
+
|
|
408
|
+
b. 分析以下模式(仅当出现 2+ 次视为显著):
|
|
409
|
+
- 【B1: 问题分类学】哪些"漏检问题"反复出现?哪些"无效问题"反复出现?
|
|
410
|
+
- 【B2: 任务模式】同类型 change 的任务结构是否有共性?哪些步骤总被遗漏?
|
|
411
|
+
- 【B3: 用户偏好】是否发现稳定的决策/交互偏好值得记录到 config.yaml?
|
|
412
|
+
|
|
413
|
+
c. 生成/更新 openspec/retrospectives/accumulated-insights.md
|
|
414
|
+
记录本次分析的发现和具体优化建议
|
|
415
|
+
|
|
416
|
+
d. 【强制用户确认】使用 AskUserQuestion 工具,展示进化提案:
|
|
417
|
+
「🧬 进化分析完成!基于 N 个复盘,发现以下优化机会:
|
|
418
|
+
|
|
419
|
+
📚 问题分类学优化(X 条):
|
|
420
|
+
1. [新增到需求分类学/边界与异常] "XX" 问题(N 个复盘漏检)
|
|
421
|
+
2. [从设计分类学删除] "YY" 问题(N 个复盘均标记为噪音)
|
|
422
|
+
...
|
|
423
|
+
|
|
424
|
+
📋 任务模板优化(Y 条):
|
|
425
|
+
1. [新建 feature-add 任务模板](基于 3 次 feature change 的共性结构)
|
|
426
|
+
2. [在 bug-fix 模板中增加"回归验证"步骤](2 次被遗漏)
|
|
427
|
+
...
|
|
428
|
+
|
|
429
|
+
⚙️ 偏好/规则优化(Z 条):
|
|
430
|
+
1. [建议记录用户偏好] 观察到你通常选择保守技术方案...
|
|
431
|
+
...
|
|
432
|
+
|
|
433
|
+
是否现在应用以上优化?
|
|
434
|
+
A) 全部应用
|
|
435
|
+
B) 部分应用(请说明保留/跳过哪些)
|
|
436
|
+
C) 暂不应用(下次归档时再次提醒)」
|
|
437
|
+
|
|
438
|
+
e. 等待用户回答
|
|
439
|
+
|
|
440
|
+
f. 根据用户选择:
|
|
441
|
+
- A(全部应用):
|
|
442
|
+
· 更新 openspec/templates/requirement-issue-taxonomy.md(B1)
|
|
443
|
+
· 更新 openspec/templates/design-issue-taxonomy.md(B1)
|
|
444
|
+
· 更新/创建 openspec/task-patterns/ 下对应文件(B2)
|
|
445
|
+
· 如有偏好建议:更新 openspec/config.yaml 的 user_preferences(B3)
|
|
446
|
+
· 将已分析复盘文件状态改为 incorporated
|
|
447
|
+
· 提示:「✅ 进化完成!知识库已更新,下次流程将更精准。」
|
|
448
|
+
|
|
449
|
+
- B(部分应用):
|
|
450
|
+
· 仅应用用户确认的条目
|
|
451
|
+
· 未应用条目记入 accumulated-insights.md 的"待定区"
|
|
452
|
+
|
|
453
|
+
- C(暂不应用):
|
|
454
|
+
· 保持 pending-review,下次归档时重新评估
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# 领域词汇表(Domain Glossary)
|
|
2
|
+
|
|
3
|
+
> **用途**: 项目中稳定使用的业务术语、技术概念的标准定义,以及 Capability 命名规范。
|
|
4
|
+
> **更新时机**: 每次 archive 时,自动从 proposal 的 Capabilities 章节提取新术语追加。
|
|
5
|
+
>
|
|
6
|
+
> **如何消费**:
|
|
7
|
+
> - propose 阶段:Capabilities 命名时复用标准术语保持一致
|
|
8
|
+
> - specs 阶段:Scenario 中使用标准术语,减少歧义
|
|
9
|
+
> - 新成员加入时:快速建立项目语言认知
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<!-- 格式:
|
|
14
|
+
## {术语}
|
|
15
|
+
|
|
16
|
+
**定义**: 一句话定义
|
|
17
|
+
**首次出现**: {change-name}({date})
|
|
18
|
+
**相关术语**: 与哪些其他术语有关联
|
|
19
|
+
**备注**: 如有歧义或特殊用法说明
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
-->
|
|
23
|
+
|
|
24
|
+
*暂无词汇记录。第一次 archive 后将自动填充。*
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 实施观察笔记
|
|
2
|
+
|
|
3
|
+
> **用途**: 在实施(apply)阶段记录轻量观察,归档时自动汇入复盘报告。
|
|
4
|
+
> **何时填写**: 当以下情况发生时,随手记录。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 需求层面的意外
|
|
9
|
+
|
|
10
|
+
> 当初澄清没有覆盖,但实际很重要的问题。
|
|
11
|
+
> 填写格式:描述问题 + 影响
|
|
12
|
+
|
|
13
|
+
- (无)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 设计层面的意外
|
|
18
|
+
|
|
19
|
+
> 设计方案不明确,需要临时决策的问题。
|
|
20
|
+
> 填写格式:描述问题 + 临时决策
|
|
21
|
+
|
|
22
|
+
- (无)
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 好的实践
|
|
27
|
+
|
|
28
|
+
> 某个澄清问题明确避免了返工的情况。
|
|
29
|
+
> 填写格式:哪个问题 + 避免了什么
|
|
30
|
+
|
|
31
|
+
- (无)
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 风险事件
|
|
36
|
+
|
|
37
|
+
> 发现高风险代码区域或意外的技术问题。
|
|
38
|
+
> 填写格式:描述问题 + 涉及区域/模块
|
|
39
|
+
|
|
40
|
+
- (无)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 风险图谱(Risk Map)
|
|
2
|
+
|
|
3
|
+
> **用途**: 记录项目中已知的高风险代码区域、高频 bug 模式,以及历史上实际发生的实施问题。
|
|
4
|
+
> **更新时机**: 每次 archive 时,从复盘报告"六、风险事件"章节提取新发现追加。
|
|
5
|
+
>
|
|
6
|
+
> **如何消费**:
|
|
7
|
+
> - design 阶段:优先检查已知风险区域
|
|
8
|
+
> - tasks 阶段:高风险区任务自动细化粒度、增加验证步骤
|
|
9
|
+
> - apply 阶段:进入高风险区时主动预警
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 代码热点
|
|
14
|
+
|
|
15
|
+
> 历史上频繁变更或容易出问题的代码区域。
|
|
16
|
+
|
|
17
|
+
<!-- 格式:
|
|
18
|
+
### {模块/文件路径}
|
|
19
|
+
|
|
20
|
+
**风险类型**: 频繁变更 / 并发问题 / 边界复杂 / 依赖脆弱 / 其他
|
|
21
|
+
**历史问题**: 具体描述
|
|
22
|
+
**首次记录**: {change-name}({date})
|
|
23
|
+
**注意事项**: 处理时需要特别关注的点
|
|
24
|
+
-->
|
|
25
|
+
|
|
26
|
+
*暂无记录。第一次 archive 后将自动填充。*
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 问题模式
|
|
31
|
+
|
|
32
|
+
> 在多个 change 中反复出现的问题类型。
|
|
33
|
+
|
|
34
|
+
<!-- 格式:
|
|
35
|
+
### {问题模式名称}
|
|
36
|
+
|
|
37
|
+
**描述**: 什么情况下会触发
|
|
38
|
+
**影响范围**: 影响哪些功能/模块
|
|
39
|
+
**出现次数**: N 次(最近一次: {change-name})
|
|
40
|
+
**预防措施**: 如何在下次避免
|
|
41
|
+
-->
|
|
42
|
+
|
|
43
|
+
*暂无记录。第一次 archive 后将自动填充。*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mspec-cli
|
|
3
|
-
Version:
|
|
3
|
+
Version: 5.0.1
|
|
4
4
|
Summary: mspec-cli(Member Spec)- 会员组规范驱动开发工作流 CLI 工具
|
|
5
5
|
Author-email: shirayner <team@mspec.io>
|
|
6
6
|
License: MIT
|
|
@@ -45,7 +45,7 @@ Dynamic: license-file
|
|
|
45
45
|
|
|
46
46
|
**mspec-cli**(Member Spec)- 会员组规范驱动开发工作流 CLI 工具
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
通过交互式命令行澄清机制,实现结构化问题发现与澄清;通过自发进化体系,使 AI 随着项目积累越来越了解你的项目。
|
|
49
49
|
|
|
50
50
|
## 特性
|
|
51
51
|
|
|
@@ -53,6 +53,7 @@ Dynamic: license-file
|
|
|
53
53
|
- 🔄 **批量式澄清** - 一次性列出所有问题,统一回答,高效不拖沓
|
|
54
54
|
- 💾 **断点续传** - 支持随时中断,下次自动恢复
|
|
55
55
|
- 📚 **结构化问题分类** - 6个需求维度 + 7个设计维度
|
|
56
|
+
- 🧬 **自发进化体系** - 使用越久,整个 spec coding 流程越精准
|
|
56
57
|
- 🎨 **美观界面** - 使用 Rich 库提供彩色终端输出
|
|
57
58
|
|
|
58
59
|
## 文档
|
|
@@ -197,9 +198,59 @@ mspec doctor
|
|
|
197
198
|
└─────────────────────────────────────┘
|
|
198
199
|
│
|
|
199
200
|
▼
|
|
200
|
-
|
|
201
|
+
┌─────────────────────────────────────┐
|
|
202
|
+
│ 实施 (apply) │
|
|
203
|
+
│ - 按任务清单逐步实施 │
|
|
204
|
+
│ - 可选:记录实施中的轻量观察 │
|
|
205
|
+
└─────────────────────────────────────┘
|
|
206
|
+
│
|
|
207
|
+
▼
|
|
208
|
+
┌─────────────────────────────────────┐
|
|
209
|
+
│ 归档 (archive) + 进化 │
|
|
210
|
+
│ - 生成复盘报告(9个维度) │
|
|
211
|
+
│ - 更新项目知识库(ADR/词汇/风险) │
|
|
212
|
+
│ - 积累 3 次后自动触发进化分析 │
|
|
213
|
+
└─────────────────────────────────────┘
|
|
201
214
|
```
|
|
202
215
|
|
|
216
|
+
## 🧬 进化体系
|
|
217
|
+
|
|
218
|
+
mspec 内置 3层8维度 的完整进化体系,无需额外命令,每次 archive 自动推进:
|
|
219
|
+
|
|
220
|
+
### Layer A — 项目事实(每次立即更新)
|
|
221
|
+
|
|
222
|
+
| 文件 | 内容 | 作用 |
|
|
223
|
+
|------|------|------|
|
|
224
|
+
| `openspec/decisions/adr.md` | 技术决策账本 | 不重复讨论已决定的事 |
|
|
225
|
+
| `openspec/glossary.md` | 领域词汇表 | 统一业务术语命名 |
|
|
226
|
+
| `openspec/risk-map.md` | 风险图谱 | 已知高风险区和 bug 模式 |
|
|
227
|
+
|
|
228
|
+
### Layer B — 流程模式(积累 3+ 次后自动触发)
|
|
229
|
+
|
|
230
|
+
| 文件 | 内容 | 作用 |
|
|
231
|
+
|------|------|------|
|
|
232
|
+
| `openspec/templates/*.md` | 进化后的问题分类学 | 精准识别项目特有问题 |
|
|
233
|
+
| `openspec/task-patterns/` | 任务模板库 | 按 change 类型分解任务 |
|
|
234
|
+
| `openspec/config.yaml` | 用户偏好档案 | 减少重复对齐 |
|
|
235
|
+
|
|
236
|
+
### Layer C — 元信号(长期积累)
|
|
237
|
+
|
|
238
|
+
| 文件 | 内容 | 作用 |
|
|
239
|
+
|------|------|------|
|
|
240
|
+
| `openspec/specs/CHANGELOG.md` | 规格演化日志 | 揭示业务边界稳定性 |
|
|
241
|
+
| `openspec/metrics.md` | 效率信号 | 发现系统性瓶颈 |
|
|
242
|
+
|
|
243
|
+
### 预期效果
|
|
244
|
+
|
|
245
|
+
| 时间点 | 效果 |
|
|
246
|
+
|--------|------|
|
|
247
|
+
| 第 1 次 archive | ADR 建立,词汇表开始填充 |
|
|
248
|
+
| 第 3 次 archive | 首次触发进化,分类学开始个性化 |
|
|
249
|
+
| 第 5-10 次 | 澄清轮次减少,apply 意外减少 |
|
|
250
|
+
| 长期(20+次) | 项目知识库完备,AI 越来越了解项目 |
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
203
254
|
## 问题分类学
|
|
204
255
|
|
|
205
256
|
### 需求问题 (6个维度)
|
|
@@ -13,11 +13,15 @@ src/mspec/core/__init__.py
|
|
|
13
13
|
src/mspec/core/config.py
|
|
14
14
|
src/mspec/core/openspec_manager.py
|
|
15
15
|
src/mspec/core/template.py
|
|
16
|
+
src/mspec/templates/adr.md
|
|
16
17
|
src/mspec/templates/config.yaml
|
|
17
18
|
src/mspec/templates/design-issue-taxonomy.md
|
|
18
19
|
src/mspec/templates/design-issues.md
|
|
20
|
+
src/mspec/templates/glossary.md
|
|
19
21
|
src/mspec/templates/requirement-issue-taxonomy.md
|
|
20
22
|
src/mspec/templates/requirement-issues.md
|
|
23
|
+
src/mspec/templates/retrospective-notes.md
|
|
24
|
+
src/mspec/templates/risk-map.md
|
|
21
25
|
src/mspec/utils/__init__.py
|
|
22
26
|
src/mspec/utils/console.py
|
|
23
27
|
src/mspec_cli.egg-info/PKG-INFO
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
schema: spec-driven
|
|
2
|
-
|
|
3
|
-
# =============================================================================
|
|
4
|
-
# OpenSpec 工作流增强配置 v4
|
|
5
|
-
# 交互式命令行澄清机制 - 寄生模式
|
|
6
|
-
# =============================================================================
|
|
7
|
-
# ⚠️ 重要:本配置采用"寄生模式"增强 OpenSpec 核心流程
|
|
8
|
-
# 所有增强逻辑通过 context 和 rules 注入,不改变 OpenSpec schema
|
|
9
|
-
# =============================================================================
|
|
10
|
-
|
|
11
|
-
version: "4.0.0"
|
|
12
|
-
language: zh
|
|
13
|
-
|
|
14
|
-
# =============================================================================
|
|
15
|
-
# 前置条件检查清单(寄生增强)
|
|
16
|
-
# =============================================================================
|
|
17
|
-
#
|
|
18
|
-
# 以下检查项必须在创建对应 artifact 之前完成。
|
|
19
|
-
# 如果检查不通过,禁止继续。
|
|
20
|
-
#
|
|
21
|
-
context: |
|
|
22
|
-
## ⚠️ 强制前置检查清单(不完成禁止继续)
|
|
23
|
-
|
|
24
|
-
### 前置检查 1: 需求澄清
|
|
25
|
-
|
|
26
|
-
**检查项**: `spec/requirement-issues.md` 必须存在且状态为 `clarified`
|
|
27
|
-
|
|
28
|
-
**检查方法**:
|
|
29
|
-
1. 检查文件 `openspec/changes/{change-name}/spec/requirement-issues.md` 是否存在
|
|
30
|
-
2. 检查文件中的状态标记是否为 `clarified`
|
|
31
|
-
|
|
32
|
-
**如果不通过,执行以下流程**:
|
|
33
|
-
```
|
|
34
|
-
步骤 1: 读取 openspec/templates/requirement-issue-taxonomy.md
|
|
35
|
-
步骤 2: 分析需求,识别功能点(Capabilities)
|
|
36
|
-
步骤 3: 按 6 个维度检查每个功能点的问题
|
|
37
|
-
步骤 4: 创建 spec/requirement-issues.md,填充发现问题
|
|
38
|
-
步骤 5: 启动批量澄清(一次性提问)
|
|
39
|
-
- 将所有 High/Medium 问题组织为编号列表,一次性展示给用户
|
|
40
|
-
- 格式:"需要确认 N 个问题,请一并回答:\n1. [问题]\n 选项:A) ... B) ...\n2. ..."
|
|
41
|
-
- 等待用户一次性回答所有问题,不要逐题单独提交
|
|
42
|
-
- 收到完整回答后,统一同步到 requirement-issues.md
|
|
43
|
-
步骤 6: 确认所有 High 问题已澄清后,更新状态为 clarified
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**阻塞条件**: requirement-issues.md 不存在 或 状态 ≠ clarified → 禁止创建 proposal
|
|
47
|
-
|
|
48
|
-
### 前置检查 2: 设计澄清
|
|
49
|
-
|
|
50
|
-
**检查项**: `spec/design-issues.md` 必须存在且状态为 `clarified` 或 `resolved`
|
|
51
|
-
|
|
52
|
-
**执行时机**: AFTER creating design.md, BEFORE creating tasks
|
|
53
|
-
|
|
54
|
-
**如果不通过,执行类似的需求澄清流程**:
|
|
55
|
-
```
|
|
56
|
-
步骤 1: 读取 openspec/templates/design-issue-taxonomy.md
|
|
57
|
-
步骤 2: 按 7 个维度分析 design.md 的不确定性
|
|
58
|
-
步骤 3: 创建 spec/design-issues.md
|
|
59
|
-
步骤 4: 【强制用户确认——无论是否发现问题都必须执行】
|
|
60
|
-
使用 AskUserQuestion 工具,将分析结果呈现给用户并请求确认:
|
|
61
|
-
- 如果发现 High/Medium 问题:将所有问题组织为编号列表,一次性展示:
|
|
62
|
-
格式:"需要确认 N 个设计问题,请一并回答:\n1. [问题]\n 选项:A) ... B) ...\n2. ..."
|
|
63
|
-
- 如果未发现 High/Medium 问题:仍须展示分析摘要并确认:
|
|
64
|
-
格式:"设计分析完成,未发现高优先级问题。主要设计决策摘要如下:\n[列出关键决策]\n请确认以上设计,或提出任何顾虑/补充:"
|
|
65
|
-
- 等待用户回答,不得跳过此步骤
|
|
66
|
-
- 收到回答后,将用户意见同步到 design-issues.md
|
|
67
|
-
步骤 5: 根据澄清结果更新 design.md
|
|
68
|
-
步骤 6: 更新状态为 clarified
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
**阻塞条件**: design-issues.md 不存在 或 状态 ∉ {clarified, resolved} → 禁止创建 tasks
|
|
72
|
-
|
|
73
|
-
### 为什么这些检查是强制的?
|
|
74
|
-
|
|
75
|
-
mspec 采用"寄生模式"增强 OpenSpec 核心流程:
|
|
76
|
-
- 不改变 OpenSpec schema(宿主透明)
|
|
77
|
-
- 通过前置条件检查注入增强逻辑
|
|
78
|
-
- 目的是捕获需求/设计中的不确定性,避免返工
|
|
79
|
-
|
|
80
|
-
如果跳过澄清阶段:
|
|
81
|
-
- AI 会基于假设进行实现
|
|
82
|
-
- 假设可能在后续被发现错误
|
|
83
|
-
- 导致代码返工、设计变更
|
|
84
|
-
- 违反"理解先于编码"原则
|
|
85
|
-
|
|
86
|
-
## 📚 问题分类学知识库(用于问题发现)
|
|
87
|
-
|
|
88
|
-
1. **需求问题分类学**: `openspec/templates/requirement-issue-taxonomy.md`
|
|
89
|
-
- 6 个维度:功能完整性、数据相关、用户体验、边界异常、集成依赖、优先级
|
|
90
|
-
|
|
91
|
-
2. **设计问题分类学**: `openspec/templates/design-issue-taxonomy.md`
|
|
92
|
-
- 7 个维度:架构决策、技术选型、接口设计、数据状态、安全合规、性能可靠性、部署运维
|
|
93
|
-
|
|
94
|
-
## 🔄 澄清流程状态机
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
需求澄清: discovering → clarifying → clarified → superseded
|
|
98
|
-
设计澄清: analyzing → clarifying → clarified → resolved
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## 💬 交互式澄清配置
|
|
102
|
-
|
|
103
|
-
- **交互模式**: 批量提问——一次性列出所有 High/Medium 问题,等待用户统一回答
|
|
104
|
-
- **界面元素**: 编号问题列表,每题附带 2-4 个备选选项说明
|
|
105
|
-
- **同步策略**: 收到用户完整回答后,统一同步到问题清单(不在每题之后单独同步)
|
|
106
|
-
- **断点续传**: 支持 'q' 退出保存,下次自动从断点恢复
|
|
107
|
-
- **进度显示**: 在批量提问标题中显示总题数,如 "需要确认 5 个问题(2 High,3 Medium)"
|
|
108
|
-
- **操作指令**:
|
|
109
|
-
- 按编号回答每道题,一次性提交所有答案
|
|
110
|
-
- 输入 'q' 随时退出,进度将自动保存
|
|
111
|
-
|
|
112
|
-
## 📋 问题清单模板位置
|
|
113
|
-
|
|
114
|
-
- 功能点问题清单: `openspec/templates/requirement-issues.md`
|
|
115
|
-
- 设计问题清单: `openspec/templates/design-issues.md`
|
|
116
|
-
|
|
117
|
-
## ⚠️ 问题严重程度定义
|
|
118
|
-
|
|
119
|
-
- 🔴 High: 阻塞性问题,必须澄清后才能继续
|
|
120
|
-
- 🟡 Medium: 重要问题,建议澄清
|
|
121
|
-
- 🟢 Low: 建议性问题,可后续补充
|
|
122
|
-
|
|
123
|
-
# =============================================================================
|
|
124
|
-
# 阶段规则(与前置检查配合使用)
|
|
125
|
-
# =============================================================================
|
|
126
|
-
|
|
127
|
-
rules:
|
|
128
|
-
# ===========================================================================
|
|
129
|
-
# 阶段 1: 需求澄清 (在 proposal 之前)
|
|
130
|
-
# ===========================================================================
|
|
131
|
-
proposal:
|
|
132
|
-
# 强制前置检查
|
|
133
|
-
- |
|
|
134
|
-
⚠️ 强制性前置检查(MUST 执行):
|
|
135
|
-
|
|
136
|
-
BEFORE creating proposal:
|
|
137
|
-
1. MUST 检查 spec/requirement-issues.md 是否存在
|
|
138
|
-
2. MUST 检查状态是否为 clarified
|
|
139
|
-
3. 如果不满足以上条件,MUST 先执行前置检查 1: 需求澄清流程
|
|
140
|
-
4. ONLY THEN 创建 proposal
|
|
141
|
-
|
|
142
|
-
检查失败时的处理:
|
|
143
|
-
- 停止 artifacts 创建流程
|
|
144
|
-
- 启动交互式需求澄清
|
|
145
|
-
- 等待澄清完成后再继续
|
|
146
|
-
|
|
147
|
-
# 引用澄清结果
|
|
148
|
-
- |
|
|
149
|
-
创建 proposal 时引用澄清结果:
|
|
150
|
-
- 在 "Why" 部分说明需求澄清中发现的核心问题和决策
|
|
151
|
-
- 在 "What Changes" 部分反映澄清后的功能范围
|
|
152
|
-
- 在 "Capabilities" 部分确保与功能点问题清单中的功能点 ID 一致
|
|
153
|
-
- 在 "Impact" 部分体现澄清后的约束和依赖
|
|
154
|
-
|
|
155
|
-
# 质量门禁
|
|
156
|
-
- "🚫 禁止跳过: 如果 requirement-issues.md 不存在,禁止创建 proposal"
|
|
157
|
-
- "🚫 禁止跳过: 如果状态不是 clarified,禁止创建 proposal"
|
|
158
|
-
- "✅ 必须引用: proposal 中必须提及需求澄清中的关键决策"
|
|
159
|
-
|
|
160
|
-
# ===========================================================================
|
|
161
|
-
# 阶段 2: 需求规格 (specs)
|
|
162
|
-
# ===========================================================================
|
|
163
|
-
specs:
|
|
164
|
-
- |
|
|
165
|
-
创建 specs 时:
|
|
166
|
-
1. 参考 requirement-issues.md 中的功能点定义
|
|
167
|
-
2. 确保每个功能点的规格与澄清结果一致
|
|
168
|
-
3. 对于需求变更(MODIFIED/REMOVED/RENAMED),在问题清单中记录变更原因
|
|
169
|
-
|
|
170
|
-
# ===========================================================================
|
|
171
|
-
# 阶段 3: 技术方案 (design)
|
|
172
|
-
# ===========================================================================
|
|
173
|
-
design:
|
|
174
|
-
# 设计内容要求
|
|
175
|
-
- |
|
|
176
|
-
创建 design.md 时:
|
|
177
|
-
1. 确保技术决策明确,不回避关键问题
|
|
178
|
-
2. 每个技术决策必须包含:
|
|
179
|
-
- 选择了什么方案
|
|
180
|
-
- 为什么选择这个方案(决策理由)
|
|
181
|
-
- 考虑过哪些其他方案(备选方案)
|
|
182
|
-
- 为什么放弃其他方案
|
|
183
|
-
3. 特别注意 requirement-issues.md 中澄清的约束条件
|
|
184
|
-
|
|
185
|
-
# 后置强制检查
|
|
186
|
-
- |
|
|
187
|
-
⚠️ 强制性后置检查(MUST 执行):
|
|
188
|
-
|
|
189
|
-
AFTER creating design.md:
|
|
190
|
-
1. MUST 检查 spec/design-issues.md 是否存在
|
|
191
|
-
2. MUST 检查状态是否为 clarified 或 resolved
|
|
192
|
-
3. 如果不满足以上条件,MUST 先执行前置检查 2: 设计澄清流程
|
|
193
|
-
4. 根据澄清结果更新 design.md
|
|
194
|
-
5. ONLY THEN 创建 tasks
|
|
195
|
-
|
|
196
|
-
# 质量门禁
|
|
197
|
-
- "🚫 禁止跳过: 如果 design-issues.md 不存在,禁止创建 tasks"
|
|
198
|
-
- "🚫 禁止跳过: 如果状态不是 clarified/resloved,禁止创建 tasks"
|
|
199
|
-
|
|
200
|
-
# ===========================================================================
|
|
201
|
-
# 阶段 4: 实施任务 (tasks)
|
|
202
|
-
# ===========================================================================
|
|
203
|
-
tasks:
|
|
204
|
-
# 前置检查(冗余声明,确保不被遗漏)
|
|
205
|
-
- |
|
|
206
|
-
⚠️ 前置检查(再次确认):
|
|
207
|
-
BEFORE creating tasks:
|
|
208
|
-
1. 检查 spec/requirement-issues.md 状态为 clarified ✓
|
|
209
|
-
2. 检查 spec/design-issues.md 状态为 clarified 或 resolved ✓
|
|
210
|
-
3. 两个检查都通过后才能创建 tasks
|
|
211
|
-
|
|
212
|
-
- |
|
|
213
|
-
创建 tasks 时:
|
|
214
|
-
1. 基于最终确定的技术方案创建任务
|
|
215
|
-
2. 确保任务覆盖 design-issues.md 中所有 🔴 High 严重程度的决策
|
|
216
|
-
3. 如果设计澄清导致 design.md 重大变更,相应调整任务列表
|
|
217
|
-
4. 在任务描述中引用相关的设计决策(方便追溯)
|
|
218
|
-
|
|
219
|
-
# ===========================================================================
|
|
220
|
-
# 阶段 5: 实施 (apply)
|
|
221
|
-
# ===========================================================================
|
|
222
|
-
apply:
|
|
223
|
-
- |
|
|
224
|
-
实施前阅读参考文档:
|
|
225
|
-
- spec/requirement-issues.md:了解需求澄清中的决策
|
|
226
|
-
- spec/design-issues.md:了解设计澄清中的决策
|
|
227
|
-
|
|
228
|
-
- |
|
|
229
|
-
实施过程中:
|
|
230
|
-
1. 严格遵循需求澄清和设计澄清中的决策
|
|
231
|
-
2. 如果在实施中发现新的问题:
|
|
232
|
-
- 暂停实施
|
|
233
|
-
- 评估问题类型(需求问题 / 设计问题)
|
|
234
|
-
- 更新相应的问题清单
|
|
235
|
-
- 【可选】启动交互式澄清补充确认
|
|
236
|
-
- 等待澄清后再继续
|
|
237
|
-
3. 完成每个任务后立即用 "- [x]" 标记完成
|
|
238
|
-
|
|
239
|
-
- |
|
|
240
|
-
实施完成后的总结:
|
|
241
|
-
- 对比实际实施与澄清决策的一致性
|
|
242
|
-
- 记录实施过程中的任何偏差及原因
|
|
243
|
-
- 归档问题清单作为项目知识资产
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|