先规划再动手:把一句话想法变成需求清单
先给答案:AI 编程最大的浪费不是写错代码,是写错方向。 「AI 编程 需求规划」做的就是这件事——在 AI 动手之前,把你脑子里的画面翻译成它照着做就不会跑偏的需求清单。
这件事听起来像产品经理的活,其实零基础也只要 10 分钟。这一课就是 vibe coding 项目规划的全部:一张四行清单、一轮 AI 采访、一个落盘的规格文件、一次先审方案再动手。Claude Code、Codex、OpenCode、WorkBuddy 都适用,前三款还内置了「计划模式」这个专用开关。
上一课的工作流导读立了五条纪律,这一课展开第一条:先规划再动手——防的坑是「AI 猜错方向,写完才发现不是想要的」。
学完你能做什么
- 用「目标 / 上下文 / 约束 / 完成标准」四件套,把一句话想法扩写成 AI 能照着做的需求清单
- 让 AI 反过来采访你:用一条提示词把「我也说不清」的部分问成明确规格,落成 SPEC.md 文件
- 在 Claude Code、Codex、OpenCode 里打开计划模式,让 AI 先交方案、你批准了再动代码
- 给每份清单写上可验证的「完成标准」,让 AI 有办法检查自己
- 划出这条纪律的边界:做完就扔的周末小项目可以跳过,要长期维护或给别人用的不行
你现在的困境
- 「帮我做个记账工具」扔过去,AI 交回来的东西和你想的完全两回事——改到第三轮,你俩都在原地打转
- 知道该写需求文档,但不知道写到多细:写少了它猜,写多了比写代码还累
- 听说过「计划模式」,但不确定它和直接提问有什么区别、什么时候值得多这一步
什么时候用这一招
当你需要:
- 做一个会长期用、会给别人用、或者改起来很费劲的东西(网站、小程序、插件)
- 把一个模糊想法(「要不做个倒计时页面?」)变成能开工的任务
- 第一次用某款工具跑真项目,想少走弯路建立手感
而且不想:
- 在「不是这个意思,重来」的循环里烧掉一晚上
- AI 每次新会话都重新猜一遍你的需求
- 代码写完了才发现最关键的功能根本没做
🎒 开始前的准备
- 读完 工作流导读:五条纪律,知道本页是第一条纪律的展开
- 装好并用过至少一款工具:Claude Code、Codex、OpenCode 或 WorkBuddy
- 手头有一个真实的一句话想法当练习素材(「帮我做个倒计时网页」这种程度就行)
- 10 分钟和一杯水 ☕
核心思路
AI 为什么会猜错? 不是它笨,是信息差。Claude Code 官方最佳实践把「做出来的不是你想要的」列为会话翻车的第一类原因:模型缺的是「读代码读不出来的信息」——你脑子里的画面、你开会定下的规矩、你心里「完成」的标准。这些信息不给,它只能猜。
需求清单 = 补齐 AI 拿不到的信息。 不是写正式的产品需求文档,是把一句话里缺的三样东西补上:范围(做什么、不做什么)、约束(按什么规矩做)、完成标准(做到什么程度算完)。这也是 AI 项目拆解的第一步——把「做个东西」拆成能逐一确认的条目。
Codex 官方最佳实践给了一个可以直接套的框架:一条好提示词默认包含四样东西。
| # | 问题 | 填什么 | 例(倒计时网页) |
|---|---|---|---|
| 1 | 目标 Goal | 要改变什么、做出什么 | 一个本地打开就能用的倒计时网页 |
| 2 | 上下文 Context | 哪些文件、文档、报错与任务相关 | 从零开始,没有现成代码 |
| 3 | 约束 Constraints | 要遵守什么标准、习惯、安全要求 | 单文件、不引入新库、中文界面 |
| 4 | 完成标准 Done when | 什么为真时任务才算完成 | 浏览器打开能输入分钟数并倒计时,到 0 有提示 |
这不是 Codex 独有的说法。Claude Code 的官方建议是同一套逻辑:点名文件、描述症状、说清「修好」长什么样,通常能省掉一整轮返工。WorkBuddy 的创建任务文档也建议在任务描述里「明确目标、范围、约束和预期输出」。四款工具,一个框架。
规划还有工具层的落地:计划模式。 需求清单是你给 AI 的信息;方案是 AI 打算怎么干。计划模式让这两步分开——AI 只读文件、做研究、出方案,一个字都不改你的代码,你批准了它才动手。Claude Code、Codex 都有 plan mode,OpenCode 有只读的 plan agent。
一句话记住这条纪律:清单写完再开工,方案看过再落盘。
跟我做
(拿你准备清单里那个一句话想法当练习素材,四步走完,它就变成一份能开工的需求清单。)
第 1 步:用四件套把一句话想法扩成需求清单(AI 编程 需求规划的骨架)
为什么:一句话想法缺范围、约束和完成标准,AI 只能靠猜补齐——猜错就是一整轮返工。四件套是官方文档给出的最小补齐格式,四行就够。
把你的想法按核心思路里那张表各写一行。填不出来的格子先空着,第 2 步让 AI 帮你问。
对照感受一下官方给的差距(Claude Code 最佳实践的对照表):
| ❌ 一句话 | ✅ 补齐信息后 |
|---|---|
| 「修一下登录 bug」 | 「用户反馈会话超时后登录失败。查 src/auth/ 里的 token 刷新,先写一个能复现问题的失败测试,再修好它」 |
| 「加个日历组件」 | 「照 HotDogWidget.php 的模式做一个日历组件:能选月份、能翻年。不引入新库」 |
你应该看到:一张四行的清单,每行回答一个问题——做什么、和什么相关、按什么规矩、做到什么算完。
- 小检查:我的清单里「完成标准」一行是可验证的(能打开 / 能通过 / 不再出现),不是「做好了」
第 2 步:让 AI 采访你,把答不上来的格子问满
为什么:有些格子你自己也填不出来——不是懒,是真没想清楚。硬编一个答案,不如让 AI 提问。这是 Claude Code 和 Codex 官方最佳实践都推荐的「采访(interview)」模式。
把这句话发给你的工具(哪款都行):
我想<你的一句话想法>,但还没想清楚。采访我,直到你能写出规格说明,然后把它写进 SPEC.md。官方给的实景(Claude Code 最佳实践里的限流例子):你说「想给公共 API 加限流,还没想透」,AI 会拿选择题回来问你——按用户限还是按 API key 限?超限的请求怎么处理?哪些不算在内?一直问到答案凑成一份规格。
Codex 的说法更直接:让它「挑战你的假设,把模糊的想法在写代码之前变具体」。
你应该看到:AI 没有开工写代码,而是抛回选择题。如果它直接开始写代码,把上面那条提示词再发一遍。
- 小检查:AI 问的问题里,至少有一个是我原本没想过的
第 3 步:把规格落成文件,开个新会话再动代码
为什么:规格只存在于聊天记录里,下次会话 AI 还得重新猜一遍。落成文件有两个官方说的好处:开工的会话从「干净上下文 + 成文的完成定义」开始;这份文件以后还是验收时的对照物——官方最佳实践的做法就是让审稿的子代理「对照 SPEC.md 检查每条需求是否实现」。
采访结束,确认 AI 写出的 SPEC.md 没有歪曲你的意思(尤其「完成标准」部分),然后:
- 结束当前会话,另开一个新的
- 新会话第一句话说:「读 SPEC.md,按规格实现;完成标准全部满足之前,不要说做完了」
Codex 用户的进阶玩法:长任务、多步任务可以配置 PLANS.md 或执行计划模板,让计划按同一套格式出。
你应该看到:项目文件夹里多了一个 SPEC.md;新会话里 AI 先读文件再动手,不再问你重复的问题。
- 小检查:SPEC.md 里的完成标准,我逐条看得懂、认得出「做到了」长什么样
第 4 步:打开计划模式,先审方案再让它动手
为什么:需求清单管「做什么」,方案管「怎么做」。计划模式下 AI 只读文件、做研究、写方案,不改任何代码——你批准了才动手。这是三款命令行工具都内置的功能,按键不一样:
| 工具 | 怎么开 | 开着的时候 |
|---|---|---|
| Claude Code | 会话中按 Shift+Tab 切到状态栏显示 ⏸ plan mode on;给单条消息加 /plan 前缀;或启动时 claude --permission-mode plan | 只读文件、跑探索命令、写方案,不改你的源码 |
| Codex | /plan 或 Shift+Tab | 收集上下文、向你提澄清问题、先建更稳的方案再实现 |
| OpenCode | 按 Tab 在内置 agent 间切换到 plan | 只读 agent:默认拒绝文件编辑,跑 bash 命令前先征求许可 |
方案出来后(以 Claude Code 为例),它会问你三选一:
- Yes, and use auto mode:批准,切到 auto 模式开始干活
- Yes, manually approve edits:批准,但每处编辑都要你过目
- No, keep planning:不满意,留在计划模式继续改
拿不准就选第三个——方案阶段改主意,成本只是几句话;代码写完再改主意,成本是一轮返工。Claude Code 里还可以按 Ctrl+G,直接在文本编辑器里改它的方案再继续。
💡 WorkBuddy 用户
WorkBuddy 的自主规划是内置的:官方文档说它「根据任务目标自动拆解步骤、规划执行流程并完成任务」。你要做的是把第 1、2 步的清单写进任务描述——它的创建任务文档同样建议「明确目标、范围、约束和预期输出」。
你应该看到:先看到一份方案(打算动哪些文件、分几步走),你点头之后,代码才开始变。
- 小检查:我在计划模式里看过一遍方案,能说出它打算做什么
检查点 ✅
- 我能背出四件套:目标、上下文、约束、完成标准——以及各自防什么坑
- 我用过「采访我」提示词,让 AI 用选择题把模糊想法问成了规格
- 我的规格落在了文件里(SPEC.md),新会话从读文件开始
- 我知道怎么在我的工具里打开计划模式,见过「先方案、后代码」的顺序
- 我知道这条纪律的边界:做完就扔的周末小项目可以跳过,要长期维护的不行
踩坑提醒
❌ 把「完成标准」写成「做好了」
「做好了」「能用了」没法验证,AI 只能自己判断。官方最佳实践说得很直白:没有能跑的检查,AI 就停在「看起来做完了」,错误留在那等你发现。写成可验证的:「浏览器打开输入 25 分钟,倒计时走完弹出提示」。Codex 给的三个合格形态:测试通过、行为发生变化、bug 不再复现。
❌ 采访完不落盘,在原会话里直接开工
问答把上下文塞得满满的,接着写代码看起来顺理成章——官方最佳实践明确建议相反的做法:规格落成 SPEC.md 后开一个新会话来构建,让开工从干净上下文和成文的完成定义开始。原会话留着当讨论记录就好。
❌ 用「别搞砸」当约束
约束要具体到能执行。「代码要整洁」「注意安全」等于没说;「不引入新库」「单文件」「中文界面」才是 AI 能照办的约束——官方对照表里的正面例句,结尾就是一句硬邦邦的「不引入新库」。
❌ 周末小玩具也走全套流程
Karpathy 给原版玩法(不看 diff 全盘接受)划的边界就是「一次性的周末小项目」。反过来读也成立:做完就扔的东西,四件套可以缩成一句话直接开干;要长期用、给别人用的东西,才值得这 10 分钟。别把纪律用成负担。
进阶技巧(可选)
把「完成标准」升级成 AI 能自跑的检查。 官方最佳实践的核心建议:给 AI 一个「能跑、结果非过即败」的检查,它就能自己把「改—跑—读输出—再修」的循环走完,直到通过。写进提示词就行:「改完跑某某测试,没通过就继续修」。这条是 验收检查的地基。
大任务五问(挂机前过一遍)。 官方给无人值守任务列了五个问题,其实是一张大号需求清单:
- 它知道「完成」长什么样吗?(目标条件 / 规格文件 / 要变绿的测试)
- 它能自查吗?(测试套件 / 某种审查步骤)
- 它允许碰什么?(权限规则 / 沙箱 / 指定分支)
- 什么能让它停?(轮数上限 / 预算上限)
- 结果去哪、谁签字?
第五问的防线在 成本与安全 展开。
想要完整版,就明说。 官方最佳实践观察到:AI 倾向于保守理解——做「满足字面要求的最小东西」,因为它看不到你心里期待多大。想要完整版(空状态、错误提示、保存流程都做上),在需求里写明。范围只有你知道,这正是需求清单该装的信息。
把计划模式设为默认。 Claude Code 支持在项目的 .claude/settings.json 里把 permissions.defaultMode 设为 plan,这个项目的终端会话就都从计划模式起步。
本课小结
✅ AI 编程 需求规划的完整链条你走通了:四件套扩写(目标 / 上下文 / 约束 / 完成标准)→ AI 采访补模糊点 → 规格落盘 SPEC.md → 新会话开工 → 计划模式先审方案。
✅ 你知道了 AI 猜错的根源是信息差——它读得出代码,读不出你脑子里的画面;需求清单就是补齐它拿不到的信息。
✅ 你掌握了跨工具的计划模式开关:Claude Code(Shift+Tab / /plan / claude --permission-mode plan)、Codex(/plan 或 Shift+Tab)、OpenCode(Tab 切到 plan agent);WorkBuddy 的规划是内置的,你负责把清单写进任务描述。
✅ 你划清了这条纪律的边界:做完就扔的周末小项目可以跳过;要长期维护、给别人用的东西,先规划再动手。
关键概念回顾:
| 概念 | 一句话 | 在哪深入 |
|---|---|---|
| 四件套 | 目标 / 上下文 / 约束 / 完成标准 | 本页第 1 步 |
| 采访模式 | 「采访我,直到你能写出规格」 | 本页第 2 步 |
| SPEC.md | 落盘的规格,开工与验收共用 | 本页第 3 步 |
| 计划模式 | 只读研究 + 出方案,批准后才动手 | 本页第 4 步 |
| 完成标准 | 可验证的「做到什么算完」 | 验收检查 |
下一课预告
清单有了,下一课解决「怎么把清单写成 AI 一次写对的提示词」:提示词写法:让 AI 一次写对的魔法模板。
你会学到:
- 需求清单怎么落成一条好提示词:点名文件、描述症状、说清「修好」的标准
- 怎么争取一次写对,少走「改到第三轮」的回头路
- 好提示词里不变的部分怎么沉淀成项目说明书(AGENTS.md / CLAUDE.md),不用每次重写