Skip to content

第 10 篇|让 AI 听话的“需求工程”:把写代码变成写 PRD ​

导读:
几乎所有新手都经历过这种崩溃:
兴致勃勃地在输入框敲下一行字:“帮我做一个类似小红书的图文社区,要有发帖、点赞和评论功能。”
敲下回车,AI 狂飙了 30 个文件,结果一运行:界面丑陋不堪、按钮点不通、代码全是未完成的半成品死胡同。
你怪 AI 太笨,其实是你把 AI 逼疯了。这就像去工地上对工人喊:“给我盖一栋 30 层的豪华大厦!”工人除了糊弄你一堆空心砖,根本没法开工。
这一篇,我们彻底颠覆你的表达方式:教你用“切片思维”和“黄金 PRD 模版”,把模糊的脑洞翻译成 AI 无法拒绝的施工蓝图。 记住一个判断:在 AI 原生时代,清晰的自然语言需求(PRD),就是最高级的编程语言。


一、 致命的“一句话陷阱” ​

为什么给 AI 一句宏大的指令,交付出来的多半是工业垃圾?

回顾我们在第 02 篇学到的原理:AI 是个概率填空机。
当你的指令跨度太大、边界太模糊时,输入给 AI 的确定性信息太少,AI 就必须用大量的“概率脑补(自由幻觉)”去填满中间的巨大鸿沟。

你的一句话需求:“给我做个电商结算系统”
       ▼ (留白太大,AI 疯狂脑补)
AI 脑补中:
- 要不要支持海外外汇结算?(写了 500 行无用代码)
- 用户未登录怎么处理?(它自作主张帮你写了一套烂系统)
- 数据库字段该叫什么?(瞎编一气,和你已有的结构完全对不上)
       ▼
结果:生成了一堆庞大、冗余、且跑不通的“代码死结”

在 AI 原生开发中,有一条必须刻在骨子里的铁律:
你写代码的时间为 0,并不代表你思考的时间为 0。你省下来的所有敲代码精力,都必须加倍投入到“精准定义需求”上。


二、 核心心法:把大象切成独立积木的“切片思维” ​

任何一个看似复杂的软件,本质上都是由几十块独立的小积木拼起来的。
高手指挥 AI 的秘诀不是打字有多快,而是懂得把大任务切碎,一次只交付一块可验收的积木。

举个真实例子:你想做一个“个人专属书签收藏夹”。

❌ 菜鸟思维(一锅端,必然翻车):
“帮我做一个完整的书签管理系统,支持分类、多标签、自动抓取网页标题和图标,还能按时间搜索。”

✔ 架构师切片思维(小步快跑,积木拼装):
【积木 1:纯静态布局】➔ 页面左边是分类列表,右边展示 3 张假数据的书签卡片,先确认 UI 视觉是否好看;
【积木 2:本地内存增删】➔ 允许用户在输入框手动添加书签,能在当前页面即时渲染出来(先不管持久化);
【积木 3:接入数据库】➔ 引入 Supabase,把刚才前端的数据真正保存到云端数据库;
【积木 4:自动化增强】➔ 加一个功能:用户只输入网址,系统自动去抓取网页的 Title 和 Favicon 图标。

为什么切片能让 AI 彻底听话?

  1. 注意力极致聚焦:每一个切片的目标极度单一,AI 的上下文不会被其他无关功能干扰,一次只做一件事,出错率大幅下降;
  2. 极易验收和救错:做完第 1 块积木,你在浏览器里肉眼看一眼,跑通了再进入第 2 块;如果崩了,直接在这个切片内就地解决,绝不会出现“改了前面、塌了后面”的系统性崩盘。

三、 黄金 PRD 结构模版 ​

当你准备启动一个项目或一个核心切片时,不要随手打字。花 3 分钟套用下面这个标准的 “AI-Native 黄金 PRD 模版”,把它保存成一个文本喂给 AI:

markdown
# 需求文档:[项目/功能名称]

### 1. 核心目标与用户场景 (Goal & Context)
- 本模块要解决的核心痛点是什么?
- 典型使用场景:用户在什么情况下、通过什么动作达成什么目的?

### 2. 界面与交互细节 (UI & Interaction)
- 页面必须包含哪些关键元素(如:搜索栏、卡片流、弹窗)?
- 核心交互行为:点击某个按钮时,界面发生什么即时变化?加载中(Loading)和报错时显示什么?

### 3. 技术约束与规范 (Constraints)
- 语言与框架:明确限定范围(如:必须使用 React + Tailwind CSS,图标使用 Lucide)
- 严禁擅自引入未在清单中的重型依赖库。

