课程大纲
VDF 需求表达:让 AI 第一版就 90% 可用
本章主记忆点:需求没说清,AI 就只能替你猜。
你看完能拿走什么
- 一个叫 VDF 的四步需求表达公式
- 两个典型反例 + 一个完整正例
- 一个每次开新功能前都可以直接复制的模板
前置条件
已完成本系列前面的章节。Ch 1 告诉你筛方向,Ch 2 给你 5 题清单。这一章假设你已经过了前两道门,方向是对的,现在要开始动手做第一版。
为什么要讲这一章
先讲一个很多人没意识到的成本差。
假设你有一个想法,你决定让 Codex 或者 Claude Code 帮你写第一版。
场景 A——你在 prompt 框里敲:
帮我做一个发票生成的网页,用户输入金额和抬头,生成 PDF 发票。
AI 吭哧吭哧写了 20 分钟,吐出一个能跑的版本。你打开一看——布局不太对、PDF 字体是英文、货币单位错了、没有公司 logo、导出格式不是你要的……
你改一轮 prompt,它再写一轮。你改三轮,它再写三轮。每一轮你都在反复修补一个本来就不对的底子。一下午过去了,第一版还是没达到你脑子里那个样子。
场景 B——你先花 10 分钟把需求按一个固定格式写清楚,然后把这段话一次性丢进去。AI 吭哧吭哧写了 20 分钟,吐出一个版本。你打开一看——
这次第一版就是 90% 你想要的。 你只需要微调一两处细节。
这两种做法的差别不是"prompt 写得好不好",而是你有没有提前把"需求"这件事拆开来想清楚。
多花 10 分钟写清需求,省下的是 2-3 小时的反复修补,以及——更重要的——你的耐心。耐心耗光的时候,你会开始下意识地往更烂的方向妥协。
VDF 四步公式
VDF 是我给这个公式起的名字——Vibe Demand Formula。它不是玄学,就是强制你把一个模糊的想法按四个维度写出来。
第一步:V — Vision(场景)
先说清楚:这是给谁、在什么场景、最终长什么样。
要回答三个问题:
- 谁在用这个东西?(具体到职业或身份,不是"用户")
- 他在什么情况下打开这个东西?(具体到场景,不是"需要时")
- 用完之后他拿到了什么?(具体到一个物件或一个结果,不是"解决问题")
Vision 的作用是框定"这个东西存在的理由"。没有 V,AI 做出来的第一版经常是"技术上可以跑,但方向完全不对"。
第二步:D — Data(数据/输入输出样例)
给 AI 一个真实的输入样例和一个期望的输出样例。
这一步最容易被跳过,因为大部分人写需求的时候脑子里想的都是"规则"而不是"样例"。
但有一条事实要记住:AI 对样例的理解,比对规则的理解强得多。
你讲规则,它要自己脑补样例;你给样例,它直接照着填。你给一个具体的输入输出对,等于帮 AI 把"规则空间"压缩到了一个点上。
要回答的:
- 一个具体的输入长什么样(真实数据,不是
{placeholder}) - 期望的输出长什么样(真实数据,不是"生成一个 PDF")
- 这两者之间的映射关系
第三步:F — Flow(操作流程)
用户从打开到完成的 1-2-3 路径。
要回答的:
- 用户的操作序列(点击 → 填写 → 点击 → 看到)
- 每一步 AI 要做什么
- 每一步的反馈(进度条?loading?跳转?)
- 如果某一步失败了怎么办
Flow 的作用是告诉 AI "交互节奏"。没有 F,AI 会做出"每一步功能都有、但拼起来用起来很别扭"的东西。
第四步:边界(故意不做什么)
告诉 AI 哪些是你故意不要的。
这一步 90% 的人不会写,但影响最大。 因为 AI 默认会"帮你想周到"——它会给你加登录、加国际化、加数据持久化、加错误处理、加一堆你根本没要的东西。每一个"周到"都是一个你后面要删的包袱。
要回答的:
- 不要添加的功能(例如"不要加登录,不要接第三方支付")
- 不要支持的场景(例如"不支持批量上传")
- 不要用的技术(例如"不用 TypeScript,用纯 JS")
- 已知但暂时放一放的问题(例如"先不处理多语言")
边界条数 >= 3 条。少于 3 条说明你还没想清楚你不做什么。
反例拆解:缺 D 和边界
回到开头那句话:
帮我做一个发票生成的网页,用户输入金额和抬头,生成 PDF 发票。
用 VDF 过一遍:
- V ✗ 没写"给谁"(个人?公司?财务?)
- D ✗ 没写输入格式、没写输出样例
- F △ 只写了大概路径,没写交互细节
- 边界 ✗ 完全没有
在这种情况下,AI 只能猜:
- 用户是谁?它猜是个人
- 什么场景?它猜是"线上临时开发票"
- 输入的具体字段?它猜是一个通用表单
- 输出 PDF 的字段有哪些?它猜一个通用模板
- 要不要多货币?它猜只有一种
- 要不要 logo?它猜不要
- 要不要保存历史?它猜要存在后端
- 要不要用户系统?它猜要加登录
每一次"猜"都有 50% 的概率猜错。 10 个维度猜错 5 个,第一版就是一团糟。
正例拆解:VDF 完整版
下面是同一个"发票生成器"用 VDF 写完之后的样子:
textV 场景: 谁:一个独立设计师 场景:她接完一个项目要给客户开一张简单的收款凭证 最终:一个能下载的 PDF,她把文件微信发给客户就行 D 数据: 输入: 金额 3500 元 服务内容 "品牌 logo 设计" 客户 "杭州某某科技有限公司" 日期 2025-04-01 输出: 一张 A4 纵向 PDF 顶部有"设计师姓名 + 一张个人 logo 图" 中间有一张三列表格:服务内容 / 数量 / 金额 底部有付款方式(一张收款码图片)和签字栏 映射:输入的 4 个字段分别填进 PDF 的对应位置, 金额用大写重复一次 F 操作流程: 1. 她打开网页,看到一个简洁表单(4 个输入框) 2. 填完 4 个字段,右下角"生成"按钮点亮 3. 点击生成,页面右侧立刻出现 A4 预览 4. 右上角有一个"下载 PDF"按钮 5. 如果字段没填完,生成按钮保持灰色不可点 边界(不要做的事): - 不要加用户登录和注册 - 不要把任何数据存储到后端,所有内容本地生成 - 不要做多币种,只支持人民币 - 不要支持多语言 - 不要加发票号自动递增这种数据库功能 - 不要接打印机 API
把上面这段一次性丢进 Codex 或者 Claude Code,第一版做出来的东西会让你惊讶——
它几乎就是你脑子里那个样子,只需要微调一两个视觉细节。
不是 AI 变更聪明了,是你把需求说清楚了。
VDF 模板(直接复制用)
每次开新功能前把下面这段复制到空文档里,按顺序填完再丢给 AI:
textV 场景: 谁: 场景: 最终: D 数据: 输入示例: 输出示例: 映射关系: F 操作流程: 1. 2. 3. 失败处理: 边界(不要做什么,至少 3 条): - - -
注意一个细节:填完之后把整段整段丢给 AI,不要分句子一条条说。 AI 对"一段完整需求"的理解比对"零散碎片"的理解强得多。
一个具体的复盘
三个月前我做一个内部的"会议纪要工具"。
第一天我用场景 A 的方式:
帮我做一个上传录音文件、自动生成会议纪要的页面。
两个小时,改了四轮。出来的东西字体、布局、结构都不对。而且每改一轮,上一版的一些对的东西会被改错——典型的"在错的底子上打补丁"。
第二天早上我花了 15 分钟用 VDF 重写:
textV: 谁 - 我自己 场景 - 开完一个 1 小时的会,想在回去路上拿到纪要 最终 - 一段 markdown,可以直接贴进飞书群 D: 输入 - 一个 .m4a 文件(30MB 以内) 输出 - 一段 markdown,固定包含这几块: 1. 会议时间 2. 参会人列表 3. 3-5 个决定事项 4. 2-3 个待办(带负责人) 5. 3 条金句引用 纯 markdown,不要 HTML F: 上传文件 → 显示进度条 → 处理完显示 markdown 预览 → 一键复制到剪贴板 如果文件格式不对,当场提示 边界: - 不要存储文件到后端 - 不要支持实时转写 - 不要多语言 - 不要加发邮件、发 IM 这些集成 - 不要做历史记录列表
把这段丢进去。15 分钟后出来的版本几乎就能用。我只改了两处:
- markdown 的时间戳格式换了一下
- 复制按钮的位置挪了一下
从两小时四轮改不好,到 15 分钟两处微调。不是 AI 的问题,是我第一天没用 VDF。
这件事给我的印象太深了,后来我每次做新东西之前都会先写 VDF,基本没有再出现过"改一下午改不好"的情况。
本章主记忆点
需求没说清,AI 就只能替你猜。
你每多花 1 分钟写清需求,AI 就少帮你猜 10 分钟。这个比例大部分时候是成立的。
执行步骤
从现在开始,每次要让 AI 帮你做一个新东西,按下面这个动作走:
- 打开一个空文档,复制上面那段 VDF 模板
- 按 V → D → F → 边界 的顺序填答案
- 填 D 的时候一定给一个具体真实的输入输出样例,不要写
{placeholder} - 填边界的时候至少写 3 条"不要做什么"
- 把整段一次性丢给 AI,不要拆成多条消息
验证方式
填完 VDF 之后自检这张清单:
| 步骤 | 过关标准 |
|---|---|
| V | 能写出一个具体的人和他用这个东西的具体场景 |
| D | 输入和输出都有真实数据样例,不是占位符 |
| F | 操作流程至少 3 步,且包含"如果失败怎么办" |
| 边界 | 至少 3 条"不要做什么" |
四项都过 → 把整段丢给 AI,看第一版是不是 90% 可用。
如果第一版还不到 90%,回到 D 和边界这两步——90% 的情况下是这两步没写好。V 和 F 的错相对容易发现,D 和边界的错往往藏在"AI 自己脑补的细节"里。
常见问题
Q:我连 D 的输出样例都还没想清楚怎么办?
A:这正是 VDF 的价值——它会暴露你其实没想清楚。如果你连输出样例都写不出来,说明你脑子里还没有那个"最终产物"的画面。这种情况先停下来想,或者找一张截图、一个参考品,用它当样例就行。没有样例就直接开工,你会在后面改 10 轮都改不到那个样子。
Q:VDF 是只用一次的吗?还是每个功能都要写一遍?
A:每次"一个新的功能块"都要写一遍。同一个功能的迭代可以重用之前的 VDF——只改你要调整的那一部分。如果你在一个 session 里要做 3 个不同的东西,就写 3 份 VDF。不要混成一份。
Q:用中文还是英文写 VDF?
A:中文就行。现在主流大模型的中文理解能力已经完全够用,除非你做的是英文产品或面向英文用户。不要为了"让 AI 更准"而硬写英文——你用不顺手的语言写的需求本身就更模糊。
Q:VDF 写完能直接当 prompt 吗?还是要再包一层"请帮我做"?
A:直接丢。现在的 AI 编程工具(Codex、Claude Code 等)已经默认知道"这是需求"。你不需要加"请帮我做"或者"你是一个专业的前端工程师"这种套壳。把 VDF 整段贴进去就行。
Q:写 VDF 不是会让开发变慢吗?
A:写 VDF 花的那 10 分钟,会省下后面 2-3 小时的反复修补。从总耗时算,VDF 是纯正的提速工具——它让你前置投入 10 分钟,换后面 2 小时的时间。只有在"根本没打算认真做这个东西"的时候,VDF 才看起来"慢"——因为你没打算多花 2 小时去修补它。
为什么值得收藏这一章
这一章是你整个系列里用得最频繁的一章。
Ch 1 和 Ch 2 是每次开新项目才用一次的。VDF 是每次开新功能都要用一次的——一周可能用 3-5 次。
把 VDF 模板存成一个快捷方式、文本片段、或者 Raycast snippet。每次让 AI 做新东西之前先花 10 分钟填一遍。
这 10 分钟是整个独立开发流程里投入产出比最高的 10 分钟,没有之一。