Skip to content
⚡ 高效工作流第 2 / 6 节

先规划再动手:把一句话想法变成需求清单 ​

先给答案: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 每次新会话都重新猜一遍你的需求
  • 代码写完了才发现最关键的功能根本没做

🎒 开始前的准备 ​

核心思路 ​

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)」模式。

把这句话发给你的工具(哪款都行):

text
我想<你的一句话想法>,但还没想清楚。采访我,直到你能写出规格说明,然后把它写进 SPEC.md。

官方给的实景(Claude Code 最佳实践里的限流例子):你说「想给公共 API 加限流,还没想透」,AI 会拿选择题回来问你——按用户限还是按 API key 限?超限的请求怎么处理?哪些不算在内?一直问到答案凑成一份规格。

Codex 的说法更直接:让它「挑战你的假设,把模糊的想法在写代码之前变具体」。

你应该看到:AI 没有开工写代码,而是抛回选择题。如果它直接开始写代码,把上面那条提示词再发一遍。

  • 小检查:AI 问的问题里,至少有一个是我原本没想过的

第 3 步:把规格落成文件,开个新会话再动代码 ​

为什么:规格只存在于聊天记录里,下次会话 AI 还得重新猜一遍。落成文件有两个官方说的好处:开工的会话从「干净上下文 + 成文的完成定义」开始;这份文件以后还是验收时的对照物——官方最佳实践的做法就是让审稿的子代理「对照 SPEC.md 检查每条需求是否实现」。

采访结束,确认 AI 写出的 SPEC.md 没有歪曲你的意思(尤其「完成标准」部分),然后:

  1. 结束当前会话,另开一个新的
  2. 新会话第一句话说:「读 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 一个「能跑、结果非过即败」的检查,它就能自己把「改—跑—读输出—再修」的循环走完,直到通过。写进提示词就行:「改完跑某某测试,没通过就继续修」。这条是 验收检查的地基。

大任务五问(挂机前过一遍)。 官方给无人值守任务列了五个问题,其实是一张大号需求清单:

  1. 它知道「完成」长什么样吗?(目标条件 / 规格文件 / 要变绿的测试)
  2. 它能自查吗?(测试套件 / 某种审查步骤)
  3. 它允许碰什么?(权限规则 / 沙箱 / 指定分支)
  4. 什么能让它停?(轮数上限 / 预算上限)
  5. 结果去哪、谁签字?

第五问的防线在 成本与安全 展开。

想要完整版,就明说。 官方最佳实践观察到: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),不用每次重写
搞懂AI关于我们怎么写隐私说明

独立的第三方教程,与文中提到的任何产品及其公司没有隶属或合作关系;产品名称和商标归各自所有者。价格和政策以官方页面为准。