Vibe Coding 技巧:模块化 PRD 方法,让 AI 写出不崩的项目

适用于 Claude Code、Cursor、Copilot 等 AI 编程工具的模块化 PRD 开发方法
作者:驴哥 | 分类:技术 / Vibe Coding | 标签:vibe-coding, PRD, Claude-Code, Cursor, AI编程

适用工具:Claude Code、Cursor、Copilot 等 AI 编程工具
目标读者:大一大二刚开始尝试 AI 辅助编程的同学
核心观点:别让 AI 一口气写整个项目——分模块写 PRD,迭代开发,才能稳。

一、什么是 VibeCoding?(30 秒搞懂)

VibeCoding = 用自然语言跟 AI 聊天,让 AI 帮你写代码。

你不一定需要精通语法,但要知道自己想要什么、能判断 AI 给的东西对不对。

特点:

  • :一句描述就能生成一个函数
  • :不用手敲大量样板代码
  • :聊着聊着 AI 就忘了之前的约定,代码前后矛盾

所以要给 AI 一份”施工图纸”——这就是 PRD。

二、PRD 是什么?(1 分钟搞懂)

PRD = Product Requirements Document(产品需求文档)

简单说:一份告诉 AI “我们要做个什么东西、具体怎么工作” 的文档。

一份好的 PRD 包含:

  • 这个功能要解决什么问题
  • 用户怎么操作(步骤)
  • 系统怎么响应(规则、边界)
  • 数据长什么样(用户、订单…)
  • 什么情况算成功

注意:PRD 不是给老板看的废话,而是给 AI 吃的”结构化需求”。

三、为什么我的方法不是”一个大 PRD”,而是”每个模块一个 PRD”?

大多数新手会犯一个错误:让 AI 一次性写出整个项目的 PRD。结果 AI 上下文爆掉、前后矛盾、改一个地方全局乱套。

我的做法(实践证明很稳):

1
2
3
4
5
不写 "购物车系统 PRD"   →   而是写
├── 用户登录模块 PRD
├── 商品浏览模块 PRD
├── 加入购物车模块 PRD
└── 下单支付模块 PRD

而且每个新模块的 PRD,都要让 AI 先读取之前已经写完的模块 PRD,再写新的。

四、这个思路的完整流程图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Step 1  写一个极简的"全局约定"文件(比如 global.md)
- 用户 ID 用什么格式(如整数 / UUID)
- 错误码统一规则
- 时间全部用 UTC

Step 2 挑一个核心模块(比如"用户注册")
让 AI 读取 global.md → 写出 user-register.md (PRD)

Step 3 让 AI 根据这份 PRD 生成代码 → 测试 → 修改 → 能用

Step 4 下一个模块(比如"用户登录")
让 AI 读取 global.md + user-register.md → 写出 user-login.md

Step 5 生成代码 → 测试 → 集成

重复,直到所有模块完成。

关键动作:每写一个新 PRD,AI 都必须读”全局约定” + “已有相关模块 PRD”。

五、为什么这样更好?(理性分析)

1. 符合 AI 的”脑子容量”

AI 一次能记住的内容有限。分模块 PRD 短小精悍,AI 理解更准,bug 更少。

2. 模块之间不会打架

因为有”全局约定” + “读已有 PRD”,新模块会主动对齐之前的设计。

3. 改一个模块不影响其他

比如”登录”加了验证码,只需要改 login.md 和对应代码,”注册”不用动。

4. 适合多人协作(或你跟 AI 分工)

你可以让 AI 同时写两个不相关的模块 PRD,最后拼起来。

5. 对新手特别友好

一次只思考一个小功能,不容易 overwhelmed(崩溃)。

六、手把手教你写一个最小模块 PRD(模板)

你可以把下面的内容复制给 AI,让它按这个格式填写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 模块名称:________________(如:用户注册)

## 1. 目标
(用一句话说清楚,例如:允许用户用手机号注册账号)

## 2. 输入
- 手机号(11 位数字,不能为空)
- 验证码(6 位数字)
- 密码(8-20 位,含字母+数字)

## 3. 处理规则
- 验证码 5 分钟内有效,错误 3 次锁定 1 分钟
- 手机号已存在则提示"已注册"
- 密码存为 bcrypt 哈希

## 4. 输出
- 成功:返回 { user_id, token, 过期时间 }
- 失败:返回 { error_code, error_msg }

## 5. 与其他模块的关系
- 依赖:无
- 被依赖:登录模块、个人中心模块

## 6. 验收标准(用 Given-When-Then 写)
- Given 新手机号 13800001111,When 输入正确验证码和密码,Then 用户创建成功,返回 token
- Given 已注册手机号,When 再次注册,Then 返回错误"手机号已存在"

AI 填完后,你再把这份 PRD 作为”需求”,让它写代码。

七、几个容易踩的坑(一定要看)

坑 1:全局约定太随意

  • 后果:用户模块用 int id,订单模块用 string id,AI 会写出无法联调的代码。
  • 解决:一开始就写半页纸的 global.md,哪怕只有 5 条规则。

坑 2:修改了老模块的 PRD,但忘了告诉 AI

  • 后果:新模块还在用旧规则,造成不一致。
  • 解决:每次改完一个 PRD,主动对 AI 说:”我更新了 user-register.md,请检查依赖它的其他 PRD 并同步更新。”

坑 3:PRD 太长,让 AI 读不进去

  • 后果:AI 截断、遗忘。
  • 解决:每个 PRD 尽量控制在 200 行以内。超过就拆子模块。

坑 4:写完 PRD 不写测试

  • 后果:AI 写的代码可能只满足表面要求。
  • 解决:让 AI 先根据 PRD 的”验收标准”生成单元测试,再写实现代码。

八、一句话总结

VibeCoding 不是让 AI 瞎写,而是你先给它模块化的 PRD 拼图,它才能画出不跑偏的代码。分而治之,才是跟 AI 做朋友的正确姿势。

九、推荐工具组合

  • Claude Code(或 Cursor):直接对话 + 读取项目文件
  • Notion / VS Code 本地文件夹:存放 global.md + 各模块 PRD
  • Git:每个模块 PRD 和代码分别提交,方便追溯

你甚至可以让 AI 帮你维护一个 INDEX.md,列出所有模块 PRD 及其依赖关系。

写在最后

这个方法不是我想出来的,而是很多人在用 AI 做真实项目中摸索出的经验。你可能会觉得”写 PRD 好麻烦”,但等你被 AI 的反复横跳折磨两次后,就会回来感谢这份文档。

有任何问题,直接拿着这份文档去问 AI,让它帮你实践。

Happy VibeCoding!