@localsummer/incspec 0.2.5 → 0.3.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/README.md +48 -6
- package/package.json +1 -1
- package/src/commands/analyze.mjs +35 -23
- package/src/commands/apply.mjs +40 -22
- package/src/commands/archive.mjs +18 -21
- package/src/commands/collect-dep.mjs +19 -5
- package/src/commands/collect-req.mjs +22 -12
- package/src/commands/design.mjs +24 -6
- package/src/commands/merge.mjs +20 -5
- package/src/commands/status.mjs +11 -7
- package/src/commands/sync.mjs +2 -2
- package/src/commands/upgrade.mjs +139 -0
- package/src/index.mjs +7 -0
- package/src/lib/mode-utils.mjs +265 -0
- package/src/lib/workflow.mjs +38 -34
- package/src/templates/AGENTS.md +81 -11
- package/src/templates/WORKFLOW.md +7 -0
- package/src/templates/commands/analyze-codeflow.md +15 -0
- package/src/templates/commands/apply-increment-code.md +220 -366
- package/src/templates/commands/inc-archive.md +6 -1
- package/src/templates/commands/inc-upgrade.md +338 -0
|
@@ -14,507 +14,361 @@ incspec status
|
|
|
14
14
|
|
|
15
15
|
### 完整模式 (7步)
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
**开始执行前**,先用 Bash 执行:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
incspec apply <increment-report-path> [--source-dir=<source-code-dir>]
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
**完成代码变更后**,再用 Bash 执行:
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
26
|
incspec apply <increment-report-path> [--source-dir=<source-code-dir>] --complete
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
说明:
|
|
30
|
+
- 基于增量设计报告执行代码变更
|
|
30
31
|
- 若未提供 `source-code-dir`,省略 `--source-dir`
|
|
31
32
|
- 若提示没有活跃工作流,请先完成步骤 1-4
|
|
32
33
|
|
|
33
34
|
### 快速模式 (5步)
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
**开始执行前**,先用 Bash 执行:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
incspec apply
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**完成代码变更后**,再用 Bash 执行:
|
|
36
43
|
|
|
37
44
|
```bash
|
|
38
45
|
incspec apply --complete
|
|
39
46
|
```
|
|
40
47
|
|
|
41
48
|
说明:
|
|
49
|
+
- 基于需求文档直接执行代码变更
|
|
42
50
|
- 输入文件自动使用 `incspec/requirements/structured-requirements.md`
|
|
43
|
-
- 无需提供增量设计文件路径
|
|
44
51
|
- 请先完成步骤 1-2
|
|
45
52
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
你是前端增量代码执行器。根据工作流模式,基于不同的输入文件在 source-code-dir 中直接创建新文件和修改现有文件,完成增量需求的代码实施。
|
|
49
|
-
|
|
50
|
-
## 模式说明
|
|
51
|
-
|
|
52
|
-
- **完整模式**: 基于《增量需求融合快照》报告(步骤 4 产出)执行代码变更
|
|
53
|
-
- **快速模式**: 基于《结构化需求报告》(步骤 2 产出)直接执行代码变更,跳过增量设计步骤
|
|
54
|
-
|
|
55
|
-
# 输入参数
|
|
56
|
-
|
|
57
|
-
## 完整模式
|
|
58
|
-
|
|
59
|
-
1. **increment-report-path** (必填): `increment-codeflow-v2.md` 报告的完整路径
|
|
60
|
-
2. **source-code-dir** (可选): 源代码根目录,默认为当前工作目录
|
|
61
|
-
|
|
62
|
-
## 快速模式
|
|
63
|
-
|
|
64
|
-
1. **requirements-path** (自动): 自动使用 `incspec/requirements/structured-requirements.md`
|
|
65
|
-
2. **baseline-path** (自动): 自动使用步骤 1 生成的基线报告
|
|
66
|
-
3. **source-code-dir** (可选): 源代码根目录,默认为当前工作目录
|
|
67
|
-
|
|
68
|
-
# 执行流程
|
|
69
|
-
|
|
70
|
-
> 以下为完整模式的执行流程。快速模式流程请参见 [快速模式执行流程](#快速模式执行流程) 部分。
|
|
53
|
+
### 极简模式 (3步)
|
|
71
54
|
|
|
72
|
-
|
|
55
|
+
**开始执行前**,先用 Bash 执行:
|
|
73
56
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
- **模块 3: 规划后的 API 调用时序图** - 解析 Mermaid 时序图,确认变更链路:
|
|
78
|
-
- 识别所有 🆕 标记的新增步骤 [N1], [N2]...
|
|
79
|
-
- 识别所有 ✏️ 标记的修改步骤 [S1-Modified], [S2-Modified]...
|
|
80
|
-
- 识别所有 ❌ 标记的删除步骤 [S3-Deleted]...
|
|
81
|
-
- 理解每个变更在运行时序中的执行顺序和上下文位置
|
|
82
|
-
- **模块 4: 规划后的依赖关系图** - 解析 Mermaid 依赖图,确认依赖关系:
|
|
83
|
-
- 识别所有 🆕 新增节点 (N1, N2...) 及其依赖关系
|
|
84
|
-
- 识别所有 ✏️ 修改节点 (D1_MOD, D2_MOD...) 及其新增/修改的依赖链路
|
|
85
|
-
- 识别所有 ❌ 删除节点 (D3_DEL...) 及其需要移除的依赖
|
|
86
|
-
- 构建完整的依赖拓扑图,用于后续的排序和验证
|
|
87
|
-
- **模块 5: 完整的新增/修改文件清单** - 获取操作类型、文件路径和详细修改内容
|
|
88
|
-
|
|
89
|
-
## 步骤 2: 按依赖顺序排序变更
|
|
90
|
-
|
|
91
|
-
综合利用三个来源的信息,进行精确的依赖排序:
|
|
92
|
-
|
|
93
|
-
### 2.1 依赖关系分析
|
|
94
|
-
|
|
95
|
-
基于步骤 1 解析的信息,构建变更的依赖拓扑:
|
|
96
|
-
|
|
97
|
-
1. **从模块 4 提取依赖关系**:
|
|
98
|
-
- 分析依赖图中的箭头方向 (A → B 表示 B 依赖 A)
|
|
99
|
-
- 识别新增节点之间的依赖链 (如 N2 -.-> N1)
|
|
100
|
-
- 识别修改节点与新增节点的依赖关系 (如 D2_MOD -.-> N1)
|
|
101
|
-
- 记录需要先创建的基础依赖
|
|
102
|
-
|
|
103
|
-
2. **从模块 3 提取时序约束**:
|
|
104
|
-
- 分析时序图中的消息流向 (调用者 → 被调用者)
|
|
105
|
-
- 确认每个 [Nx] 节点在运行时的先后顺序
|
|
106
|
-
- 识别同步调用和异步调用的时序关系
|
|
107
|
-
- 确保被调用的方法/组件先于调用者定义
|
|
108
|
-
|
|
109
|
-
3. **从模块 2 提取逻辑依赖**:
|
|
110
|
-
- 分析"关联旧节点"列,确定变更的起点
|
|
111
|
-
- 分析"变更逻辑说明",识别隐含的依赖 (如"调用 API"意味着依赖 API 定义)
|
|
112
|
-
- 提取文件路径,按文件类型分层
|
|
113
|
-
|
|
114
|
-
### 2.2 排序规则
|
|
115
|
-
|
|
116
|
-
按以下优先级进行拓扑排序:
|
|
57
|
+
```bash
|
|
58
|
+
incspec apply
|
|
59
|
+
```
|
|
117
60
|
|
|
118
|
-
|
|
119
|
-
- Types/Interfaces → Utils → API → Store → Component
|
|
120
|
-
- 基础设施 → 业务逻辑 → UI 展示
|
|
61
|
+
**完成代码变更后**,再用 Bash 执行:
|
|
121
62
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
- 确保不存在循环依赖
|
|
63
|
+
```bash
|
|
64
|
+
incspec apply --complete
|
|
65
|
+
```
|
|
126
66
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
67
|
+
说明:
|
|
68
|
+
- 基于用户口头需求和基线报告直接执行代码变更
|
|
69
|
+
- 请先完成步骤 1 (analyze)
|
|
70
|
+
- 极简模式跳过步骤 2,3,4,6,直接从分析到应用再到归档
|
|
130
71
|
|
|
131
|
-
|
|
132
|
-
- 同优先级的变更按 C1, C2, C3... 顺序执行
|
|
72
|
+
---
|
|
133
73
|
|
|
134
|
-
|
|
74
|
+
# 角色定位
|
|
135
75
|
|
|
136
|
-
|
|
76
|
+
你是前端增量代码执行器。根据工作流模式,基于不同的输入文件在 source-code-dir 中直接创建新文件和修改现有文件,完成增量需求的代码实施。
|
|
137
77
|
|
|
138
|
-
|
|
139
|
-
- **完整性检查**: 确保所有 Cx 变更都被排序
|
|
140
|
-
- **逻辑一致性**: 验证排序结果与时序图、依赖图的一致性
|
|
78
|
+
## 模式说明
|
|
141
79
|
|
|
142
|
-
|
|
80
|
+
- **完整模式**: 基于《增量需求融合快照》报告(步骤 4 产出)执行代码变更
|
|
81
|
+
- **快速模式**: 基于《结构化需求报告》(步骤 2 产出)直接执行代码变更
|
|
82
|
+
- **极简模式**: 基于用户口头需求和基线报告(步骤 1 产出)直接执行代码变更
|
|
143
83
|
|
|
144
|
-
|
|
84
|
+
---
|
|
145
85
|
|
|
146
|
-
|
|
86
|
+
# 完整模式执行流程
|
|
147
87
|
|
|
148
|
-
|
|
88
|
+
## 输入文件
|
|
149
89
|
|
|
150
|
-
1.
|
|
151
|
-
|
|
152
|
-
- 新建 Store → 搜索 `**/store/*.ts` 或 `**/stores/*.ts`
|
|
153
|
-
- 新建 API → 搜索 `**/api/*.ts` 或 `**/services/*.ts`
|
|
154
|
-
- 新建类型定义 → 搜索 `**/types/*.ts` 或 `**/*.d.ts`
|
|
90
|
+
1. **增量设计报告**: `increment-codeflow-v{n}.md`(包含模块 2-5)
|
|
91
|
+
2. **source-code-dir**: 源代码根目录(默认当前目录)
|
|
155
92
|
|
|
156
|
-
|
|
157
|
-
- Import 语句的组织方式
|
|
158
|
-
- 代码风格和格式化规范
|
|
159
|
-
- 命名约定 (camelCase/PascalCase)
|
|
160
|
-
- 注释风格
|
|
161
|
-
- 项目特定的模式和惯用法
|
|
93
|
+
## 执行步骤
|
|
162
94
|
|
|
163
|
-
|
|
164
|
-
- 按参考文件的风格组织 import 语句
|
|
165
|
-
- 包含完整的 TypeScript 类型定义
|
|
166
|
-
- 实现报告中描述的所有功能点
|
|
167
|
-
- 添加必要的错误处理逻辑
|
|
168
|
-
- 保持与项目一致的代码风格
|
|
95
|
+
### 步骤 1: 读取并解析报告
|
|
169
96
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
97
|
+
提取关键信息:
|
|
98
|
+
- **模块 2**: 变更链条设计表(C1, C2...)
|
|
99
|
+
- **模块 3**: 规划后的 API 调用时序图(识别 [N1], [S1-Modified], [S1-Deleted])
|
|
100
|
+
- **模块 4**: 规划后的依赖关系图(识别依赖拓扑)
|
|
101
|
+
- **模块 5**: 完整的文件变更清单(操作类型、文件路径、详细修改内容)
|
|
174
102
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
### 3.2 修改文件 (使用 Edit 工具)
|
|
103
|
+
### 步骤 2: 按依赖顺序排序变更
|
|
178
104
|
|
|
179
|
-
|
|
105
|
+
按优先级进行拓扑排序:
|
|
106
|
+
1. **架构分层优先**: Types/Interfaces → Utils → API → Store → Component
|
|
107
|
+
2. **依赖拓扑优先**: 无依赖的节点优先(入度为 0)
|
|
108
|
+
3. **时序约束优先**: 在时序图中先出现的定义先生成
|
|
109
|
+
4. **变更编号顺序**: 同优先级按 C1, C2, C3... 顺序执行
|
|
180
110
|
|
|
181
|
-
|
|
111
|
+
### 步骤 3: 执行代码变更
|
|
182
112
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
**常见修改模式**:
|
|
186
|
-
|
|
187
|
-
- **新增 State 字段**:
|
|
188
|
-
- 定位到 interface/type 定义
|
|
189
|
-
- 在合适位置添加新字段及其类型
|
|
190
|
-
|
|
191
|
-
- **新增 Action/Method**:
|
|
192
|
-
- 定位到 class 或 object 定义
|
|
193
|
-
- 在合适位置添加新方法
|
|
194
|
-
- 确保方法签名完整 (参数、返回值类型)
|
|
195
|
-
|
|
196
|
-
- **修改数据处理逻辑**:
|
|
197
|
-
- 定位到具体的函数或方法
|
|
198
|
-
- 在数据解析/转换的位置添加新字段处理
|
|
199
|
-
|
|
200
|
-
- **新增 Effect/Hook**:
|
|
201
|
-
- 定位到组件内部
|
|
202
|
-
- 添加 useEffect/useCallback 等 Hook
|
|
203
|
-
|
|
204
|
-
- **新增 Import**:
|
|
205
|
-
- 定位到文件顶部的 import 区域
|
|
206
|
-
- 按项目的 import 排序规则添加
|
|
113
|
+
按排序后的顺序逐个执行变更:
|
|
207
114
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
115
|
+
**新建文件(Write 工具)**:
|
|
116
|
+
1. 搜索参考文件(同类型的现有文件)
|
|
117
|
+
2. 读取参考文件学习代码风格
|
|
118
|
+
3. 生成完整代码(包含类型定义、错误处理)
|
|
119
|
+
4. 确保目录存在并写入文件
|
|
213
120
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
121
|
+
**修改文件(Edit 工具)**:
|
|
122
|
+
1. 读取原文件内容
|
|
123
|
+
2. 定位修改点(新增字段/方法/Hook/Import 等)
|
|
124
|
+
3. 执行精准修改(确保 old_string 唯一性)
|
|
125
|
+
4. 如有多处修改,按从上到下顺序逐个执行
|
|
218
126
|
|
|
219
|
-
|
|
127
|
+
**删除代码(Edit 工具)**:
|
|
128
|
+
1. 读取原文件确认代码存在
|
|
129
|
+
2. 使用 Edit 工具删除指定代码
|
|
130
|
+
3. 清理不再使用的 import 语句
|
|
220
131
|
|
|
221
|
-
|
|
132
|
+
### 步骤 4: 执行前确认
|
|
222
133
|
|
|
223
|
-
|
|
224
|
-
2. **精准删除**: 使用 Edit 工具,将 old_string 设为要删除的代码,new_string 设为空字符串或删除后的代码
|
|
225
|
-
3. **清理依赖**: 如果删除导致某些 import 不再使用,一并删除相关 import 语句
|
|
134
|
+
向用户展示变更计划并获取确认:
|
|
226
135
|
|
|
227
|
-
|
|
136
|
+
```
|
|
137
|
+
⚠️ 即将在 <source-code-dir> 中执行代码变更(完整模式)
|
|
228
138
|
|
|
229
|
-
|
|
139
|
+
📋 变更计划:
|
|
140
|
+
- 基于设计: incspec/increments/{feature}-increment-v{n}.md
|
|
141
|
+
- 预计变更: 新建 X 个文件,修改 Y 个文件
|
|
230
142
|
|
|
231
|
-
|
|
143
|
+
🔴 风险提示:
|
|
144
|
+
- 请确保当前代码已提交到 git 或已备份
|
|
232
145
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
```bash
|
|
236
|
-
npx tsc --noEmit
|
|
237
|
-
```
|
|
238
|
-
检查是否有 TypeScript 类型错误
|
|
239
|
-
|
|
240
|
-
### 4.2 输出变更摘要
|
|
146
|
+
是否继续执行? (yes/no)
|
|
147
|
+
```
|
|
241
148
|
|
|
242
|
-
|
|
149
|
+
### 步骤 5: 输出变更摘要
|
|
243
150
|
|
|
244
151
|
```
|
|
245
|
-
✅
|
|
152
|
+
✅ 完整模式代码变更已完成
|
|
246
153
|
|
|
247
154
|
📊 变更统计:
|
|
248
155
|
- 新建文件: X 个
|
|
249
156
|
- 修改文件: Y 个
|
|
250
157
|
- 删除代码: Z 处
|
|
251
158
|
|
|
252
|
-
📁
|
|
253
|
-
✓ src/components/BatchActions.tsx
|
|
254
|
-
✓ src/
|
|
255
|
-
✓ src/types/batch.ts
|
|
256
|
-
|
|
257
|
-
📝 修改文件清单:
|
|
258
|
-
✓ src/store/listStore.ts (新增 2 个 method)
|
|
259
|
-
✓ src/components/ListView.tsx (新增 1 个 hook)
|
|
260
|
-
|
|
261
|
-
⚠️ 风险提醒:
|
|
262
|
-
根据报告模块 6 的风险预警:
|
|
263
|
-
- [高风险] src/store/listStore.ts 可能影响其他页面复用的 Store
|
|
264
|
-
- [中风险] src/api/batchOperations.ts 需要确认后端接口是否已就绪
|
|
159
|
+
📁 变更文件清单:
|
|
160
|
+
✓ src/components/BatchActions.tsx (新建)
|
|
161
|
+
✓ src/store/listStore.ts (修改)
|
|
265
162
|
|
|
266
163
|
🧪 建议的后续操作:
|
|
267
164
|
1. 运行 TypeScript 编译检查: npx tsc --noEmit
|
|
268
165
|
2. 运行测试: npm test
|
|
269
|
-
3. 参考报告模块 7
|
|
270
|
-
- 正常批量操作流程
|
|
271
|
-
- 部分操作失败场景
|
|
272
|
-
- 网络异常处理
|
|
273
|
-
- 权限不足提示
|
|
274
|
-
4. Code Review: 重点关注高风险变更点
|
|
166
|
+
3. 参考报告模块 7 补充测试用例
|
|
275
167
|
```
|
|
276
168
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
## 代码质量要求
|
|
280
|
-
|
|
281
|
-
1. **类型安全**: 所有新增代码必须包含完整的 TypeScript 类型定义
|
|
282
|
-
2. **错误处理**: 包含必要的 try-catch 和错误处理逻辑
|
|
283
|
-
3. **代码风格**: 严格遵循项目现有代码风格
|
|
284
|
-
4. **命名规范**: 遵循项目命名约定 (camelCase/PascalCase/kebab-case)
|
|
285
|
-
5. **注释适度**: 为复杂逻辑添加必要注释,避免过度注释
|
|
286
|
-
6. **Import 组织**: 按项目惯例组织 import 语句 (通常: 第三方库 → 项目内模块 → 类型导入)
|
|
287
|
-
|
|
288
|
-
## 参考现有代码的策略
|
|
169
|
+
---
|
|
289
170
|
|
|
290
|
-
|
|
171
|
+
# 快速模式执行流程
|
|
291
172
|
|
|
292
|
-
|
|
293
|
-
- 组件: `**/*{Component,View,Page}.tsx`
|
|
294
|
-
- Store: `**/store*.ts`, `**/use*.ts`
|
|
295
|
-
- API: `**/api/*.ts`, `**/services/*.ts`
|
|
296
|
-
- Utils: `**/utils/*.ts`, `**/helpers/*.ts`
|
|
297
|
-
|
|
298
|
-
2. **读取并分析**: 选择 1-2 个最相关的文件,分析:
|
|
299
|
-
- 文件结构布局
|
|
300
|
-
- Import 语句组织
|
|
301
|
-
- 函数/组件定义方式
|
|
302
|
-
- 错误处理模式
|
|
303
|
-
- 类型定义位置 (内联 vs 独立文件)
|
|
304
|
-
|
|
305
|
-
3. **复用模式**: 优先使用项目中已有的:
|
|
306
|
-
- Utils/Helpers 函数
|
|
307
|
-
- 通用组件
|
|
308
|
-
- 类型定义
|
|
309
|
-
- API 调用方式
|
|
310
|
-
- 状态管理模式
|
|
311
|
-
|
|
312
|
-
4. **保持一致**: 确保新代码在风格和模式上与现有代码无缝融合
|
|
313
|
-
|
|
314
|
-
## 修改文件的精准定位策略
|
|
315
|
-
|
|
316
|
-
使用 Edit 工具时,确保 old_string 的唯一性:
|
|
317
|
-
|
|
318
|
-
1. **包含足够上下文**: old_string 应包含前后若干行代码,确保在文件中唯一匹配
|
|
319
|
-
2. **保留缩进**: 精确复制原始代码的缩进 (空格/Tab)
|
|
320
|
-
3. **避免模糊匹配**: 如果代码段可能重复,增加更多上下文
|
|
321
|
-
4. **处理特殊字符**: 注意处理字符串中的引号、反斜杠等特殊字符
|
|
322
|
-
|
|
323
|
-
示例:
|
|
324
|
-
|
|
325
|
-
```typescript
|
|
326
|
-
// 不推荐 (可能不唯一)
|
|
327
|
-
old_string: "loading: boolean;"
|
|
328
|
-
|
|
329
|
-
// 推荐 (包含上下文)
|
|
330
|
-
old_string: `interface ListState {
|
|
331
|
-
items: Item[];
|
|
332
|
-
loading: boolean;
|
|
333
|
-
}`
|
|
334
|
-
```
|
|
173
|
+
## 输入文件
|
|
335
174
|
|
|
336
|
-
|
|
175
|
+
1. **基线报告**: `{module}-baseline-v{n}.md`(理解现有代码结构)
|
|
176
|
+
2. **需求文档**: `structured-requirements.md`(明确变更目标)
|
|
337
177
|
|
|
338
|
-
|
|
339
|
-
2. **保持谨慎**: 对于高风险变更 (报告中标记为"高"),在执行前在对话中提示用户确认
|
|
340
|
-
3. **引用一致**: 确保生成的代码中的变量名、类型名与报告中的 Nxx 节点一致
|
|
341
|
-
4. **依赖检查**: 确保所有 import 的模块在项目中存在或同时被创建
|
|
342
|
-
5. **原子性**: 每个文件的修改作为一个原子操作,避免部分修改
|
|
343
|
-
6. **备份建议**: 执行前提示用户确保代码已提交或备份
|
|
178
|
+
## 执行步骤
|
|
344
179
|
|
|
345
|
-
|
|
180
|
+
### 步骤 1: 读取输入文件
|
|
346
181
|
|
|
347
|
-
|
|
182
|
+
1. **读取基线报告**: 理解当前代码架构、API 调用流程、依赖关系
|
|
183
|
+
2. **读取需求文档**: 提取 5 列结构化表格,明确变更目标和影响范围
|
|
348
184
|
|
|
349
|
-
|
|
350
|
-
- 报告缺少必要模块 (模块 2/3/4/5 任一缺失)
|
|
351
|
-
- 模块 3 的 Mermaid 时序图解析失败或格式不符
|
|
352
|
-
- 模块 4 的 Mermaid 依赖图解析失败或格式不符
|
|
353
|
-
- 时序图与依赖图中的节点编号不一致 (如时序图有 [N3] 但依赖图没有 N3 节点)
|
|
354
|
-
- source-code-dir 不存在或不是有效目录
|
|
355
|
-
- 报告中的目标文件路径与实际项目结构不匹配 (目录层级错误)
|
|
356
|
-
- 变更之间存在循环依赖或逻辑矛盾
|
|
357
|
-
- 待修改的文件不存在
|
|
358
|
-
- Edit 工具找不到 old_string (匹配失败)
|
|
185
|
+
### 步骤 2: 分析变更影响
|
|
359
186
|
|
|
360
|
-
|
|
361
|
-
1.
|
|
362
|
-
2.
|
|
363
|
-
3.
|
|
187
|
+
基于基线报告和需求文档,分析:
|
|
188
|
+
1. 识别影响的组件(需求表格中的"涉及的 UI 组件"列)
|
|
189
|
+
2. 识别影响的状态(需求表格中的"影响的核心状态"列)
|
|
190
|
+
3. 理解数据流向(需求表格中的"预期数据流向"列)
|
|
191
|
+
4. 确定变更范围(结合基线报告中的依赖关系)
|
|
364
192
|
|
|
365
|
-
|
|
193
|
+
### 步骤 3: 执行前确认
|
|
366
194
|
|
|
367
|
-
|
|
195
|
+
向用户展示变更计划:
|
|
368
196
|
|
|
369
197
|
```
|
|
370
|
-
⚠️ 即将在 <source-code-dir>
|
|
198
|
+
⚠️ 即将在 <source-code-dir> 中执行代码变更(快速模式)
|
|
371
199
|
|
|
372
200
|
📋 变更计划:
|
|
373
|
-
-
|
|
374
|
-
-
|
|
375
|
-
-
|
|
376
|
-
|
|
377
|
-
🔴 高风险变更:
|
|
378
|
-
- C2: src/store/listStore.ts (可能影响其他页面)
|
|
201
|
+
- 基于需求: incspec/requirements/structured-requirements.md
|
|
202
|
+
- 参考基线: incspec/baselines/{module}-baseline-v{n}.md
|
|
203
|
+
- 预计变更: 新建 X 个文件,修改 Y 个文件
|
|
379
204
|
|
|
380
|
-
|
|
205
|
+
🔴 风险提示:
|
|
206
|
+
- 快速模式跳过了增量设计步骤,变更未经详细设计审查
|
|
207
|
+
- 建议: 请确保当前代码已提交到 git 或已备份
|
|
381
208
|
|
|
382
209
|
是否继续执行? (yes/no)
|
|
383
210
|
```
|
|
384
211
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
# 执行流程示例
|
|
388
|
-
|
|
389
|
-
假设报告包含以下变更:
|
|
390
|
-
|
|
391
|
-
| 变更编号 | 类型 | 目标文件 | 变更逻辑说明 |
|
|
392
|
-
|---------|------|---------|------------|
|
|
393
|
-
| C1 | 新建 | src/types/batch.ts | 新建批量操作的类型定义 |
|
|
394
|
-
| C2 | 新建 | src/api/batchOperations.ts | 新建批量操作 API |
|
|
395
|
-
| C3 | 修改 | src/store/listStore.ts | Store 新增批量操作 action |
|
|
396
|
-
| C4 | 新建 | src/components/BatchActions.tsx | 新建批量操作组件 |
|
|
397
|
-
| C5 | 修改 | src/components/ListView.tsx | 在列表页集成批量操作组件 |
|
|
212
|
+
### 步骤 4: 直接执行代码变更
|
|
398
213
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
- Write 工具创建 `src/types/batch.ts`
|
|
214
|
+
按照需求文档的描述,直接在源代码目录执行变更:
|
|
215
|
+
1. 搜索参考文件(同类型的现有文件)
|
|
216
|
+
2. 读取参考文件学习项目代码风格和模式
|
|
217
|
+
3. 执行变更(使用 Write/Edit 工具创建或修改文件)
|
|
218
|
+
4. 验证完整性(确保所有依赖正确引入)
|
|
405
219
|
|
|
406
|
-
|
|
407
|
-
- 搜索参考: `**/api/*.ts`
|
|
408
|
-
- 读取参考文件学习 API 调用模式
|
|
409
|
-
- Write 工具创建 `src/api/batchOperations.ts`
|
|
220
|
+
### 步骤 5: 输出变更摘要
|
|
410
221
|
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
- 定位修改点 (State interface, Action method)
|
|
414
|
-
- Edit 工具修改: 添加 import
|
|
415
|
-
- Edit 工具修改: 添加 State 字段
|
|
416
|
-
- Edit 工具修改: 添加 Action 方法
|
|
222
|
+
```
|
|
223
|
+
✅ 快速模式代码变更已完成
|
|
417
224
|
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
- Write 工具创建 `src/components/BatchActions.tsx`
|
|
225
|
+
📊 变更统计:
|
|
226
|
+
- 新建文件: X 个
|
|
227
|
+
- 修改文件: Y 个
|
|
422
228
|
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
- Edit 工具修改: 在 JSX 中添加 BatchActions 组件
|
|
229
|
+
📁 变更文件清单:
|
|
230
|
+
✓ src/components/NewFeature.tsx (新建)
|
|
231
|
+
✓ src/store/featureStore.ts (修改)
|
|
427
232
|
|
|
428
|
-
|
|
233
|
+
🧪 建议的后续操作:
|
|
234
|
+
1. 运行 TypeScript 编译检查: npx tsc --noEmit
|
|
235
|
+
2. 运行测试: npm test
|
|
236
|
+
3. 手动验证功能是否正确实现
|
|
237
|
+
```
|
|
429
238
|
|
|
430
239
|
---
|
|
431
240
|
|
|
432
|
-
#
|
|
433
|
-
|
|
434
|
-
快速模式下,无需解析增量设计报告的模块 3/4/5,直接基于需求文档和基线报告执行代码变更。
|
|
241
|
+
# 极简模式执行流程
|
|
435
242
|
|
|
436
243
|
## 输入文件
|
|
437
244
|
|
|
438
|
-
1. **基线报告**:
|
|
439
|
-
2.
|
|
245
|
+
1. **基线报告**: `{module}-baseline-v{n}.md`(理解现有代码结构)
|
|
246
|
+
2. **用户需求**: 口头描述的变更需求(无需预先准备文档)
|
|
440
247
|
|
|
441
248
|
## 执行步骤
|
|
442
249
|
|
|
443
|
-
### 步骤 1:
|
|
250
|
+
### 步骤 1: 读取基线报告
|
|
444
251
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
252
|
+
从 `incspec/baselines/` 获取最新的基线快照:
|
|
253
|
+
- 理解当前代码架构
|
|
254
|
+
- 识别现有 API 调用流程
|
|
255
|
+
- 识别现有依赖关系
|
|
449
256
|
|
|
450
|
-
|
|
451
|
-
- 提取 5 列结构化表格
|
|
452
|
-
- 明确变更目标和影响范围
|
|
257
|
+
### 步骤 2: 执行前确认
|
|
453
258
|
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
基于基线报告和需求文档,分析变更影响:
|
|
457
|
-
|
|
458
|
-
1. **识别影响的组件**: 根据需求表格中的"涉及的 UI 组件"列
|
|
459
|
-
2. **识别影响的状态**: 根据需求表格中的"影响的核心状态"列
|
|
460
|
-
3. **理解数据流向**: 根据需求表格中的"预期数据流向"列
|
|
461
|
-
4. **确定变更范围**: 结合基线报告中的依赖关系
|
|
462
|
-
|
|
463
|
-
### 步骤 2.5: 执行前确认
|
|
464
|
-
|
|
465
|
-
在开始执行变更前,必须向用户确认:
|
|
259
|
+
向用户展示变更计划:
|
|
466
260
|
|
|
467
261
|
```
|
|
468
|
-
⚠️ 即将在 <source-code-dir>
|
|
262
|
+
⚠️ 即将在 <source-code-dir> 中执行代码变更(极简模式)
|
|
469
263
|
|
|
470
264
|
📋 变更计划:
|
|
471
|
-
-
|
|
265
|
+
- 用户需求: <user-description>
|
|
472
266
|
- 参考基线: incspec/baselines/{module}-baseline-v{n}.md
|
|
473
|
-
- 预计变更:
|
|
267
|
+
- 预计变更: 新建/修改若干文件
|
|
474
268
|
|
|
475
269
|
🔴 风险提示:
|
|
476
|
-
-
|
|
477
|
-
-
|
|
270
|
+
- 极简模式跳过了需求收集、UI依赖分析、增量设计和基线合并步骤
|
|
271
|
+
- 变更未经详细规划和审查,风险最高
|
|
272
|
+
- 强烈建议: 请确保当前代码已提交到 git 或已备份
|
|
478
273
|
|
|
479
274
|
是否继续执行? (yes/no)
|
|
480
275
|
```
|
|
481
276
|
|
|
482
|
-
仅在用户明确同意后才开始执行。
|
|
483
|
-
|
|
484
277
|
### 步骤 3: 直接执行代码变更
|
|
485
278
|
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
279
|
+
基于用户口头描述的变更目标,直接在源代码目录执行变更:
|
|
280
|
+
1. 定位目标文件(从基线分析或用户描述中推断)
|
|
281
|
+
2. 搜索参考文件(同类型的现有文件)
|
|
282
|
+
3. 读取参考文件学习项目代码风格和模式
|
|
283
|
+
4. 执行变更(使用 Write/Edit 工具创建或修改文件)
|
|
284
|
+
5. 验证完整性(确保所有依赖正确引入)
|
|
492
285
|
|
|
493
286
|
### 步骤 4: 输出变更摘要
|
|
494
287
|
|
|
495
288
|
```
|
|
496
|
-
✅
|
|
289
|
+
✅ 极简模式代码变更已完成
|
|
497
290
|
|
|
498
291
|
📊 变更统计:
|
|
499
292
|
- 新建文件: X 个
|
|
500
293
|
- 修改文件: Y 个
|
|
501
|
-
- 删除代码: Z 处
|
|
502
294
|
|
|
503
295
|
📁 变更文件清单:
|
|
504
|
-
✓ src/components/
|
|
505
|
-
✓ src/
|
|
296
|
+
✓ src/components/FixedComponent.tsx (修改)
|
|
297
|
+
✓ src/utils/helperFix.ts (新建)
|
|
506
298
|
|
|
507
299
|
🧪 建议的后续操作:
|
|
508
300
|
1. 运行 TypeScript 编译检查: npx tsc --noEmit
|
|
509
301
|
2. 运行测试: npm test
|
|
510
302
|
3. 手动验证功能是否正确实现
|
|
303
|
+
4. 执行 `incspec merge` 生成新基线(可选)
|
|
304
|
+
5. 执行 `incspec archive -y` 归档工作流产出
|
|
511
305
|
```
|
|
512
306
|
|
|
513
|
-
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
# 模式对比
|
|
310
|
+
|
|
311
|
+
| 对比项 | 完整模式 | 快速模式 | 极简模式 |
|
|
312
|
+
|-------|---------|---------|---------|
|
|
313
|
+
| 步骤数 | 7 步 | 5 步 | 3 步 |
|
|
314
|
+
| 跳过步骤 | 无 | 步骤 3, 4 | 步骤 2, 3, 4, 6 |
|
|
315
|
+
| 输入文件 | 增量设计报告 | 需求文档 + 基线报告 | 基线报告 + 口头需求 |
|
|
316
|
+
| 需求文档 | ✓ 5列结构化需求 | ✓ 5列结构化需求 | ✗ 口头描述 |
|
|
317
|
+
| UI依赖分析 | ✓ 6维度完整分析 | ✗ 跳过 | ✗ 跳过 |
|
|
318
|
+
| 变更规划 | ✓ 详细的变更链条设计 | ✗ 基于需求直接分析 | ✗ 基于描述直接执行 |
|
|
319
|
+
| 合并基线 | ✓ 独立步骤 (步骤 6) | ✓ 独立步骤 (步骤 6) | ✗ 可选(归档时提醒) |
|
|
320
|
+
| 适用场景 | 复杂功能、架构变更 | Bug 修复、简单功能 | 紧急修复、快速实验 |
|
|
321
|
+
| 风险程度 | 低(经过详细设计) | 中(跳过设计阶段) | 高(跳过所有规划) |
|
|
322
|
+
| 推荐使用 | - 新增大型功能<br/>- 跨模块重构<br/>- 需要团队审查 | - 常规 Bug 修复<br/>- 小型功能迭代<br/>- 不涉及复杂依赖 | - 紧急线上修复<br/>- 单文件小改动<br/>- POC 和快速验证 |
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
# 通用规范
|
|
327
|
+
|
|
328
|
+
## 代码生成规范
|
|
329
|
+
|
|
330
|
+
1. **类型安全**: 所有代码包含完整的 TypeScript 类型定义
|
|
331
|
+
2. **错误处理**: 包含必要的 try-catch 和错误处理逻辑
|
|
332
|
+
3. **代码风格**: 严格遵循项目现有代码风格
|
|
333
|
+
4. **Import 组织**: 按项目惯例组织(第三方库 → 项目内模块 → 类型导入)
|
|
334
|
+
5. **参考现有代码**: 必须搜索并学习同类型的现有文件
|
|
335
|
+
|
|
336
|
+
## 参考代码策略
|
|
337
|
+
|
|
338
|
+
生成代码前,必须:
|
|
339
|
+
1. **搜索同类文件**: 使用 Glob 查找相似的现有实现
|
|
340
|
+
2. **读取并分析**: 选择 1-2 个最相关的文件,学习代码风格和模式
|
|
341
|
+
3. **复用模式**: 优先使用项目中已有的 Utils/Helpers、通用组件、类型定义
|
|
342
|
+
4. **保持一致**: 确保新代码与现有代码无缝融合
|
|
343
|
+
|
|
344
|
+
## 修改文件的精准定位
|
|
345
|
+
|
|
346
|
+
使用 Edit 工具时:
|
|
347
|
+
1. **包含足够上下文**: old_string 应包含前后若干行代码,确保唯一匹配
|
|
348
|
+
2. **保留缩进**: 精确复制原始代码的缩进(空格/Tab)
|
|
349
|
+
3. **避免模糊匹配**: 如果代码段可能重复,增加更多上下文
|
|
350
|
+
|
|
351
|
+
## 执行约束
|
|
352
|
+
|
|
353
|
+
1. **直接修改代码**: 使用 Write/Edit 工具直接操作文件
|
|
354
|
+
2. **依赖检查**: 确保所有 import 的模块在项目中存在
|
|
355
|
+
3. **原子性**: 每个文件的修改作为一个原子操作
|
|
356
|
+
4. **备份建议**: 执行前提示用户确保代码已提交或备份
|
|
357
|
+
|
|
358
|
+
## 错误处理
|
|
359
|
+
|
|
360
|
+
遇到以下情况,必须明确告知用户并中止:
|
|
361
|
+
- 输入文件不存在或格式不符
|
|
362
|
+
- source-code-dir 不存在或不是有效目录
|
|
363
|
+
- 待修改的文件不存在
|
|
364
|
+
- Edit 工具找不到 old_string(匹配失败)
|
|
365
|
+
- 存在循环依赖或逻辑矛盾
|
|
366
|
+
|
|
367
|
+
遇到错误时:
|
|
368
|
+
1. 明确说明错误原因和位置
|
|
369
|
+
2. 提供修复建议
|
|
370
|
+
3. 询问用户是继续还是中止
|
|
371
|
+
|
|
372
|
+
---
|
|
514
373
|
|
|
515
|
-
|
|
516
|
-
|-------|---------|---------|
|
|
517
|
-
| 输入文件 | 增量设计报告 (模块 2-5) | 需求文档 + 基线报告 |
|
|
518
|
-
| 变更规划 | 详细的变更链条设计 | 基于需求直接分析 |
|
|
519
|
-
| 适用场景 | 复杂功能、多组件交互 | Bug 修复、简单功能 |
|
|
520
|
-
| 风险程度 | 低(经过详细设计) | 中(跳过设计阶段) |
|
|
374
|
+
记住:你的目标是根据不同工作流模式,安全、精准地执行代码变更,保持代码质量和项目一致性。
|