### 4. 明确的不做清单 (Out of Scope / Non-goals) ★★★ 最重要!
- 本次迭代绝对不做什么?
- (例如:本次暂不考虑用户登录鉴权、暂不做多语言国际化、暂不处理图片上传云存储)

🎯 重点强调:为什么“明确的不做清单(Out of Scope)”最重要?
AI 极度热心,往往有严重的“过度工程(Over-engineering)综合征”。如果你不告诉它什么不用做,它会在一个极小的功能里附赠一大堆你根本不需要的冗余代码,最后反而把自己绕晕。
画地为牢,明确告诉它“别管什么”,是约束 AI 幻觉的最有效武器。


四、 绝招:让 AI 先当“总设计师”(SPEC 驱动开发) ​

即使你写好了 PRD,也不要急着命令它:“马上开始写代码!”

高段位的玩家,会在正式施工前多设一道“蓝图确认卡点”:强制让 AI 把它的理解反写成一份 SPEC.md(技术规格方案)。

实操口令: ​

*“这是我的需求文档。现在严禁编写任何业务代码!
请你先充当资深架构师,通读需求后输出一份 SPEC.md,内容必须包含:

  1. 数据结构设计(有哪些字段和类型);
  2. 计划创建或修改的文件清单及各自分工;
  3. 分步实施步骤清单。
    输出后等待我的审批,只有当我回复‘确认执行’后,你才能开始写第一步的代码。”*
你的 PRD 需求 ──► AI 消化并输出 SPEC.md 蓝图 ──► 你花 1 分钟肉眼审阅
                                                     │
                                         ┌───────────┴───────────┐
                                         ▼                       ▼
                                   【发现理解偏差】        【逻辑清晰无误】
                                   一句话当场纠偏          回复“确认,开工!”
                                 (成本几乎为 0)        (产出近乎完美)

为什么这一招能省掉大半返工时间?
因为修改一份文本方案只需要你动几句嘴皮子,成本几乎为 0;而如果让 AI 带着错误的理解先写了上千行代码,再想扭转它的思路,就得面临漫长的改 Bug 地狱。


五、 实战对照:小白指令 vs 架构师指令 ​

看看同一项任务,两种沟通方式带来的巨大差距:

任务情境小白随缘指令(大概率翻车)架构师标准姿势(稳定可控)
做一个待办清单的过滤功能“加个筛选,能看完成和没完成的。”“实现待办状态过滤切片:
1. UI:在列表上方增加三个选项卡:全部 / 待完成 / 已完成,激活态背景加深;
2. 逻辑:点击切换时,基于本地 state 的 isCompleted 字段做瞬时过滤;
3. 不做:不需要做后端同步,先保证本地过滤交互流畅。”
做一个导出表格的功能“加个按钮把数据导出成表格。”“实现 CSV 导出功能:
1. 技术约束:严禁引入笨重的前端导出大库,直接用原生 JS 拼接 CSV 字符串生成 Blob 下载;
2. 交互:点击后显示‘正在生成...’,下载完成后自动恢复;
3. 先出计划:先告诉我你的拼接思路,不要直接修改主文件。”

📝 结语与本篇自查 ​

  1. 为什么在 AI 原生时代,我们说“写好需求就是最高级的编程”?
    (因为 AI 承担了具体的语法搬砖工作,系统的成败完全取决于人类能否给出无歧义、高收敛的逻辑定义。)
  2. 在需求模版中,为什么“明确的不做清单(Out of Scope)”往往比功能清单还重要?
    (防止 AI 出现过度工程的毛病,画出清晰边界,扼杀不必要的冗余代码和潜在幻觉。)
  3. 在让 AI 动手写大量代码前,多加一道“输出 SPEC.md 方案并等待人工确认”的步骤,核心价值是什么?
    (把纠错成本前置到几乎为零的方案阶段,避免带着理解偏差写出一堆错误代码后再陷入调试地狱。)

下一篇预告:
学会了切片和写 PRD,AI 的单次执行已经非常精准了。但做大项目时,你一定会遇到另一个折磨人的问题:
同一个低级错误,为什么换个新会话 AI 每次都要重新犯一遍?每次都要重新叮嘱它“用中文、别乱引库”烦不烦?
在下一篇《第 11 篇|项目记忆脚手架:用 Harness 与 Skills 让裸 AI 进化成业务老员工》中,我们将传授一套给项目注入“永久基因”的秘法,为 AI 打造一本量身定制的《员工入职手册》!