典型工作流程
AI 辅助编程有一套高效的工作流程。本章将介绍从需求到交付的完整流程,帮助你建立规范的开发习惯。
整体流程概览
mermaid
graph LR
A[需求描述] --> B[AI 生成代码]
B --> C[代码审查]
C --> D{是否通过}
D -->|否| E[调整提示词]
E --> B
D -->|是| F[测试验证]
F --> G{是否通过}
G -->|否| H[调试修复]
H --> F
G -->|是| I[提交代码]
```text
典型的 AI 辅助编程工作流程包含以下阶段:
1. **需求描述**:清晰表达开发目标
2. **AI 生成代码**:由 AI 根据需求生成代码
3. **代码审查**:人工审查 AI 生成的代码
4. **测试验证**:验证代码功能和性能
5. **迭代优化**:根据结果调整和改进
6. **提交交付**:完成开发并提交
## 阶段一:需求描述
### 需求描述的原则
#### 1. 明确具体
```markdown
// ❌ 模糊的描述
"做一个用户管理功能"
// ✅ 明确的描述
"实现用户管理模块,包含以下功能:
1. 用户列表展示(分页、搜索、排序)
2. 新增用户(表单验证:邮箱格式、密码强度)
3. 编辑用户信息
4. 删除用户(软删除)
5. 角色分配(支持多角色)
技术栈:Vue 3 + TypeScript + Element Plus"
```text
#### 2. 提供上下文
```markdown
// ❌ 缺少上下文
"写一个 API 接口"
// ✅ 提供完整上下文
"在现有的 Express 项目中添加用户注册 API:
- 项目使用 TypeScript
- 数据库使用 PostgreSQL + Prisma ORM
- 需要验证邮箱唯一性
- 密码使用 bcrypt 加密
- 返回标准 JSON 响应格式(参考现有接口)"
```text
#### 3. 分步骤描述
对于复杂需求,拆分为多个小任务:
```markdown
// 复杂需求拆分示例
## 任务 1:创建数据模型
"创建 User 模型,包含字段:id、email、password、name、createdAt、updatedAt"
## 任务 2:实现注册接口
"实现 POST /api/register 接口,接收 email 和 password,创建用户"
## 任务 3:添加验证逻辑
"添加邮箱格式验证和密码强度检查"
```text
### 需求描述模板
```markdown
## 功能描述
[一句话描述功能目标]
## 详细需求
1. [需求点 1]
2. [需求点 2]
3. [需求点 3]
## 技术要求
- 语言/框架:[如 TypeScript + React]
- 数据库:[如 PostgreSQL]
- 其他约束:[如性能要求、安全要求]
## 参考示例
[可选:提供参考代码或设计稿]
## 预期输出
[描述期望的交付物]
```text
## 阶段二:AI 生成代码
### 选择合适的工具
根据任务类型选择 AI 工具:
| 任务类型 | 推荐工具 | 说明 |
|---------|---------|------|
| 代码补全 | GitHub Copilot、CodeBuddy | 适合编写函数、类等小片段 |
| 代码生成 | Cursor、Trae CN、CodeBuddy | 适合生成完整功能模块 |
| 代码解释 | ChatGPT、Claude | 适合理解复杂代码 |
| 代码审查 | CodeBuddy、Cursor | 适合代码质量检查 |
### 生成代码的技巧
#### 1. 迭代式生成
不要期望一次生成完美代码,采用迭代方式:
```markdown
// 第一轮:生成基础结构
"创建一个 React 用户列表组件,使用 TypeScript"
// 第二轮:添加功能
"为用户列表添加搜索和分页功能"
// 第三轮:优化样式
"使用 Tailwind CSS 优化组件样式"
```text
#### 2. 提供示例代码
提供现有代码作为参考:
```markdown
"参考以下代码风格,实现用户编辑功能:
```typescript
// 现有的用户创建组件
export const UserCreate: React.FC = () => {
// ...
}
```text
请实现类似的用户编辑组件"
```text
#### 3. 指定约束条件
```markdown
"实现用户登录功能,要求:
- 密码错误不超过 5 次锁定账户
- 登录成功后记录登录时间和 IP
- 使用 Redis 存储登录状态
- 代码需要有详细注释"
```text
## 阶段三:代码审查
### 审查要点
AI 生成的代码必须经过审查,重点关注:
#### 1. 安全性审查
- [ ] 是否存在 SQL 注入风险
- [ ] 是否存在 XSS 漏洞
- [ ] 敏感数据是否加密
- [ ] 权限检查是否完善
- [ ] 输入验证是否充分
#### 2. 逻辑正确性
- [ ] 业务逻辑是否符合需求
- [ ] 边界条件是否处理
- [ ] 异常情况是否考虑
- [ ] 并发场景是否处理
#### 3. 代码质量
- [ ] 命名是否清晰规范
- [ ] 结构是否合理
- [ ] 是否有重复代码
- [ ] 注释是否充分
#### 4. 性能考量
- [ ] 是否有性能问题
- [ ] 数据库查询是否优化
- [ ] 是否有不必要的循环
### 审查流程
```markdown
1. 通读代码,理解整体逻辑
2. 检查是否符合需求和规范
3. 标记问题点并记录
4. 决定:接受 / 修改 / 重新生成
```text
## 阶段四:测试验证
### 测试策略
#### 1. 单元测试
让 AI 生成测试用例:
```markdown
"为上面的用户注册函数生成单元测试,覆盖以下场景:
- 正常注册
- 邮箱已存在
- 密码强度不足
- 邮箱格式错误"
```text
#### 2. 集成测试
测试模块间的协作:
```markdown
"测试用户注册流程:
1. 调用注册 API
2. 验证数据库记录
3. 验证邮件发送
4. 验证登录功能"
```text
#### 3. 边界测试
测试极端情况:
```markdown
"测试以下边界情况:
- 空输入
- 超长输入
- 特殊字符
- 并发请求"
```text
## 阶段五:迭代优化
### 常见问题处理
#### 问题 1:代码不符合预期
```markdown
// 描述问题
"生成的代码有以下问题:
1. 没有处理空值情况
2. 错误处理不完善
3. 变量命名不规范
请修改代码解决这些问题"
```text
#### 问题 2:性能不达标
```markdown
// 分析并优化
"当前代码在处理 10000 条数据时响应时间超过 5 秒,请优化:
1. 检查是否有 N+1 查询问题
2. 考虑添加缓存
3. 优化数据库查询"
```text
#### 问题 3:安全漏洞
```markdown
// 修复安全问题
"发现以下安全问题:
1. 用户输入未转义,存在 XSS 风险
2. API 缺少权限验证
请修复这些安全问题"
```text
### 迭代优化技巧
1. **具体指出问题**:明确告诉 AI 哪里不对
2. **提供修改方向**:给出期望的解决方案
3. **保持上下文**:在同一个对话中迭代
4. **验证每次修改**:确保修改没有引入新问题
## 阶段六:提交交付
### 提交前检查清单
- [ ] 代码已通过审查
- [ ] 测试用例已通过
- [ ] 代码已格式化
- [ ] 注释已完善
- [ ] 文档已更新
### 生成提交信息
让 AI 帮助生成规范的提交信息:
```markdown
"根据以下改动生成 git commit 信息:
- 新增用户注册功能
- 添加邮箱验证
- 实现密码加密存储"
```text
AI 生成的提交信息示例:
```text
feat(user): 实现用户注册功能
- 新增用户注册 API (POST /api/register)
- 添加邮箱格式验证和唯一性检查
- 使用 bcrypt 加密存储密码
- 添加单元测试覆盖核心逻辑
```text
## 完整工作流示例
### 场景:实现用户登录功能
```markdown
// 第 1 轮:描述需求
"实现用户登录功能:
- 使用邮箱和密码登录
- 密码使用 bcrypt 验证
- 登录成功返回 JWT token
- 使用 TypeScript + Express"
// 第 2 轮:审查代码
"检查生成的代码:
1. 是否有安全漏洞
2. 错误处理是否完善
3. 类型定义是否正确"
// 第 3 轮:添加测试
"为登录功能生成单元测试"
// 第 4 轮:优化
"添加登录失败次数限制,超过 5 次锁定账户 30 分钟"
// 第 5 轮:提交
"生成 commit 信息"
```text
## 不同场景的工作流
### 快速原型开发
```mermaid
graph LR
A[需求描述] --> B[AI 生成]
B --> C[快速测试]
C --> D[交付]
```text
特点:快速迭代,减少审查环节,适合概念验证。
### 生产环境开发
```mermaid
graph LR
A[需求描述] --> B[AI 生成]
B --> C[代码审查]
C --> D[单元测试]
D --> E[集成测试]
E --> F[安全审计]
F --> G[性能测试]
G --> H[提交]
```text
特点:流程完整,多重验证,确保质量。
### Bug 修复
```mermaid
graph LR
A[描述 Bug] --> B[AI 分析]
B --> C[生成修复]
C --> D[验证修复]
D --> E[回归测试]
E --> F[提交]
```text
特点:重点验证修复效果,确保不引入新问题。
## 小结
AI 辅助编程的工作流程:
1. **需求描述**:清晰、具体、有上下文
2. **代码生成**:选择合适工具,迭代式生成
3. **代码审查**:安全、逻辑、质量、性能
4. **测试验证**:单元测试、集成测试、边界测试
5. **迭代优化**:发现问题、描述问题、验证修复
6. **提交交付**:检查清单、规范提交
建立规范的工作流程,是高效使用 AI 辅助编程的关键。
---
## 参考资料
- [GitHub Copilot Best Practices](https://github.blog/2023-06-14-how-to-use-ai-coding-tools-effectively/)
- [AI-Assisted Code Review Guidelines](https://www.sonarsource.com/blog/ai-assisted-code-review/)1
2
3
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
2
3
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403