先规划再编码
与 ai-coding-essentials 互补。
项目规划与 AI 协作
这一课你将能做到
- 把一个模糊想法拆成 AI 可执行的分阶段计划
- 写出让 AI 不跑偏的项目级上下文文档(需求、技术栈、约束)
- 用「先规划后生成」的流程,避免 AI 自由发挥导致的大规模返工
为什么要学
初学者用 AI 编程最常踩的坑:一句话「帮我写一个电商网站」,AI 真给了你一个电商网站——用你不熟的技术栈、不符合你需求的字段、跑不起来的依赖。然后你花三天修一个本来不该存在的东西。
人话:AI 是个能力极强但完全不了解你处境的远程外包。你不写需求文档,它就按自己的想象干活。规划不是形式主义,是把「你想要什么」翻译成「AI 能执行什么」的过程。
真实开发中,先有规划再动手,返工率能降一个数量级。这一课教你写两种东西:给人看的计划(TODO 清单),和给 AI 看的上下文(项目说明文件)。
先建立图像
没有规划的协作:
想法 → 一句话提示词 → AI 自由发挥 → 大量返工 → 推倒重来
有规划的协作:
想法 → 拆解需求 → 确定技术栈 → 写项目上下文 → 分阶段生成
→ 每阶段验收 → 增量迭代 → 可控交付
跟着做
步骤 1:把想法写成需求清单
假设你要做一个「团队内部的技术文章收藏夹」。先别打开 AI 工具,打开备忘录写:
目标用户:10 人左右的开发团队
核心功能:
1. 提交文章链接,自动抓取标题和摘要
2. 按标签分类浏览
3. 点赞和评论
非目标(明确不做):用户系统先用最简单的账号密码、不做移动端 App、不做推荐算法
约束:后端用 Java Spring Boot(团队现有技术栈)、数据库用 MySQL
注意「非目标」部分——明确不做什么,和做什么同样重要,这是防止 AI 过度设计的最有效手段。
步骤 2:把需求拆成阶段
阶段 1(骨架):项目脚手架 + 数据库表结构 + 文章提交/列表接口
阶段 2(核心):链接抓取(标题/摘要) + 标签 CRUD
阶段 3(交互):点赞、评论
阶段 4(打磨):错误处理、参数校验、部署脚本
每个阶段是「可独立验收」的:阶段 1 完成后,接口能用 Postman 调通,就算过。
步骤 3:写项目上下文文件
在项目根目录建一个 PROJECT.md(不同工具叫法不同:Cursor 用 .cursor/rules,Claude Code 用 CLAUDE.md,本质相同):
# 项目:技术文章收藏夹
## 技术栈
- 后端:Java 17 + Spring Boot 3 + MyBatis-Plus
- 数据库:MySQL 8,表名小写下划线,主键统一叫 id
- 前端:无(纯 API 项目,前端另开仓库)
## 代码约定
- 包结构:controller / service / mapper / entity 分层
- 接口返回统一用 Result<T> 包装:{ code, message, data }
- 日期时间统一用 LocalDateTime,Jackson 序列化为 yyyy-MM-dd HH:mm:ss
## 当前进度
阶段 1 进行中:已完成表结构设计,待生成脚手架
## 明确不做
- 不做用户权限(先硬编码一个管理员)
- 不做缓存(阶段 4 后再评估)
步骤 4:按阶段喂给 AI
打开 AI 工具,第一轮提示词:
这是我们的项目上下文(粘贴 PROJECT.md 内容)。
请完成阶段 1:生成 Spring Boot 项目脚手架,
包含文章表的建表 SQL(字段:id, url, title, summary, created_at)、
对应的 entity / mapper / service / controller,
接口两个:POST /articles 提交、GET /articles 分页列表。
先只给文件清单和建表 SQL,我确认后再生成代码。
注意最后一句「先只给文件清单」——这是规划心态的延伸:让 AI 先输出方案,你确认方向后再让它写代码,比直接要代码省 80% 的返工。
步骤 5:每阶段结束更新上下文
阶段 1 验收通过后,回到 PROJECT.md 更新「当前进度」部分,再开始阶段 2。AI 每次开会话都读这个文件,永远不会问「我们上次做到哪了」。