AI 编程工作流:上下文、任务拆分与代码审查
AI 编程不是”把需求丢进去,代码自己就写好了”。真实项目里,你需要管理上下文、拆分任务、审查代码、控制变更范围。这篇文章把我在项目中总结的 AI 编程工作流整理出来。
完整工作流
1
| 需求分析 → 任务拆分 → 上下文准备 → AI 实现 → 代码审查 → 测试验证 → 提交上线
|
每个环节都很重要,跳过任何一步都可能出问题。
第一步:需求分析
在让 AI 写代码之前,先自己想清楚:
问自己三个问题
- 要做什么:功能的边界是什么?
- 怎么做:技术方案是什么?
- 不能做什么:有哪些约束和限制?
1 2 3 4 5
| claude "我要给用户列表加分页功能,帮我梳理一下需求: 1. 需要考虑哪些场景? 2. 前后端分别需要改什么? 3. 有什么边界情况需要处理?"
|
第二步:任务拆分
大任务拆成小任务,每个小任务独立可验证。
拆分原则
| 原则 |
说明 |
| 独立性 |
每个任务独立完成,不依赖其他未完成的任务 |
| 可验证 |
每个任务完成后都能验证是否正确 |
| 小粒度 |
每个任务改 1-3 个文件,不超过 100 行代码 |
拆分示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| 需求:用户列表加分页
任务 1:后端接口支持分页参数 - 修改 UserMapper.xml 的查询语句 - 修改 UserService 的分页逻辑 - 修改 UserController 的参数接收
任务 2:前端分页组件 - 创建 Pagination 组件 - 在用户列表页引入组件
任务 3:前后端联调 - 调用接口测试分页 - 处理异常情况
任务 4:测试和优化 - 添加单元测试 - 优化加载速度
|
第三步:上下文准备
给 AI 提供必要的上下文,让它理解任务背景。
上下文清单
1 2 3 4 5 6 7 8
| ✅ 相关代码文件(当前要改的 + 相关的) ✅ 接口文档(如果有) ✅ 数据库表结构(如果涉及数据库) ✅ 相关的工具函数(如果要复用) ✅ 错误信息(如果有报错) ❌ 不相关的代码 ❌ 敏感信息(密码、密钥) ❌ 过多的历史对话
|
实际操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| cat src/**/*.js | claude "加分页"
claude "给用户列表加分页,相关文件: - src/views/user/list.vue(列表页) - src/api/user.js(API 请求) - src/components/Pagination.vue(分页组件,已有)
接口返回格式: { code: 200, data: { list: [...], total: 100, page: 1, size: 20 } }"
|
第四步:AI 实现
让 AI 先说再做
1 2 3 4 5
| claude "修改用户列表页,加上分页"
claude "用户列表页要加后端分页,先说说你打算怎么改?确认后再动手"
|
控制变更范围
1 2 3 4 5 6
| claude "只修改以下文件: 1. src/views/user/list.vue - 添加分页组件和请求逻辑 2. src/api/user.js - 修改 getList 方法添加分页参数
不要修改其他文件"
|
分步验证
1 2 3 4 5
| claude "先修改 src/api/user.js 的 getList 方法,添加 page 和 size 参数"
claude "再修改 src/views/user/list.vue,引入分页组件"
|
第五步:代码审查
AI 写的代码必须过审,不能盲目信任。
审查清单
功能正确性
安全性
性能
可维护性
使用 Claude 辅助审查
1 2 3 4 5 6 7 8
| git diff | claude "审查这些改动,重点关注: 1. 安全性:有没有注入风险? 2. 性能:有没有可以优化的地方? 3. 边界情况:空值处理是否完善?"
cat src/api/user.js | claude "审查这个文件的错误处理是否完善"
|
第六步:测试验证
单元测试
1 2 3 4 5 6
| claude "为 src/utils/pagination.js 生成单元测试,覆盖以下场景: 1. 正常分页 2. 页码为 0 或负数 3. 每页条数为 0 4. 总数为 0"
|
手动测试
1 2 3 4
| ✅ 正常流程:能分页、能切换页码 ✅ 边界情况:第一页点上一页、最后一页点下一页 ✅ 异常情况:网络断开、接口报错 ✅ 性能:大数据量是否流畅
|
第七步:提交上线
提交规范
1 2 3 4 5 6 7 8 9
| git add src/api/user.js git commit -m "feat(user): 添加用户列表分页参数"
git add src/views/user/list.vue git commit -m "feat(user): 用户列表添加分页组件"
git add src/components/Pagination.vue src/utils/pagination.js git commit -m "feat(pagination): 新增分页组件和工具函数"
|
提交信息格式
1 2 3 4 5 6 7 8
| 类型(范围): 简短描述
类型: - feat: 新功能 - fix: 修复 bug - refactor: 重构 - test: 测试 - docs: 文档
|
回滚策略
Git 回滚
1 2 3 4 5 6 7 8 9
| git reset --hard HEAD~1
git reset --hard <commit-hash>
git revert <commit-hash> git push
|
分支策略
1 2 3 4 5 6 7 8 9
| git checkout -b feat/user-pagination
git checkout main git merge feat/user-pagination
git revert -m 1 <merge-commit-hash>
|
常见问题
AI 改动太大
1
| claude "只修改 src/api/user.js 这一个文件,不要动其他文件。如果需要改其他文件,先告诉我,我确认后再改"
|
AI 理解错了需求
1 2
| claude "先描述一下你打算怎么改,包括会修改哪些文件、每个文件改什么。我确认后再动手"
|
AI 生成的代码有 bug
1 2
| cat error.log | claude "这段代码报错了,错误信息如下:xxx。帮我定位问题并修复"
|
上下文不够
1 2
| claude "补充一下背景:这个项目的用户表结构是 xxx,之前已经有一个不分页的查询接口"
|
效率对比
| 场景 |
纯手写 |
AI 辅助 |
效率提升 |
| 写 CRUD |
2小时 |
30分钟 |
4x |
| 写测试 |
1小时 |
15分钟 |
4x |
| 代码审查 |
30分钟 |
10分钟 |
3x |
| 排查 bug |
1小时 |
20分钟 |
3x |
| 重构 |
3小时 |
1小时 |
3x |
注意:这是建立在正确使用 AI 的前提下。如果上下文管理不好、任务拆分不合理,效率可能反而下降。
小结
- AI 编程是一个完整的工作流,不是一步到位
- 上下文管理是关键:只给相关的,不给多余的
- 大任务拆成小任务,每步都验证
- AI 写的代码必须过审,不能盲目信任
- Git 是安全网,小步提交,方便回滚