课程大纲

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 写完之后的样子:

text
V 场景:
  谁:一个独立设计师
  场景:她接完一个项目要给客户开一张简单的收款凭证
  最终:一个能下载的 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:

text
V 场景:
  谁:
  场景:
  最终:

D 数据:
  输入示例:
  输出示例:
  映射关系:

F 操作流程:
  1.
  2.
  3.
  失败处理:

边界(不要做什么,至少 3 条):
  -
  -
  -

注意一个细节:填完之后把整段整段丢给 AI,不要分句子一条条说。 AI 对"一段完整需求"的理解比对"零散碎片"的理解强得多。

一个具体的复盘

三个月前我做一个内部的"会议纪要工具"。

第一天我用场景 A 的方式:

帮我做一个上传录音文件、自动生成会议纪要的页面。

两个小时,改了四轮。出来的东西字体、布局、结构都不对。而且每改一轮,上一版的一些对的东西会被改错——典型的"在错的底子上打补丁"。

第二天早上我花了 15 分钟用 VDF 重写:

text
V: 谁 - 我自己
   场景 - 开完一个 1 小时的会,想在回去路上拿到纪要
   最终 - 一段 markdown,可以直接贴进飞书群

D: 输入 - 一个 .m4a 文件(30MB 以内)
   输出 - 一段 markdown,固定包含这几块:
     1. 会议时间
     2. 参会人列表
     3. 3-5 个决定事项
     4. 2-3 个待办(带负责人)
     5. 3 条金句引用
   纯 markdown,不要 HTML

F: 上传文件 → 显示进度条 → 处理完显示 markdown 预览
   → 一键复制到剪贴板
   如果文件格式不对,当场提示

边界:
  - 不要存储文件到后端
  - 不要支持实时转写
  - 不要多语言
  - 不要加发邮件、发 IM 这些集成
  - 不要做历史记录列表

把这段丢进去。15 分钟后出来的版本几乎就能用。我只改了两处:

  1. markdown 的时间戳格式换了一下
  2. 复制按钮的位置挪了一下

从两小时四轮改不好,到 15 分钟两处微调。不是 AI 的问题,是我第一天没用 VDF。

这件事给我的印象太深了,后来我每次做新东西之前都会先写 VDF,基本没有再出现过"改一下午改不好"的情况。

本章主记忆点

需求没说清,AI 就只能替你猜。

你每多花 1 分钟写清需求,AI 就少帮你猜 10 分钟。这个比例大部分时候是成立的。

执行步骤

从现在开始,每次要让 AI 帮你做一个新东西,按下面这个动作走:

  1. 打开一个空文档,复制上面那段 VDF 模板
  2. 按 V → D → F → 边界 的顺序填答案
  3. 填 D 的时候一定给一个具体真实的输入输出样例,不要写 {placeholder}
  4. 填边界的时候至少写 3 条"不要做什么"
  5. 把整段一次性丢给 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 分钟,没有之一。

VDF 需求表达:让 AI 第一版就 90% 可用 | 资讯狗 | Zixungou