Skip to content

11.2 Vibe Coding 工作流

🎯 本节目标

掌握 Vibe Coding 的核心工作流:从模糊的想法到可工作的代码,通过 PRD 和任务分解驯服 AI。


❌ 常见错误:直接开始 Vibe

很多人第一次尝试 Vibe Coding 会这样做:

你:"Hey,帮我建一个宠物店的 app"
AI:[开始生成代码]
你:等等,这不是我想要的...
AI:[继续生成更多代码]
你:它陷入了无限循环!

问题所在:

  • ❌ 需求太模糊
  • ❌ 没有足够的上下文
  • ❌ AI 会"脑补"缺失的细节(幻觉)
  • ❌ 容易陷入修复错误的死循环

✅ 正确方法:PRD 驱动开发

什么是 PRD?

PRD(Product Requirements Document,产品需求文档) 是描述项目需求和规格的文档。

PRD 的价值:
├── 强制你思考清楚需求
├── 为 AI 提供充足的上下文
├── 减少 AI 的幻觉
├── 形成可追溯的设计决策记录
└── 适合任何背景的人使用

💡 你不需要任何编程背景就能写 PRD,你只需要你的想法


📝 用 AI 创建 PRD(核心工作流)

步骤 1:启动 PRD 头脑风暴

使用 ChatGPT(4.5、4o 或 o3)发送以下 prompt:

markdown
你是一位资深软件工程师。我们将一起构建一个项目的 PRD。

非常重要:
- 每次只问一个问题
- 每个问题都基于之前的回答
- 深入挖掘每个重要细节

项目想法:
<在这里粘贴你的想法>

步骤 2:进入问答循环

AI 会开始问你一系列问题:

AI: 你的目标用户群体是谁?
你: 主要是 25-35 岁的年轻人...

AI: 他们使用这个产品的主要场景是什么?
你: 通常是在通勤路上或午休时间...

AI: 你希望产品具备哪些核心功能?
你: 必须有 X、Y、Z 功能...

技巧:

  • 尽可能详细地回答
  • 当你觉得足够了,进入下一步

步骤 3:编译 PRD

当问答足够充分后,发送这个 prompt:

markdown
将这些发现整理成一份 PRD。使用 markdown 格式。包含以下章节:

- 项目概述(Project overview)
- 核心需求(Core requirements)
- 核心功能(Core features)
- 核心组件(Core components)
- 应用/用户流程(App/user flow)
- 技术栈(Techstack)
- 实现计划(Implementation plan)

步骤 4:保存 PRD

bash
# 在你的项目文件夹中创建 docs 目录
mkdir -p docs

# 将 PRD 保存为 specs.md
# 复制 AI 生成的内容到 docs/specs.md

步骤 5:生成任务列表

发送这个 prompt:

markdown
基于生成的 PRD,创建一个详细的分步计划来构建这个项目。
然后将其分解为相互依赖的小任务。
基于这些任务,再分解为更小的子任务。
确保步骤足够小可以单独实现,但又足够大能完成项目。
使用软件开发和项目管理的最佳实践,避免复杂度跳跃。
将任务相互关联,创建依赖列表。不应该有孤立的任务。

非常重要:
- 使用 markdown 格式
- 每个任务和子任务应该是一个检查项
- 每个任务提供足够的上下文,让开发者能够实现
- 每个任务应该有一个数字 ID
- 每个任务应该列出依赖的任务 ID

步骤 6:保存任务列表

bash
# 将任务列表保存为 todo.md
# 复制 AI 生成的内容到 docs/todo.md

🚀 开始 Vibe Coding

初始化项目

bash
# 创建项目文件夹
mkdir my-project
cd my-project

# 初始化 Git(重要!)
git init

# 你的项目结构现在应该是:
# my-project/
# ├── docs/
# │   ├── specs.md    # PRD
# │   └── todo.md     # 任务列表
# └── .git/

在 Cursor 中开始开发

打开 Cursor,发送这个 prompt:

markdown
你是一位资深软件工程师。学习 @docs/specs.md 并实现 @docs/todo.md 中还未完成的内容。

每次实现一个任务,尊重任务和子任务的依赖关系。完成一个任务后,在列表中勾选它,然后继续下一个。

