ccg-workflow 1.0.4 → 1.0.6
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/dist/cli.mjs +2 -2
- package/dist/index.mjs +1 -1
- package/dist/shared/{ccg-workflow.D_RkPyZ0.mjs → ccg-workflow.Bx_EgCjC.mjs} +42 -0
- package/package.json +1 -1
- package/templates/commands/agents/get-current-datetime.md +29 -0
- package/templates/commands/agents/init-architect.md +114 -0
- package/templates/commands/agents/planner.md +320 -0
- package/templates/commands/agents/ui-ux-designer.md +573 -0
- package/templates/commands/feat.md +761 -0
- package/templates/commands/scan.md +569 -0
|
@@ -0,0 +1,761 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ccg:feat
|
|
3
|
+
description: 🚀 智能功能开发 - 自动规划、设计、实施(支持需求规划/讨论迭代/执行实施三种模式)
|
|
4
|
+
tools: Task, mcp__ace-tool__search_context, Read, Write, Bash, AskUserQuestion, Glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# CCG 智能功能开发
|
|
8
|
+
|
|
9
|
+
智能识别用户输入类型,自动选择工作流程:
|
|
10
|
+
- **需求规划**:完整的需求分析 → 任务分解 → 生成计划文档
|
|
11
|
+
- **讨论迭代**:基于现有计划,调整优化
|
|
12
|
+
- **执行实施**:按照计划文档,调用多模型实施开发
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 核心能力
|
|
17
|
+
|
|
18
|
+
1. **智能输入识别**:自动判断用户意图(规划/迭代/实施)
|
|
19
|
+
2. **多模型路由**:前端→Gemini,后端→Codex,全栈→并行
|
|
20
|
+
3. **计划版本控制**:`.claude/plan/功能名.md` → `.claude/plan/功能名-1.md` → ...
|
|
21
|
+
4. **自动 Agent 调用**:根据任务类型调用 planner / ui-ux-designer
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 执行流程
|
|
26
|
+
|
|
27
|
+
### 步骤 1:输入类型识别
|
|
28
|
+
|
|
29
|
+
分析用户输入,识别关键词并分类:
|
|
30
|
+
|
|
31
|
+
#### 1.1 需求规划模式(默认)
|
|
32
|
+
|
|
33
|
+
**关键词**:
|
|
34
|
+
- 实现、开发、新增、添加功能、构建
|
|
35
|
+
- 需求、设计、规划
|
|
36
|
+
- "我想要..."、"帮我实现..."
|
|
37
|
+
|
|
38
|
+
**示例**:
|
|
39
|
+
- "实现用户登录功能"
|
|
40
|
+
- "开发一个商品管理模块"
|
|
41
|
+
- "添加实时聊天功能"
|
|
42
|
+
|
|
43
|
+
→ 执行完整规划流程(步骤 2)
|
|
44
|
+
|
|
45
|
+
#### 1.2 讨论迭代模式
|
|
46
|
+
|
|
47
|
+
**关键词**:
|
|
48
|
+
- 调整、修改、优化、改进、更新
|
|
49
|
+
- 重新规划、重新设计
|
|
50
|
+
- "计划需要..."、"方案需要..."
|
|
51
|
+
- 包含计划文件路径(`.claude/plan/xxx.md`)
|
|
52
|
+
|
|
53
|
+
**示例**:
|
|
54
|
+
- "调整用户登录功能的方案"
|
|
55
|
+
- "优化商品管理模块的计划"
|
|
56
|
+
- "修改 .claude/plan/登录功能.md 的任务拆分"
|
|
57
|
+
|
|
58
|
+
→ 读取现有计划,调用 planner 重新规划(步骤 2.2)
|
|
59
|
+
|
|
60
|
+
#### 1.3 执行实施模式
|
|
61
|
+
|
|
62
|
+
**关键词**:
|
|
63
|
+
- 开始实施、执行计划、按照计划
|
|
64
|
+
- 实施、开发、编码
|
|
65
|
+
- "根据计划..."、"按照 .claude/plan/xxx.md"
|
|
66
|
+
|
|
67
|
+
**示例**:
|
|
68
|
+
- "开始实施用户登录功能"
|
|
69
|
+
- "按照计划执行开发"
|
|
70
|
+
- "根据 .claude/plan/登录功能.md 开始编码"
|
|
71
|
+
|
|
72
|
+
→ 直接进入实施阶段(步骤 3)
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### 步骤 2:需求规划流程(仅"需求规划"模式)
|
|
77
|
+
|
|
78
|
+
#### 2.1 检索项目上下文
|
|
79
|
+
|
|
80
|
+
##### 2.1.1 检查是否已有 repo-context.md
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# 检查文件是否存在
|
|
84
|
+
if [ -f ".claude/repo-context.md" ]; then
|
|
85
|
+
echo "✓ 检测到项目上下文报告"
|
|
86
|
+
Read(".claude/repo-context.md")
|
|
87
|
+
else
|
|
88
|
+
echo "⚠ 未检测到项目上下文,建议先运行 /ccg:scan"
|
|
89
|
+
# 询问用户是否立即扫描
|
|
90
|
+
AskUserQuestion {
|
|
91
|
+
question: "是否立即扫描项目以获取上下文?",
|
|
92
|
+
options: [
|
|
93
|
+
{ label: "是,立即扫描(推荐)", description: "运行 /ccg:scan 生成上下文报告" },
|
|
94
|
+
{ label: "跳过,直接规划", description: "基于现有知识进行规划" }
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
fi
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
##### 2.1.2 使用 ace-tool 检索相关代码
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
mcp__ace-tool__search_context {
|
|
104
|
+
"project_root_path": "$PROJECT_DIR",
|
|
105
|
+
"query": "{{用户需求关键词}} + 相关的代码实现、API 接口、组件、数据模型"
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**示例查询**:
|
|
110
|
+
- 用户需求:"实现用户登录功能"
|
|
111
|
+
- ace-tool 查询:"用户认证、登录、JWT token、Session 管理、认证中间件"
|
|
112
|
+
|
|
113
|
+
**期望结果**:
|
|
114
|
+
- 现有认证代码位置
|
|
115
|
+
- 可复用的组件
|
|
116
|
+
- 数据库 User 模型
|
|
117
|
+
- API 路由结构
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
#### 2.2 任务类型判断
|
|
122
|
+
|
|
123
|
+
基于用户需求和检索结果,判断任务类型:
|
|
124
|
+
|
|
125
|
+
| 任务类型 | 判断依据 | 调用流程 |
|
|
126
|
+
|----------|----------|----------|
|
|
127
|
+
| **前端任务** | 关键词:页面、组件、UI、样式、布局 | ui-ux-designer → planner |
|
|
128
|
+
| **后端任务** | 关键词:API、接口、数据库、逻辑、算法 | planner |
|
|
129
|
+
| **全栈任务** | 同时包含前后端需求 | ui-ux-designer → planner |
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
#### 2.3 调用 ui-ux-designer agent(前端/全栈任务)
|
|
134
|
+
|
|
135
|
+
如果是前端或全栈任务,先调用 UI/UX 设计师:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
Task(subagent_type="general-purpose", description="调用 ui-ux-designer agent") {
|
|
139
|
+
prompt: "
|
|
140
|
+
执行以下 agent:
|
|
141
|
+
~/.claude/commands/ccg/agents/ui-ux-designer.md
|
|
142
|
+
|
|
143
|
+
项目上下文:
|
|
144
|
+
{{ace-tool 检索结果}}
|
|
145
|
+
|
|
146
|
+
用户需求:
|
|
147
|
+
{{原始需求}}
|
|
148
|
+
|
|
149
|
+
技术栈信息:
|
|
150
|
+
{{从 repo-context.md 提取的技术栈}}
|
|
151
|
+
|
|
152
|
+
输出:UI/UX 设计方案文档(Markdown 格式)
|
|
153
|
+
"
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**输出示例**:
|
|
158
|
+
```markdown
|
|
159
|
+
# UI/UX 设计方案:用户登录页面
|
|
160
|
+
|
|
161
|
+
## 1. 页面结构
|
|
162
|
+
...
|
|
163
|
+
|
|
164
|
+
## 2. 组件拆分
|
|
165
|
+
- LoginPage.tsx
|
|
166
|
+
- LoginForm.tsx
|
|
167
|
+
- FormInput.tsx
|
|
168
|
+
...
|
|
169
|
+
|
|
170
|
+
## 3. 交互流程
|
|
171
|
+
...
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
#### 2.4 调用 planner agent
|
|
177
|
+
|
|
178
|
+
将所有上下文信息传递给 planner:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
Task(subagent_type="general-purpose", description="调用 planner agent") {
|
|
182
|
+
prompt: "
|
|
183
|
+
执行以下 agent:
|
|
184
|
+
~/.claude/commands/ccg/agents/planner.md
|
|
185
|
+
|
|
186
|
+
项目上下文:
|
|
187
|
+
{{ace-tool 检索结果}}
|
|
188
|
+
|
|
189
|
+
{{如果是前端/全栈任务,附加 UI/UX 设计方案}}
|
|
190
|
+
{{UI/UX 设计方案内容}}
|
|
191
|
+
|
|
192
|
+
用户需求:
|
|
193
|
+
{{原始需求}}
|
|
194
|
+
|
|
195
|
+
技术栈信息:
|
|
196
|
+
{{从 repo-context.md 提取}}
|
|
197
|
+
|
|
198
|
+
输出:
|
|
199
|
+
请生成详细的功能规划文档,并按照以下路径保存:
|
|
200
|
+
.claude/plan/{{功能名}}.md
|
|
201
|
+
"
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**planner 输出格式**:
|
|
206
|
+
```markdown
|
|
207
|
+
# 功能规划:用户登录功能
|
|
208
|
+
|
|
209
|
+
## 1. 功能概述
|
|
210
|
+
...
|
|
211
|
+
|
|
212
|
+
## 2. WBS 任务分解
|
|
213
|
+
...
|
|
214
|
+
|
|
215
|
+
## 3. 依赖关系
|
|
216
|
+
...
|
|
217
|
+
|
|
218
|
+
## 4. 实施建议
|
|
219
|
+
...
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
#### 2.5 计划版本控制
|
|
225
|
+
|
|
226
|
+
##### 首次规划
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
# 生成计划文件名(基于用户需求)
|
|
230
|
+
FEATURE_NAME="{{从用户需求提取的功能名}}"
|
|
231
|
+
PLAN_FILE=".claude/plan/${FEATURE_NAME}.md"
|
|
232
|
+
|
|
233
|
+
# 检查是否已存在
|
|
234
|
+
if [ -f "$PLAN_FILE" ]; then
|
|
235
|
+
echo "⚠ 计划文件已存在:$PLAN_FILE"
|
|
236
|
+
echo "将创建新版本:${FEATURE_NAME}-1.md"
|
|
237
|
+
PLAN_FILE=".claude/plan/${FEATURE_NAME}-1.md"
|
|
238
|
+
fi
|
|
239
|
+
|
|
240
|
+
# 保存计划
|
|
241
|
+
Write("$PLAN_FILE", "{{planner 输出}}")
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
##### 讨论迭代(调整现有计划)
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
# 用户输入:"调整用户登录功能的方案"
|
|
248
|
+
# 识别现有计划文件
|
|
249
|
+
EXISTING_PLAN=$(find .claude/plan -name "*登录*.md" -o -name "*login*.md" | head -n 1)
|
|
250
|
+
|
|
251
|
+
if [ -n "$EXISTING_PLAN" ]; then
|
|
252
|
+
echo "✓ 找到现有计划:$EXISTING_PLAN"
|
|
253
|
+
|
|
254
|
+
# 读取现有计划
|
|
255
|
+
EXISTING_CONTENT=$(Read("$EXISTING_PLAN"))
|
|
256
|
+
|
|
257
|
+
# 生成新版本号
|
|
258
|
+
BASE_NAME=$(basename "$EXISTING_PLAN" .md)
|
|
259
|
+
if [[ $BASE_NAME =~ -([0-9]+)$ ]]; then
|
|
260
|
+
VERSION=$((${BASH_REMATCH[1]} + 1))
|
|
261
|
+
NEW_PLAN=".claude/plan/${BASE_NAME%-*}-${VERSION}.md"
|
|
262
|
+
else
|
|
263
|
+
NEW_PLAN=".claude/plan/${BASE_NAME}-1.md"
|
|
264
|
+
fi
|
|
265
|
+
|
|
266
|
+
# 调用 planner 重新规划
|
|
267
|
+
Task(subagent_type="general-purpose") {
|
|
268
|
+
prompt: "
|
|
269
|
+
基于现有计划进行调整:
|
|
270
|
+
|
|
271
|
+
【现有计划】
|
|
272
|
+
$EXISTING_CONTENT
|
|
273
|
+
|
|
274
|
+
【用户调整要求】
|
|
275
|
+
{{用户的调整需求}}
|
|
276
|
+
|
|
277
|
+
【任务】
|
|
278
|
+
请根据用户要求,重新规划并生成新的计划文档。
|
|
279
|
+
保持合理的部分,修改需要调整的部分。
|
|
280
|
+
输出到:$NEW_PLAN
|
|
281
|
+
"
|
|
282
|
+
}
|
|
283
|
+
else
|
|
284
|
+
echo "⚠ 未找到相关计划文件,将创建新计划"
|
|
285
|
+
# 回退到首次规划流程
|
|
286
|
+
fi
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
#### 2.6 交互确认
|
|
292
|
+
|
|
293
|
+
计划生成后,询问用户下一步操作:
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
AskUserQuestion {
|
|
297
|
+
question: "功能规划已完成,请选择下一步操作:",
|
|
298
|
+
header: "下一步",
|
|
299
|
+
options: [
|
|
300
|
+
{
|
|
301
|
+
label: "开始实施(推荐)",
|
|
302
|
+
description: "根据计划调用多模型开始开发"
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
label: "讨论调整",
|
|
306
|
+
description: "我想修改计划中的某些部分"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
label: "重新规划",
|
|
310
|
+
description: "推翻当前方案,重新开始"
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
label: "仅保存计划",
|
|
314
|
+
description: "暂时不实施,稍后手动执行"
|
|
315
|
+
}
|
|
316
|
+
]
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
**用户选择处理**:
|
|
321
|
+
- **开始实施** → 进入步骤 3
|
|
322
|
+
- **讨论调整** → 提示用户描述调整需求,重新执行步骤 2.4
|
|
323
|
+
- **重新规划** → 删除当前计划,重新执行步骤 2
|
|
324
|
+
- **仅保存计划** → 退出,提示计划文件路径
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
### 步骤 3:执行实施(用户确认后)
|
|
329
|
+
|
|
330
|
+
#### 3.1 读取计划文档
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
# 确定计划文件路径
|
|
334
|
+
if [[ "$USER_INPUT" =~ \.claude/plan/.*\.md ]]; then
|
|
335
|
+
# 用户明确指定了计划文件
|
|
336
|
+
PLAN_FILE="{{用户指定的路径}}"
|
|
337
|
+
else
|
|
338
|
+
# 查找最新的计划文件
|
|
339
|
+
PLAN_FILE=$(ls -t .claude/plan/*.md | head -n 1)
|
|
340
|
+
fi
|
|
341
|
+
|
|
342
|
+
# 读取计划内容
|
|
343
|
+
PLAN_CONTENT=$(Read("$PLAN_FILE"))
|
|
344
|
+
|
|
345
|
+
echo "✓ 读取计划:$PLAN_FILE"
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
#### 3.2 任务类型分析
|
|
351
|
+
|
|
352
|
+
从计划文档中提取任务分类:
|
|
353
|
+
|
|
354
|
+
```bash
|
|
355
|
+
# 从 WBS 任务分解中提取模块类型
|
|
356
|
+
FRONTEND_TASKS=$(echo "$PLAN_CONTENT" | grep -E "#### 模块.*:前端" || echo "")
|
|
357
|
+
BACKEND_TASKS=$(echo "$PLAN_CONTENT" | grep -E "#### 模块.*:后端" || echo "")
|
|
358
|
+
|
|
359
|
+
if [ -n "$FRONTEND_TASKS" ] && [ -n "$BACKEND_TASKS" ]; then
|
|
360
|
+
TASK_TYPE="fullstack"
|
|
361
|
+
elif [ -n "$FRONTEND_TASKS" ]; then
|
|
362
|
+
TASK_TYPE="frontend"
|
|
363
|
+
elif [ -n "$BACKEND_TASKS" ]; then
|
|
364
|
+
TASK_TYPE="backend"
|
|
365
|
+
else
|
|
366
|
+
# 无法判断,询问用户
|
|
367
|
+
AskUserQuestion {
|
|
368
|
+
question: "请选择任务类型:",
|
|
369
|
+
options: [
|
|
370
|
+
{ label: "前端任务", description: "主要涉及 UI/组件/样式" },
|
|
371
|
+
{ label: "后端任务", description: "主要涉及 API/逻辑/数据库" },
|
|
372
|
+
{ label: "全栈任务", description: "同时涉及前后端" }
|
|
373
|
+
]
|
|
374
|
+
}
|
|
375
|
+
fi
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
#### 3.3 多模型路由实施
|
|
381
|
+
|
|
382
|
+
##### 3.3.1 前端任务 → Gemini
|
|
383
|
+
|
|
384
|
+
```bash
|
|
385
|
+
if [ "$TASK_TYPE" == "frontend" ] || [ "$TASK_TYPE" == "fullstack" ]; then
|
|
386
|
+
echo "🎨 前端任务 → 路由到 Gemini"
|
|
387
|
+
|
|
388
|
+
# 提取前端相关任务
|
|
389
|
+
FRONTEND_PLAN=$(echo "$PLAN_CONTENT" | sed -n '/#### 模块.*:前端/,/#### 模块.*:/p')
|
|
390
|
+
|
|
391
|
+
# 调用 codeagent-wrapper
|
|
392
|
+
codeagent-wrapper --backend gemini - "$PROJECT_DIR" <<'EOF'
|
|
393
|
+
ROLE_FILE: ~/.claude/prompts/ccg/gemini/frontend.md
|
|
394
|
+
|
|
395
|
+
<PROJECT_CONTEXT>
|
|
396
|
+
{{从 .claude/repo-context.md 提取的前端技术栈}}
|
|
397
|
+
</PROJECT_CONTEXT>
|
|
398
|
+
|
|
399
|
+
<TASK>
|
|
400
|
+
根据以下计划,实施前端功能:
|
|
401
|
+
|
|
402
|
+
$FRONTEND_PLAN
|
|
403
|
+
|
|
404
|
+
要求:
|
|
405
|
+
1. 创建/修改所有需要的组件文件
|
|
406
|
+
2. 确保组件符合项目现有的代码风格
|
|
407
|
+
3. 实现响应式设计(Mobile / Tablet / Desktop)
|
|
408
|
+
4. 添加必要的类型定义(TypeScript)
|
|
409
|
+
5. 处理 Loading / Success / Error 状态
|
|
410
|
+
6. 遵循无障碍访问(A11y)最佳实践
|
|
411
|
+
</TASK>
|
|
412
|
+
|
|
413
|
+
<OUTPUT>
|
|
414
|
+
完成后请提供:
|
|
415
|
+
1. 创建/修改的文件清单
|
|
416
|
+
2. 关键代码片段说明
|
|
417
|
+
3. 使用方法和示例
|
|
418
|
+
</OUTPUT>
|
|
419
|
+
EOF
|
|
420
|
+
|
|
421
|
+
# 捕获 SESSION_ID
|
|
422
|
+
GEMINI_SESSION=$(echo "$OUTPUT" | grep "SESSION_ID:" | awk '{print $2}')
|
|
423
|
+
echo "✓ Gemini 前端实施完成 (Session: $GEMINI_SESSION)"
|
|
424
|
+
fi
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
##### 3.3.2 后端任务 → Codex
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
if [ "$TASK_TYPE" == "backend" ] || [ "$TASK_TYPE" == "fullstack" ]; then
|
|
431
|
+
echo "⚙️ 后端任务 → 路由到 Codex"
|
|
432
|
+
|
|
433
|
+
# 提取后端相关任务
|
|
434
|
+
BACKEND_PLAN=$(echo "$PLAN_CONTENT" | sed -n '/#### 模块.*:后端/,/#### 模块.*:/p')
|
|
435
|
+
|
|
436
|
+
# 调用 codeagent-wrapper
|
|
437
|
+
codeagent-wrapper --backend codex - "$PROJECT_DIR" <<'EOF'
|
|
438
|
+
ROLE_FILE: ~/.claude/prompts/ccg/codex/architect.md
|
|
439
|
+
|
|
440
|
+
<PROJECT_CONTEXT>
|
|
441
|
+
{{从 .claude/repo-context.md 提取的后端技术栈}}
|
|
442
|
+
</PROJECT_CONTEXT>
|
|
443
|
+
|
|
444
|
+
<TASK>
|
|
445
|
+
根据以下计划,实施后端功能:
|
|
446
|
+
|
|
447
|
+
$BACKEND_PLAN
|
|
448
|
+
|
|
449
|
+
要求:
|
|
450
|
+
1. 创建/修改所有需要的 API 端点
|
|
451
|
+
2. 实现数据验证(使用 Zod / Joi / 等)
|
|
452
|
+
3. 处理错误和异常(统一错误格式)
|
|
453
|
+
4. 添加必要的中间件(认证、日志、CORS)
|
|
454
|
+
5. 编写数据库查询(ORM / 原生 SQL)
|
|
455
|
+
6. 确保代码可测试性(依赖注入、接口抽象)
|
|
456
|
+
</TASK>
|
|
457
|
+
|
|
458
|
+
<OUTPUT>
|
|
459
|
+
完成后请提供:
|
|
460
|
+
1. 创建/修改的文件清单
|
|
461
|
+
2. API 接口文档(请求/响应格式)
|
|
462
|
+
3. 数据库 Schema 变更(如有)
|
|
463
|
+
4. 测试用例建议
|
|
464
|
+
</OUTPUT>
|
|
465
|
+
EOF
|
|
466
|
+
|
|
467
|
+
# 捕获 SESSION_ID
|
|
468
|
+
CODEX_SESSION=$(echo "$OUTPUT" | grep "SESSION_ID:" | awk '{print $2}')
|
|
469
|
+
echo "✓ Codex 后端实施完成 (Session: $CODEX_SESSION)"
|
|
470
|
+
fi
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
##### 3.3.3 全栈任务 → 并行调用
|
|
474
|
+
|
|
475
|
+
```bash
|
|
476
|
+
if [ "$TASK_TYPE" == "fullstack" ]; then
|
|
477
|
+
echo "🔗 全栈任务 → 并行调用 Gemini + Codex"
|
|
478
|
+
|
|
479
|
+
# 前端和后端任务并行执行(使用后台进程)
|
|
480
|
+
{
|
|
481
|
+
# 前端任务(见 3.3.1)
|
|
482
|
+
codeagent-wrapper --backend gemini - "$PROJECT_DIR" <<'EOF'
|
|
483
|
+
...
|
|
484
|
+
EOF
|
|
485
|
+
} &
|
|
486
|
+
|
|
487
|
+
{
|
|
488
|
+
# 后端任务(见 3.3.2)
|
|
489
|
+
codeagent-wrapper --backend codex - "$PROJECT_DIR" <<'EOF'
|
|
490
|
+
...
|
|
491
|
+
EOF
|
|
492
|
+
} &
|
|
493
|
+
|
|
494
|
+
# 等待两个任务完成
|
|
495
|
+
wait
|
|
496
|
+
|
|
497
|
+
echo "✓ 前后端并行实施完成"
|
|
498
|
+
fi
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
|
|
503
|
+
#### 3.4 实施后验证
|
|
504
|
+
|
|
505
|
+
##### 3.4.1 检查实施结果
|
|
506
|
+
|
|
507
|
+
```bash
|
|
508
|
+
# 读取 git 状态
|
|
509
|
+
git status --short
|
|
510
|
+
|
|
511
|
+
# 提示用户查看变更
|
|
512
|
+
echo ""
|
|
513
|
+
echo "📝 实施完成!变更文件:"
|
|
514
|
+
git diff --name-status
|
|
515
|
+
|
|
516
|
+
# 询问用户是否需要审查
|
|
517
|
+
AskUserQuestion {
|
|
518
|
+
question: "是否运行代码审查?",
|
|
519
|
+
options: [
|
|
520
|
+
{ label: "是,运行 /ccg:review", description: "双模型代码审查" },
|
|
521
|
+
{ label: "跳过,手动检查", description: "稍后自行审查代码" }
|
|
522
|
+
]
|
|
523
|
+
}
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
##### 3.4.2 调用代码审查(可选)
|
|
527
|
+
|
|
528
|
+
```bash
|
|
529
|
+
if [ "$USER_CHOICE" == "是,运行 /ccg:review" ]; then
|
|
530
|
+
echo "🔍 启动代码审查..."
|
|
531
|
+
|
|
532
|
+
# 调用 ccg:review 命令
|
|
533
|
+
/ccg:review
|
|
534
|
+
fi
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
---
|
|
538
|
+
|
|
539
|
+
### 步骤 4:后续优化建议
|
|
540
|
+
|
|
541
|
+
实施完成后,提供后续步骤建议:
|
|
542
|
+
|
|
543
|
+
```bash
|
|
544
|
+
echo ""
|
|
545
|
+
echo "✅ 功能开发完成!"
|
|
546
|
+
echo ""
|
|
547
|
+
echo "📋 后续步骤建议:"
|
|
548
|
+
echo " 1. 运行测试:npm run test"
|
|
549
|
+
echo " 2. 启动开发服务器:npm run dev"
|
|
550
|
+
echo " 3. 验证功能是否正常工作"
|
|
551
|
+
echo " 4. 运行 /ccg:commit 提交代码"
|
|
552
|
+
echo ""
|
|
553
|
+
echo "📂 相关文件:"
|
|
554
|
+
echo " • 计划文档:$PLAN_FILE"
|
|
555
|
+
echo " • 项目上下文:.claude/repo-context.md"
|
|
556
|
+
echo ""
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
---
|
|
560
|
+
|
|
561
|
+
## 命令参数(可选)
|
|
562
|
+
|
|
563
|
+
支持通过参数快速指定模式:
|
|
564
|
+
|
|
565
|
+
```bash
|
|
566
|
+
# 显式指定规划模式
|
|
567
|
+
/ccg:feat --mode=plan "实现用户登录功能"
|
|
568
|
+
|
|
569
|
+
# 显式指定实施模式
|
|
570
|
+
/ccg:feat --mode=implement ".claude/plan/用户登录功能.md"
|
|
571
|
+
|
|
572
|
+
# 显式指定迭代模式
|
|
573
|
+
/ccg:feat --mode=iterate ".claude/plan/用户登录功能.md" "调整密码验证逻辑"
|
|
574
|
+
|
|
575
|
+
# 指定任务类型(跳过自动判断)
|
|
576
|
+
/ccg:feat --type=frontend "实现登录页面"
|
|
577
|
+
/ccg:feat --type=backend "实现登录 API"
|
|
578
|
+
/ccg:feat --type=fullstack "实现完整登录功能"
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
---
|
|
582
|
+
|
|
583
|
+
## 使用示例
|
|
584
|
+
|
|
585
|
+
### 示例 1:从需求到实施(完整流程)
|
|
586
|
+
|
|
587
|
+
```bash
|
|
588
|
+
# 第 1 步:用户输入
|
|
589
|
+
/ccg:feat 实现用户登录功能
|
|
590
|
+
|
|
591
|
+
# 系统识别:需求规划模式
|
|
592
|
+
|
|
593
|
+
# 第 2 步:检索上下文
|
|
594
|
+
✓ 检测到项目上下文报告
|
|
595
|
+
✓ 使用 ace-tool 检索相关代码...
|
|
596
|
+
- 找到现有 User 模型
|
|
597
|
+
- 找到认证中间件模板
|
|
598
|
+
|
|
599
|
+
# 第 3 步:任务类型判断
|
|
600
|
+
✓ 识别为全栈任务
|
|
601
|
+
|
|
602
|
+
# 第 4 步:调用 ui-ux-designer
|
|
603
|
+
✓ UI/UX 设计方案已生成
|
|
604
|
+
|
|
605
|
+
# 第 5 步:调用 planner
|
|
606
|
+
✓ 功能规划已生成:.claude/plan/用户登录功能.md
|
|
607
|
+
|
|
608
|
+
# 第 6 步:交互确认
|
|
609
|
+
? 功能规划已完成,请选择下一步操作:
|
|
610
|
+
> 开始实施(推荐)
|
|
611
|
+
讨论调整
|
|
612
|
+
重新规划
|
|
613
|
+
仅保存计划
|
|
614
|
+
|
|
615
|
+
# 用户选择:开始实施
|
|
616
|
+
|
|
617
|
+
# 第 7 步:多模型实施
|
|
618
|
+
🎨 前端任务 → 路由到 Gemini
|
|
619
|
+
⚙️ 后端任务 → 路由到 Codex
|
|
620
|
+
|
|
621
|
+
✓ 前端实施完成 (Session: 019a7247-...)
|
|
622
|
+
✓ 后端实施完成 (Session: 019a7248-...)
|
|
623
|
+
|
|
624
|
+
# 第 8 步:实施后验证
|
|
625
|
+
📝 实施完成!变更文件:
|
|
626
|
+
M app/api/auth/login/route.ts
|
|
627
|
+
A app/login/page.tsx
|
|
628
|
+
A components/LoginForm.tsx
|
|
629
|
+
M lib/auth.ts
|
|
630
|
+
|
|
631
|
+
? 是否运行代码审查?
|
|
632
|
+
> 是,运行 /ccg:review
|
|
633
|
+
跳过,手动检查
|
|
634
|
+
|
|
635
|
+
# 完成!
|
|
636
|
+
✅ 功能开发完成!
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
### 示例 2:讨论迭代(调整计划)
|
|
640
|
+
|
|
641
|
+
```bash
|
|
642
|
+
# 用户输入
|
|
643
|
+
/ccg:feat 调整用户登录功能,增加"记住我"选项
|
|
644
|
+
|
|
645
|
+
# 系统识别:讨论迭代模式
|
|
646
|
+
|
|
647
|
+
✓ 找到现有计划:.claude/plan/用户登录功能.md
|
|
648
|
+
✓ 读取现有计划内容
|
|
649
|
+
✓ 调用 planner 重新规划...
|
|
650
|
+
|
|
651
|
+
✓ 新计划已生成:.claude/plan/用户登录功能-1.md
|
|
652
|
+
|
|
653
|
+
? 功能规划已完成,请选择下一步操作:
|
|
654
|
+
> 开始实施(推荐)
|
|
655
|
+
继续讨论调整
|
|
656
|
+
重新规划
|
|
657
|
+
仅保存计划
|
|
658
|
+
```
|
|
659
|
+
|
|
660
|
+
### 示例 3:直接实施(跳过规划)
|
|
661
|
+
|
|
662
|
+
```bash
|
|
663
|
+
# 用户输入
|
|
664
|
+
/ccg:feat 按照 .claude/plan/用户登录功能.md 开始实施
|
|
665
|
+
|
|
666
|
+
# 系统识别:执行实施模式
|
|
667
|
+
|
|
668
|
+
✓ 读取计划:.claude/plan/用户登录功能.md
|
|
669
|
+
✓ 分析任务类型:全栈任务
|
|
670
|
+
|
|
671
|
+
🎨 前端任务 → 路由到 Gemini
|
|
672
|
+
⚙️ 后端任务 → 路由到 Codex
|
|
673
|
+
|
|
674
|
+
✓ 实施完成!
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
---
|
|
678
|
+
|
|
679
|
+
## 注意事项
|
|
680
|
+
|
|
681
|
+
1. **计划文件管理**:
|
|
682
|
+
- 所有计划保存在 `.claude/plan/` 目录
|
|
683
|
+
- 建议将 `.claude/` 加入 `.gitignore`(或选择性提交计划文档)
|
|
684
|
+
|
|
685
|
+
2. **Session 恢复**:
|
|
686
|
+
- 如果实施中断,可使用 SESSION_ID 恢复:
|
|
687
|
+
```bash
|
|
688
|
+
codeagent-wrapper --backend gemini resume <SESSION_ID> - <<'EOF'
|
|
689
|
+
继续上次的任务
|
|
690
|
+
EOF
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
3. **多模型协作**:
|
|
694
|
+
- Gemini:擅长 UI/UX、组件设计、样式实现
|
|
695
|
+
- Codex:擅长业务逻辑、API 设计、数据库操作
|
|
696
|
+
- Claude:负责整体编排、代码重构、质量保证
|
|
697
|
+
|
|
698
|
+
4. **代码审查**:
|
|
699
|
+
- 强烈建议实施后运行 `/ccg:review` 进行双模型审查
|
|
700
|
+
- 90 分以上视为高质量代码
|
|
701
|
+
|
|
702
|
+
5. **测试覆盖**:
|
|
703
|
+
- planner 会建议测试策略,但需手动实施
|
|
704
|
+
- 可运行 `/ccg:test` 生成测试用例
|
|
705
|
+
|
|
706
|
+
---
|
|
707
|
+
|
|
708
|
+
## 工作流程图
|
|
709
|
+
|
|
710
|
+
```mermaid
|
|
711
|
+
graph TD
|
|
712
|
+
Start[用户输入需求] --> Identify{识别输入类型}
|
|
713
|
+
|
|
714
|
+
Identify -->|需求规划| CheckContext[检查项目上下文]
|
|
715
|
+
Identify -->|讨论迭代| LoadPlan[读取现有计划]
|
|
716
|
+
Identify -->|执行实施| ReadPlan[读取计划文档]
|
|
717
|
+
|
|
718
|
+
CheckContext --> AceTool[ace-tool 检索相关代码]
|
|
719
|
+
AceTool --> JudgeType{判断任务类型}
|
|
720
|
+
|
|
721
|
+
JudgeType -->|前端/全栈| UIUX[调用 ui-ux-designer]
|
|
722
|
+
JudgeType -->|后端| Planner1[调用 planner]
|
|
723
|
+
|
|
724
|
+
UIUX --> Planner2[调用 planner]
|
|
725
|
+
Planner1 --> SavePlan[保存计划文档]
|
|
726
|
+
Planner2 --> SavePlan
|
|
727
|
+
|
|
728
|
+
SavePlan --> Confirm{用户确认}
|
|
729
|
+
|
|
730
|
+
Confirm -->|开始实施| ReadPlan
|
|
731
|
+
Confirm -->|讨论调整| LoadPlan
|
|
732
|
+
Confirm -->|重新规划| CheckContext
|
|
733
|
+
Confirm -->|仅保存| End1[结束]
|
|
734
|
+
|
|
735
|
+
LoadPlan --> Planner3[调用 planner 重新规划]
|
|
736
|
+
Planner3 --> SavePlan
|
|
737
|
+
|
|
738
|
+
ReadPlan --> Analyze[分析任务类型]
|
|
739
|
+
|
|
740
|
+
Analyze -->|前端| Gemini[codeagent-wrapper: Gemini]
|
|
741
|
+
Analyze -->|后端| Codex[codeagent-wrapper: Codex]
|
|
742
|
+
Analyze -->|全栈| Parallel[并行调用 Gemini + Codex]
|
|
743
|
+
|
|
744
|
+
Gemini --> Verify[实施后验证]
|
|
745
|
+
Codex --> Verify
|
|
746
|
+
Parallel --> Verify
|
|
747
|
+
|
|
748
|
+
Verify --> Review{运行代码审查?}
|
|
749
|
+
|
|
750
|
+
Review -->|是| CCGReview[/ccg:review]
|
|
751
|
+
Review -->|否| End2[结束]
|
|
752
|
+
|
|
753
|
+
CCGReview --> End2
|
|
754
|
+
|
|
755
|
+
End1[结束]
|
|
756
|
+
End2[结束]
|
|
757
|
+
```
|
|
758
|
+
|
|
759
|
+
---
|
|
760
|
+
|
|
761
|
+
现在开始智能功能开发!
|