AI 写了 500 行代码,上线后发现漏了 3 个接口、2 个路由、1 个菜单 —— 这套方法论让这种事再也没发生过
SEO摘要:本文分享了一套经过实战验证的五阶段AI辅助开发方法论,旨在解决AI编码工具(如Claude Code、Cursor、Copilot)在项目开发中常见的"功能不完整"问题。通过建立规则护栏、垂直切片开发、强制编译验证和定期审计复盘等系统性方法,确保AI产出的每个功能都是完整可运行的,显著提升开发效率与代码质量。这套方法将帮助开发者从"逐行检查AI代码"转变为"只验收功能清单",实现质的飞跃。
技术关键词:AI辅助开发、功能完整性、垂直切片开发、编译验证、跨会话记忆管理
不是 AI 不行,是你没给它装上"护栏"。
去年我用 AI 编码助手做了一个完整项目,功能上线那天,测试同事在群里说:“登录页能打开,但 Dashboard 是 404。”
我切到代码一看:AI 写了后端 API、写了前端页面,但忘了在路由文件里注册这个页面。
这已经不是第一次了。之前还出现过:后端接口写好了,前端没有对应的调用函数;前端组件写好了,侧边栏没有添加入口;甚至有一次,AI 写了一个"功能完整"的页面,打开一看全是// TODO占位符。
这些问题都有一个共同特征:单独看每个文件都没问题,合在一起就是缺胳膊少腿。
我开始反思:不是 AI 不行,是我的工作方式出问题了。我把 AI 当成了"写代码的",而不是"完成功能的"。我给了它代码的上下文,但没给它完整性的标准。
经过一个完整项目的实战复盘,我总结出了一套五阶段方法论。这套方法的核心理念只有一句话:
让 AI 产出的每个功能都是完整的、可验证的、不遗漏的。
下面我把它完整分享出来。如果你也在用 Claude Code、Cursor、Copilot 等 AI 编码工具,这套方法可以直接照搬。
五阶段闭环总览
五个阶段不是一次性的,而是每个功能循环一次。做完一个功能,回到阶段 2 拆下一个需求。
阶段 1:项目初始化 —— 在写第一行业务代码之前,先把"交规"定好
大多数人打开 AI 编码工具后的第一件事是:“帮我建一个 Vue 项目”。这是错的。
正确的第一步:创建三样东西 —— SPEC.md(功能规格书)、AI 行为规则文件、TODO.md(验收清单)。
1.1 SPEC.md —— 功能的"唯一真相来源"
在design-doc/SPEC.md里,用表格列出三张清单:
| 页面名 | 路由 | 核心功能 | 权限 |
|---|---|---|---|
| 登录 | /login | 用户名密码登录 | 公开 |
| Dashboard | / | 数据概览卡片 | 全部角色 |
| 用户管理 | /users | 增删改查用户 | 仅管理员 |
| 方法 | 路径 | 说明 | 对应页面 |
|---|---|---|---|
| POST | /api/auth/login | 登录 | 登录页 |
| GET | /api/users | 用户列表 | 用户管理 |
关键原则:规格文档中每一行"页面"都必须对应一个前端 View 文件;每一行"API"都必须对应一个前端调用函数。这是后续所有验收的唯一依据。
1.2 AI 行为规则文件 —— 5 条硬约束
在项目根目录创建CLAUDE.md或.cursorrules(取决于你用的工具),写入以下 5 条规则:
- 功能完整性闭环:任何功能必须包含数据层、后端 API、前端 API 封装、前端 UI 页面、路由注册、导航入口、编译通过,缺一视为未完成。
- 任务清单驱动:开始任务前先读 TODO.md,完成后标记对应项为 [x]。
- 编译验证强制执行:每次改动后必须运行编译检查,失败当场修复。
- 禁止占位符:严禁
// TODO、空函数体、“implement later” 等半成品。 - 重用已有基建:编码前先搜索项目中是否有可复用的工具函数或组件。
这 5 条规则是我踩坑踩出来的。没有它们,AI 会倾向于"写出看起来对的代码"而不是"写出完整可运行的功能"。
1.3 TODO.md —— 跨会话的持久记忆
AI 的最大短板是什么?跨会话记忆丢失。每次开新对话,它对项目的记忆就清空了。
解决方法是:用 TODO.md 做外挂记忆。把 SPEC.md 中的每个功能点转化为可勾选的清单:
## P1. 用户管理 - [ ] 后端:GET /api/users Handler + 路由注册 - [ ] 后端:POST /api/users Handler + 路由注册 - [ ] 前端:api/user.ts 中声明 listUsers / createUser / deleteUser - [ ] 前端:UserManageView.vue 页面 - [ ] 前端:router/index.ts 注册 /users 路由 - [ ] 前端:侧边栏增加"用户管理"菜单 - [ ] 编译验证通过 ## 后端 API ↔ 前端调用 对照表 | 后端路由 | 前端函数 | 前端 UI | 状态 | | GET /api/users | listUsers() | UserManageView | ✅ | | POST /api/users | createUser() | UserManageView | ✅ |对照表是防遗漏的核心武器。它用一张表暴露出"后端有接口但前端没调用"或"前端有函数但没有 UI 使用"的断裂点。
下面是项目初始化阶段三件套的关系图,它们共同构成了 AI 开发的"规则护栏":
阶段 2:需求拆解 —— 垂直切片,不是水平分层
传统开发习惯是"先把所有 API 写完,再把所有页面写完,最后一起联调"。在 AI 辅助开发里,这是灾难。
正确做法是垂直切片:一个功能的全部层次(API + 页面 + 路由 + 菜单)在一个对话中一次性完成。
给 AI 的任务模板应该是这样的:
请实现"用户管理"功能,要求:
- 后端:新增 handler/user.go,实现 List/Create/Delete
- 后端:注册 GET/POST/DELETE /api/users 路由
- 前端:api/user.ts 中声明对应函数
- 前端:新建 UserManageView.vue
- 前端:注册 /users 路由
- 前端:侧边栏添加菜单入口
- 完成后运行编译检查,确保 0 errors
- 更新 TODO.md,将对应子项标记为 [x]
请严格按顺序逐步完成,不要跳过任何步骤。
关键技巧:最后一步必须要求 AI 更新 TODO.md。这会强制它回头检查自己是否真的完成了所有子项。
下面是垂直切片与水平分层的对比,直观展示为什么垂直切片更适合 AI 辅助开发:
阶段 3:增量开发 —— 一次一个功能,别贪多
你可能会想:“AI 速度这么快,一次让它做 5 个功能不是更高效吗?”
实测结果:后面的功能越做越粗糙,遗漏越来越多。因为 AI 的上下文窗口有限,做多个功能时会丢失前面功能的细节。
铁律:一次对话只做一个完整功能。
另外,在 AI 动手写代码之前,先让它列出改动计划:
在写代码之前,请先列出你打算修改或新建的所有文件清单,以及每个文件的改动内容摘要。等我确认后再开始编码。
这样你可以在编码前就发现遗漏——比如 AI 列了 5 个文件但忘了router/index.ts。
阶段 4:编译验证 —— 别把编译错误留到明天
很多开发者习惯"先写完,最后一起编译"——这在 AI 辅助开发里是定时炸弹。
因为 AI 产出的代码量远超手写,一个对话可能生成几百行。如果编译错误堆积起来,后期修复的难度指数级上升。
做法:每次 AI 写完代码后,立即要求它运行编译检查。如果有报错,必须在当前对话中修复,不要留给你。
这不是可选项,是门禁。
阶段 5:审计复盘 —— 每周一次的全面体检
前四个阶段解决了"单个功能不遗漏"的问题,但当你做了 5 个、10 个功能后,功能之间的遗漏仍然可能发生。
每周一次,开启一个新对话,给 AI 以下审计指令:
- 扫描所有后端路由
- 扫描所有前端 API 函数
- 扫描所有 View 组件
- 扫描所有前端路由注册
- 扫描所有侧边栏菜单项
交叉对照以上 5 份清单,找出差异并输出报告。
同时检查"设计漂移":SPEC.md 中的规划 vs 实际代码实现,看是否有人悄悄改了设计没更新文档。
反模式清单:这些坑我帮你踩过了
| 反模式 | 后果 | 正确做法 |
|---|---|---|
| 一次性让 AI 做 5 个功能 | 后面的功能越做越粗糙 | 一次一个,做完验证再做下一个 |
| 只给 AI 看代码,不给规则 | AI 不知道完整性的标准 | 创建 AGENTS.md / CLAUDE.md |
| 不运行编译检查 | 堆积大量类型错误,后期难修 | 每次改动后强制编译 |
| 不维护 TODO.md | AI 每次都忘记上次做到哪 | TODO.md 作为跨会话外挂记忆 |
| 让 AI 先写所有 API 再写所有 UI | API 和 UI 脱节,对不上 | 垂直切片,一个功能贯穿所有层 |
接受// TODO占位符 | 半成品永远不会被补全 | 规则文件中明令禁止 |
项目脚手架速查
一个 AI 友好的项目,文件结构长这样:
project-root/ ├── CLAUDE.md ← AI 行为规则(5 条硬约束) ├── TODO.md ← 验收清单 + API↔UI 对照表 ├── design-doc/ │ └── SPEC.md ← 功能规格书(页面 + API + 数据模型) ├── backend/... └── frontend/...写在最后
这套方法论的底层逻辑其实很简单:
AI 不是你的替代品,AI 是你的加速器。加速器不会帮你选择方向,它只会让你在已经选好的方向上跑得更快。如果你不给它设定完整的标准、明确的路径、自动化的检查机制,它就只会产出看起来漂亮但不完整的代码。
建立规则护栏本质上是在给 AI降熵——把模糊的"帮我做个功能"变成确定的"请完成以下 8 个步骤并验证每一项"。
一旦跑通这套流程,你会发现自己从"AI 产出的代码我都要检查一遍"变成了"我只检查验收清单上的勾有没有打满"。这是质的飞跃。
适用工具:Claude Code、Cursor、Copilot、Antigravity、OpenCode 等所有 AI 编码助手。
来源:基于 Summoner Rift 项目完整开发周期的实战复盘。
试用建议:先在一个小功能上跑通整个五阶段流程,感受"不漏"的踏实感,再推广到全部开发。
如果你觉得有用,欢迎转发给也在用 AI 写代码的同事。踩过的坑,分享出来才不算白踩。