如何用 AI 高效开发新项目
从项目立项到上线的完整指南——AI 在每个阶段怎么用、提示词怎么写它才听得懂、以及必须注意的坑。
一、核心理念
1.1 重新定位 AI 的角色
用 AI 开发新项目,首先要想清楚 AI 在你团队中的定位:
| 误区 ❌ | 正确认知 ✅ |
|---|---|
| AI 是自动写代码机 | AI 是结对的初级开发 + 即时顾问 |
| 一次描述完所有需求,让它一次性生成 | 把项目拆成小块,逐块迭代 |
| AI 写的代码可以直接上线 | AI 的每一行代码都要人工审查 |
| AI 能记住整个项目的全部细节 | 项目的核心上下文需要你自己维护 |
核心公式:
项目质量 = AI 能力 × 你的判断力 × 你的上下文管理能力AI 能力在快速提升,但「判断力」和「上下文管理」是人的责任,也是决定项目成败的关键。
1.2 与 Vibe Coding 的关系
Vibe Coding 强调"忘记代码存在、完全沉浸在 AI 氛围中"——这适合一次性原型验证。
但对于一个要长期维护、上线运行的项目,需要更务实的路线:
- 规划先行:不要上来就让 AI 写代码,先让 AI 帮你写设计文档
- 小步迭代:每次只聚焦一个功能模块,跑通再继续
- 人工把关:关键决策(架构、数据模型、安全逻辑)自己拿主意
- 上下文固化:用文档把项目约定写下来,让 AI 有据可查
简单说:把 AI 当高速助手,别当甩手掌柜。
二、项目启动阶段
项目启动是最容易被低估的环节。很多人一上来就让 AI"帮我做一个电商系统",结果 AI 生成一堆风马牛不相及的代码。
正确的启动流程:
2.1 用 AI 做需求分析与产品定义
做什么:在写任何代码之前,先让 AI 扮演"产品经理"角色,帮你把需求理清楚。
提示词示例:
你是一位资深产品经理。我想开发一个 [项目类型,如:旅游线路预订平台]。请帮我做以下事情:1. 定义核心用户角色(至少 3 种)和他们的核心需求2. 输出 MVP(最小可行版本)的功能清单,按优先级标 P0/P1/P23. 识别 3 个最大的技术风险输出格式:Markdown 表格 + 简短说明。输出示例:
| 用户角色 | 核心需求 | 对应功能 ||----------|---------|---------|| 游客 | 找线路、比价、下单 | 线路列表、搜索、预订 || 供应商 | 管理线路、查看订单 | 线路管理后台 || 管理员 | 审核、数据分析 | 审核系统、数据看板 |P0(必须):- 线路浏览与搜索- 用户注册登录- 下单支付流程P1(应该):- 评论系统- 订单管理P2(可选):- 收藏功能- 推荐算法2.2 用 AI 做技术选型
做什么:让 AI 帮你对比技术方案,而不是拍脑袋决定。
提示词示例:
我想开发一个 [项目类型],核心约束:- 我是独立开发者,团队 1 人- 需要快速上线验证- 后续可能要扩展- 我熟悉 [你的技术栈]请对比以下方案,从开发速度、维护成本、学习曲线、扩展性 4 个维度分析:方案 A:[如:Spring Boot + Vue3]方案 B:[如:Next.js 全栈]方案 C:[如:PHP + jQuery]最后给出推荐并说明理由。输出示例:
| 维度 | Spring Boot + Vue3 | Next.js 全栈 | PHP + jQuery ||------|-------------------|-------------|-------------|| 开发速度 | ★★★☆☆ | ★★★★★ | ★★★★☆ || 维护成本 | ★★★★☆ | ★★★☆☆ | ★★★☆☆ || 学习曲线 | ★★☆☆☆ | ★★★★☆ | ★★★★☆ || 扩展性 | ★★★★★ | ★★★☆☆ | ★★☆☆☆ |推荐:作为独立开发者,如果熟悉 Java 选 Spring Boot + Vue3,追求快速验证选 Next.js。2.3 用 AI 做架构设计
做什么:让 AI 帮你画出整体架构、数据库设计、目录结构。
提示词示例:
项目:[简要描述项目]技术栈:[如 Spring Boot 3.2 + Vue 3 + MySQL]请输出:1. 整体系统架构图(用 ASCII 或文字描述各层关系)2. 核心数据库表设计(表名、字段、主键、索引)3. 后端包目录结构(按功能模块划分)4. 前端组件目录结构(按页面/功能划分)关注点:- 分层清晰(Controller → Service → Repository)- 表设计满足第三范式- 目录结构支持后续扩展2.4 项目初始化
做什么:让 AI 帮你建脚手架,而不是手动创建每个文件。
提示词示例:
技术栈:[Vue 3 + Vite + Pinia + Vue Router + axios]请帮我初始化一个项目脚手架,需要:1. 完整的目录结构2. src/main.js 入口文件配置3. 路由配置文件(含 layout 布局)4. axios 封装(含请求拦截器、响应拦截器、错误处理)5. Pinia store 基础模板6. 简单的 404 页面生成后列出所有文件和目录。注意:这一步结束后,你应该手里有一份设计文档 + 数据库脚本 + 目录结构。在这个基础上再进入编码阶段,而不是让 AI 边写边想。
三、让 AI 听懂你:工程级 Prompt 原则
这是与「通用 Prompt 技巧」最大的不同:面向项目开发的提示词,关注的是如何让 AI 理解你的项目上下文、技术栈约束、模块边界。
原则 1:聚焦——一次只做一个功能模块
错误:
帮我做一个旅游系统,要有用户注册、线路列表、预订、评论、后台管理……正确:
先只做「用户注册」功能。需求:- 用户名 + 密码注册- 密码用 bcrypt 加密- 注册成功后自动登录并返回 token- 手机号格式校验后端技术栈完成后再做前端。原因:AI 的上下文窗口有限。需求越杂,AI 越容易顾此失彼、前后矛盾。一次一件事,跑通了再做下一件。
原则 2:上下文——把你的项目信息喂给 AI
AI 不了解你的项目。每次对话都要让它知道:
# 项目上下文(每次开始时提供)项目:b.catab.cn 旅游系统技术栈:Spring Boot 3.2 + JDK 17 + MyBatis-Plus 3.5.5 + JWT数据库:MySQL 8,表名 user(id, username, password, created_at)前端:Vue 3 + Vite + axios风格:主色 #2577fd,辅色 #ff6600已有 API:用户注册(POST /api/user/register)当项目变大后:
- 把核心文档(数据库设计、API 文档、目录结构)整理成
.md文件 - 每次对话开头让 AI 先读这些文档,再提需求
- 关键约定写入
.workbuddy/memory/MEMORY.md或项目的README.md
原则 3:约束明确——把规则说在前面
AI 默认会按自己的"标准写法"生成代码。如果你有偏好的风格,必须提前声明:
# 技术约束- 不使用 any 类型(TypeScript 严格模式)- Controller 层不写业务逻辑- 异常用全局统一处理,不要到处 try-catch- 所有 API 返回统一格式:{ code, message, data }- 注释只写关键逻辑,不写废话- 每个方法不超过 30 行# 不改动的文件- UserController.java 已经写好,不要动- 数据库表结构不要修改原则 4:渐进式——先跑通核心链路
第一步:实现用户注册 API(Controller + Service + Repository)第二步:测试注册 API 是否可用第三步:添加参数校验第四步:添加异常处理每一步完成后等我确认,再继续下一步。这叫"渐进式 Prompt"——把一个大功能拆成多个小步骤,每步确认后再继续,而不是让 AI 一次性生成几百行代码然后你找 bug 找到崩溃。
原则 5:反馈迭代——告诉 AI 哪里不对
AI 第一次生成的代码大概率不完美。不要重新开始,而是精准指出问题:
你生成的注册接口有几个问题:1. 密码没有加密,需要加 bcrypt2. 没有校验用户名是否重复3. 返回的 token 里没有 userId请修复这 3 个问题,其他代码不要改动。反馈模板:
问题:[描述具体问题]预期行为:[你希望它怎么做]范围:[哪些文件可以改,哪些不能动]四、AI 开发工作流——从需求到上线
4.1 完整流程
阶段 1:需求 → AI 输出设计文档 → 你确认阶段 2:文档 → AI 生成代码 → 你审查阶段 3:代码 → 本地运行测试 → 你验收阶段 4:测试通过 → AI 生成 API 文档 → 你部署4.2 阶段一:从需求到设计文档
你做:说清楚做什么
我想加一个「旅游线路收藏」功能。用户在看到线路详情页时,可以点击收藏按钮,已收藏的线路在「我的收藏」页展示。技术栈和项目上下文见上文。AI 做:输出设计文档
## 功能设计:线路收藏### 数据库表:favorite(id, user_id, route_id, created_at)索引:UNIQUE (user_id, route_id)### APIPOST /api/favorite — 添加收藏DELETE /api/favorite/{routeId} — 取消收藏GET /api/favorite/list — 我的收藏列表### 前端改动- RouteDetail.vue 加收藏按钮- 新增 MyFavorites.vue 页面- 路由配置加 /my/favorites你确认:检查设计是否合理,无问题后进入编码阶段。
4.3 阶段二:从文档到代码
你做:喂设计文档 + 指定实现顺序
按照上面的设计文档,分三步实现:第一步:后端 API(FavoriteController、FavoriteService、FavoriteMapper)第二步:前端收藏按钮(RouteDetail.vue)第三步:前端「我的收藏」页面(MyFavorites.vue)先做第一步,完成后等我确认。AI 做:生成代码
你审查:检查逻辑是否正确、风格是否一致、异常是否处理
4.4 阶段三:调试与修复
当代码运行报错时,不要只扔报错信息:
报错信息:[粘贴控制台报错]相关代码:[贴出关键代码片段]我做了哪些尝试:[描述你已排查的方向]请帮我:1. 分析根本原因2. 给出修复方案3. 指出修复涉及的文件(不改动无关代码)4.5 阶段四:文档与部署
功能完成后,让 AI 帮你产出文档:
「收藏功能」所有代码已完成并测试通过。请帮我生成:1. API 更新文档(新加的 3 个接口)2. 数据库变更说明(新增的表和索引)3. 部署注意事项(如果需要迁移数据)输出为 Markdown。五、各阶段 Prompt 模板
5.1 需求描述模板
## 需求:[一句话概括功能]- 用户角色:[谁在用]- 触发条件:[什么情况下触发]- 核心流程:[用户操作路径]- 预期结果:[完成后用户看到什么]## 技术约束- 技术栈:[Spring Boot 3.2 / Vue 3 / MySQL 8]- 已有代码:[相关模块已有哪些,用文件路径说明]- 不改动的部分:[哪些文件不能碰]5.2 代码生成模板
## 功能:[功能名称]## 设计文档:[贴上之前确认的设计]## 实现顺序1. [第一步]2. [第二步]3. [第三步]## 约束- [风格约定]- [不要用的库]- [方法行数限制]5.3 Bug 修复模板
## 问题描述[报错信息 / 异常行为]## 相关代码```[语言][贴出关键代码]已排查方向
[你试过哪些方法]
预期行为
[你希望应该是什么结果]
范围限制
- 只改 [文件名],不要动其他文件
- 不改数据库结构
### 5.4 Code Review 模板请 review 以下代码,关注点:
- 安全漏洞(SQL 注入、XSS、权限校验)
- 逻辑错误(边界情况、空指针)
- 性能问题(N+1 查询、冗余循环)
- 代码规范(命名、格式、注释)
按严重程度分级:Critical / Major / Minor 每项给出修改建议。
### 5.5 文档生成模板功能:[功能名称] 生成以下文档:
- API 接口文档(路径、方法、参数、响应示例)
- 数据库变更说明(新增/修改的表和字段,SQL 脚本)
- 前端新增页面说明(路由、组件路径、功能点)
- 部署注意事项
输出格式:Markdown
---## 六、常见陷阱与注意事项### 陷阱 1:上下文失控——AI 忘记了之前的约定**表现**:AI 生成了与之前不一致的代码(比如之前用 MapStruct 映射,现在用手动 set)。**原因**:AI 的上下文窗口满后,早期的约定被"挤出去"了。**解决方法**:- 把关键约定写入**项目文档文件**,每次对话开头让 AI 先读- 不要依赖 AI 的记忆,你的项目文档才是"单一真相源"- 发现 AI 走偏时,把相关约定再贴一遍给对方看### 陷阱 2:AI 乱改已有代码**表现**:你让 AI 加一个功能,它顺手把你的 Controller 重写了,或者改了数据库配置。**原因**:AI 认为"改一下能更好"或误判了修改范围。**解决方法**:- **每次明确指出"哪些文件不能动"**- 使用 Git 管理,AI 改错了就 `git checkout` 恢复- 关键文件加注释头:`// ⚠️ 手动维护,AI 不要修改此文件`- 重要变更先让 AI 输出 **Diff**,你确认后再应用### 陷阱 3:过度承诺与幻觉**表现**:AI 说"这个可以用 Redis 实现",但实际上 Redis 里没有那个功能;或者 AI 用了不存在的方法、类、库。**解决方法**:- 关键逻辑(支付、权限、数据安全)**自己写或逐行审查**- AI 提到的第三方库/API,去官方文档核实后再用- 让 AI 标注置信度:`请标注每条输出中哪些是 XXX 版本已验证的,哪些是推测的`### 陷阱 4:一次性塞太多需求**表现**:一次描述 10 个功能,AI 生成了一坨混乱的代码,相互依赖、逻辑冲突。**解决方法**:- **每次只说一个功能模块**- 复杂功能拆成 3-5 个小步骤,逐步骤推进- 每步跑通了再进入下一步### 陷阱 5:跳过设计直接写代码**表现**:上来就让 AI"帮我写个登录功能",AI 直接生成代码,但连数据库表设计都没确认。**后果**:生成的代码可能不符合预期,大量返工。**解决方法**:- 不管需求多简单,**先让 AI 输出方案(设计文档),你确认后再写代码**- 一个小功能的设计可能就 5 行字,但能避免 90% 的返工- 参考第四章的"阶段一 → 阶段二"流程### 陷阱 6:忽略技术债务**表现**:为了快速出功能,让 AI 写了很多"硬编码"的代码,后续难以扩展。> 例:线路类型用魔法字符串 `"domestic"` 比较,而不是枚举或字典。**解决方法**:- 在 Prompt 中约束:`使用枚举而不是魔法字符串`- 定期让 AI 做 Code Review,识别技术债务- 每 2-3 个迭代后,安排一次"重构环节"专门清理债务### 陷阱 7:对生成的代码不加审查直接上线**表现**:AI 生成了一个完整的支付页面,你看着没问题就上线了,结果发现金额没做防篡改校验。**教训**:AI 可能遗漏安全校验、边界处理、异常分支。**解决方法**:- **生产环境代码必须逐行审查**- 涉及钱、用户隐私、权限的代码:自己手写核心逻辑,AI 只做辅助- 上线前用安全扫描工具过一遍### 陷阱 8:没有版本管理**表现**:AI 改崩了代码,但你没有 Git 提交,回退都退不了。**解决方法**:- **每完成一个功能模块就提交一次 Git**(哪怕只是"feat: add user register")- AI 改动前先确保工作区干净(`git status` 确认)- 大规模改动前,切一个新分支给 AI 折腾### 陷阱 9:依赖单一 AI 工具**表现**:只用 Cursor 或者只用 GitHub Copilot,某天服务挂了就卡住。**解决方法**:- 本地跑得动的开源模型(如 Qwen、DeepSeek)至少备一个离线可用- 核心代码不要依赖某个特定 AI 工具的独家功能- 关键逻辑自己理解,不要"AI 写了我不知道它写了啥"### 陷阱 10:高估 AI,低估自己**表现**:"AI 都能写代码了,我还要学编程吗?"——放弃学习,完全依赖 AI。**后果**:AI 改错代码你看不出来;AI 编造假 API 你信了;项目出问题你无从下手。**正确心态**:- **AI 是加速器,不是替代你的理由**- 越依赖 AI,越要理解它生成的代码——否则它把你带到沟里你都不知道- 把 AI 当作学习工具:看不懂的代码让它解释,理解后再让它继续---## 七、最佳实践清单### 启动阶段- [ ] 用 AI 输出一份**设计文档**,再开始写代码- [ ] 技术选型让 AI 做**多方案对比**,记录决策理由- [ ] 初始化脚手架时带上**完整技术栈声明**- [ ] 数据库设计让 AI **基于业务场景**推导,而不是手写### 编码阶段- [ ] 每次 Prompt **只说一个功能模块**- [ ] 复杂功能**拆成 3-5 步**,逐步骤确认- [ ] 每次开头带上**项目上下文**(技术栈 + 已有结构)- [ ] 声明**约束条件**(不改动哪些文件、不引入新依赖等)- [ ] AI 的输出**先审查再合并**,尤其是安全相关代码- [ ] 关键逻辑让 AI 先**解释方案**,再生成代码### 调试阶段- [ ] 报错信息 + 相关代码 + 预期行为 **三项齐全**再提问- [ ] 指出已排查的方向,让 AI **补充而不是重头开始**- [ ] 修复后让 AI 解释**根因**(不仅仅是贴修复代码)### 部署阶段- [ ] AI 生成代码**逐行 review**- [ ] 让 AI 输出**变更汇总**(改了什么、新增什么、风险点)- [ ] 生产环境涉及钱/权限的逻辑,**自己手写**- [ ] **每完成一个功能就 Git 提交**### 日常习惯- [ ] 项目约定写在文档里,**不要依赖 AI 的记忆**- [ ] 定期让 AI 做**Code Review**,清理技术债务- [ ] 看不懂的代码让 AI **解释后再继续**- [ ] **至少备一个本地模型**应对 AI 服务不可用的场景---## 总结用 AI 高效开发新项目,不是把键盘交给 AI 坐着等结果,而是**学会和 AI 协同工作**。好的方式 = **项目上下文管理** + **精准的阶段性 Prompt** + **严格的审查流程** + **良好的版本习惯**。坏的方式 = 需求模糊让 AI 猜 + 一次塞入太多功能 + AI 写的代码不审查直接上线 + 没有版本管理出问题回退不了。> 记住三句话:> 1. **先文档,再代码**——让 AI 输出设计你确认,能省 90% 的返工> 2. **一次一件事**——聚焦一个功能模块,跑通了再继续> 3. **你不理解的代码,不要让它活着上线**——AI 是加速器,你才是负责人