启用 YOLO 模式

第一次 Cursor Agent 执行命令时:

  1. 启用 YOLO 模式
  2. 持续点击"接受"或输入 continue
你正在 Vibe Coding!🎸

提示:
├── 有时 LLM 会达到限制,要求重试,正常继续即可
├── 保持关注生成的代码,这会帮助你在出错时调试
└── 定期 commit 你的代码

📓 保持 Prompt 日志

为什么需要日志?

Prompt 日志的价值:
├── 记录设计决策和意图
├── 帮助未来的自己(或其他人)理解项目
├── 识别工作模式和技巧
└── 调试时的重要参考

如何记录

bash
# 创建 prompt 日志文件
touch vibecode.md
# 或
touch history.md

日志内容包含:

  • 你发送的每个 prompt
  • 你当时的思考过程
  • 任何意外的结果

使用 aider 自动记录

aider 会自动保留所有对话历史。配置环境变量:

bash
# 在 .aider.conf.yml 中添加:
# AIDER_CHAT_HISTORY_FILE=.aider.chat.history.md
# AIDER_LLM_HISTORY_FILE=.aider.llm.history

🧠 Prompt 工程技巧

基本原则

markdown
1. 不要一次要求太多
   ❌ "帮我建一个完整的电商网站"
   ✅ "帮我创建用户注册功能"

2. 提供具体细节
   ❌ "帮我写个 API"
   ✅ "用 FastAPI 写一个 /users 端点,支持 GET 和 POST"

3. 指定技术栈
   ✅ "使用 React + TypeScript + Tailwind CSS"

4. 分解任务
   ✅ "先实现任务 1,完成后再做任务 2"

使用 XML 标签强调重点

markdown
<important>
这里是非常重要的约束条件
</important>

<context>
这里是背景信息
</context>

<requirements>
1. 必须支持 xxx
2. 不能做 yyy
</requirements>

跨模型验证

技巧:使用不同的模型验证输出

步骤:
1. 用 Claude 生成代码
2. 用 GPT 审查代码
3. 用 Gemini 提出改进建议

LLM 是 "Yes Machine",所以要保持批判性思考!

🏗️ 项目启动指南

前端项目

框架适用场景部署位置
Next.js需要 Vercel 生态Vercel
Vanilla React + Router灵活部署任意平台
Remix需要好的路由支持任意平台
FastHTMLPython 爱好者任意平台
💡 技巧:
├── 在 Lovable 中启动项目(每天 5 条免费消息)
├── 输出到 GitHub
├── 克隆到本地用 Cursor 继续开发
└── 部署到 Render、Fly.io、CloudFlare 等

项目结构建议:

my-project/
├── frontend/      # 前端代码
├── backend/       # 后端代码
└── docs/          # PRD 和任务

后端项目

语言框架说明
PythonFastAPI推荐,开发效率高
JavaScriptExpress与前端同语言
💡 后端开发建议:
├── 优先写端到端测试
├── 每个新功能完成后运行测试
├── 后端文档可作为前端开发的输入
└── 使用 mock 数据避免过早集成

游戏项目

小游戏技术选择:
├── 单个 .js 文件
├── 3D 游戏:Three.js
├── 2D 游戏:PixiJS
└── 资源生成:Tripo AI、Anything World

⚠️ 处理错误和 Bug

基本策略

markdown
1. 拥抱错误 —— 它们会发生
2. 复制错误信息,粘贴给 LLM 让它修复
3. 使用调试工具如 BrowserTools MCP
4. 不要让 AI 陷入无限修复循环(必要时手动干预)

Rate Limit 处理

当遇到 "rate limit" 错误时:

解决方案:
├── 切换到不同的模型
├── 使用不同的 API 提供商
├── 等待一段时间后重试
└── 准备多个 API Key

📎 实战案例

这是一个使用此工作流创建的真实项目:

项目:CLI 工具 localbiz 仓库github.com/automata/localbiz开发时间:10 分钟

规划会话示例ChatGPT 对话记录


🔗 下一步

继续学习 11.3 高级技巧与集成 —— 掌握 MCP、项目规则和模型选择!


📚 本节参考资源

基于 MIT 许可证发布。内容版权归作者所有。