Vibe Coding 项目实践

2026-02-27

阅读Vibe Coding 项目实战 - 鱼皮的 AI 知识库(免费) - 鱼皮AI导航的学习笔记

一、Vibe Coding 项目开发流程

在Vibe Coding的模式下,如果对项目的规划不清楚,AI就会自由发挥,生成的代码效果可能与人脑中的预期相差甚远;所以要想尽可能减小这个偏差,就需要一个清晰完整的开发流程,具体来说,可以分为五步走:

  1. 需求研究 (Research)
  2. 产品需求文档 (PRD)
  3. 技术设计文档 (Tech Design)
  4. AI代理指令(AGENTS.md)
  5. 实现和迭代 (Build)

步骤一、需求研究

需求研究是对自己想做的产品的一个调研,具体来说分为三步:

  1. 明确产品定位(功能目标):先问自己几个问题:我想解决什么问题?这个问题真的值得解决吗?我希望做出来的东西是什么样的?比如你想做一个记账应用,那就要想清楚:是给自己用还是给别人用?主要记录哪些类型的账目?需要哪些核心功能?

  2. 调研类似产品:去看看市面上有没有类似的产品,它们是怎么做的?有什么优点和缺点?可以搜索相关的应用或网站,看看别人的开源项目,或者直接问AI:“有哪些好用的记账应用?它们有什么特点?“ 这一步很重要,可以避免重复造轮子,也能给你提供灵感和参考。

  3. 记录发现:把自己的想法和调研结果记录下来,形成一个简单的文档,比如RESEARCH.md。这个文档不需要很正式,就像写日记一样,记录你的想法和发现就行。

    # 记账应用需求研究
       
    ## 目标
    做一个简单易用的个人记账应用,帮助自己养成记账习惯。
       
    ## 调研发现
    - 市面上的记账应用功能都太复杂了
    - 我只需要快速记录收入和支出
    - 最好能看到每月的统计数据
       
    ## 核心需求
    1. 快速添加收支记录
    2. 按日期查看记录
    3. 查看月度统计
    4. 数据本地存储
    

步骤二、产品需求文档(PRD)

完成需求研究后,自己脑中应该就有一个较为清晰的产品格式了,接下来就需要形成一份正式的PRD。

一个好的PRD可以让AI帮自己扩充完成,比如我们可以把这段prompt发给Gemini / ChatGPT

我要做一个记账应用,能快速记录收支,查看每月统计。
要简单易用,不要复杂的功能。

请帮我把这个需求扩展成完整的产品需求文档(PRD),
要包含:
1. 产品概述和目标用户
2. 详细的功能列表
3. 功能优先级(MVP 和后续版本)
4. 界面设计要求
5. 技术栈建议
6. 非功能性需求(性能、安全等)

根据LLM的输出,我们再根据自己的需求修改和完善

一份完整的PRD通常应该包含

  • 产品概述 (简单介绍这个产品是什么)
  • 目标用户(谁会用这个产品)
  • 核心功能 (列出所有要做的功能)
  • 功能优先级 (哪些是必须做的,哪些是可以后续添加的)
  • 界面设计 (简单描述界面应该是什么样的)
  • 技术栈建议
  • 代码风格和架构模式
  • 限制条件和边界场景
# 记账应用 PRD

## 产品概述
一个简单的个人记账应用,帮助用户快速记录日常收支。

## 目标用户
需要记账但不想用复杂应用的个人用户。

## 核心功能

### 必须做(MVP)
1. 添加收支记录
   - 输入金额
   - 选择类型(收入/支出)
   - 选择分类(餐饮、交通、工资等)
   - 添加备注(可选)
   - 选择日期

2. 查看记录列表
   - 按日期倒序显示
   - 显示金额、类型、分类、备注
   - 可以删除记录

3. 月度统计
   - 显示当月总收入
   - 显示当月总支出
   - 显示当月结余

### 后续可以做
- 数据导出
- 图表展示
- 预算设置
- 多账户管理

## 界面设计
- 首页:显示记录列表和添加按钮
- 添加页面:表单输入
- 统计页面:展示月度数据

步骤三、技术设计文档(Tech Design)

这一步需要输出一个 TECH_DESIGN.md 文件,用来确定项目使用哪些技术栈以及确定大致的技术架构,TD文档需要包括:

  • 技术栈选择(前端用什么、后端用什么、数据库用什么)
  • 项目结构 (代码怎么组织)
  • 数据模型 (需要存储哪些数据)
  • 关键技术点(有哪些技术难点需要注意)

这里的技术栈选择可以参考现有的软件所采用的技术栈,也可以询问LLM,看下自己的需求适合通过哪些技术栈来进行实现。然后让AI输出一个完整的TDD

# 记账应用技术设计

## 技术栈
- 前端:React + TypeScript + Vite
- 样式:Tailwind CSS
- 数据存储:LocalStorage
- 部署:Vercel

## 项目结构

src/
  components/     # 组件
  pages/          # 页面
  hooks/          # 自定义 Hooks
  utils/          # 工具函数
  types/          # 类型定义

## 数据模型

### Transaction(交易记录)
- id: string
- amount: number
- type: 'income' | 'expense'
- category: string
- note: string
- date: string

## 关键技术点
1. 使用 LocalStorage 存储数据
2. 使用 React Hooks 管理状态
3. 使用日期库处理日期(date-fns)

步骤四、AI agent指令

为了保证软件开发流程的顺畅,代码质量的稳定,通常需要遵循一定的代码开发规范。为了保证LLM输出的代码质量,我们需要一个文件告知LLM,在项目开发中需要遵循什么规则,这个文件命名为:AGENTS.md

AGENTS.md 是一个标准化的文件格式,用来指导AI编程工具如何工作。它就像是给AI的“工作手册”。这个标准由 OpenAl、Anthropic、Google 等公司共同推动,目前已经有超过8万个开源项目在使用。主流的 Al 编程工具, 比如 Cursor、Windsurf、Claude Code、Gemini CLl、GitHub Copilot 等都支持自动读取 AGENTS.md 文件。

AGENTS.md应该包含:项目概述、开发规范、测试要求、代码风格、注意事项等。(也可以交由AI生成并逐步完善)

# 记账应用 AI 开发指令

## 项目概述
这是一个简单的个人记账应用,使用 React + TypeScript 开发。

## 开发规范
- 使用 TypeScript,确保类型安全
- 组件使用函数式组件 + Hooks
- 使用 Tailwind CSS 编写样式
- 所有数据存储在 LocalStorage

## 代码风格
- 使用 ESLint 和 Prettier
- 组件名使用 PascalCase
- 函数名使用 camelCase
- 常量使用 UPPER_SNAKE_CASE

## 测试要求
- 每个功能完成后手动测试
- 确保数据正确存储和读取
- 测试各种边界情况

## 注意事项
- 保持代码简洁,避免过度设计
- 优先实现核心功能
- 确保移动端适配

步骤五、实现与迭代(Build)

对于复杂的项目,一步到位不现实,通常通过分步迭代实现:

  1. 生成基础框架:其实就是脚手架(前端可以直接通过官方脚手架直接生成)和后端框架

  2. 逐步实现核心功能:把项目拆解分成多个小功能,一个一个实现,这一步核心是先跑通核心业务流程、实现核心功能。每完成一个功能就测试是否可以正常运行,排除bug,界面是否符合预期
  3. 优化实现细节:在不影响功能的前提下,优化性能、改进用户体验、美化界面

避免失控

  1. 项目模块化:由于AI的上下文是有限的,随着项目信息量不断增大,它可能忘记之前的信息,导致生成的代码错误。所以我们要把项目的功能尽可能隔离开,把一个大项目分割成多个小模块。

    • 举个例子,开发一个电商系统,可以把商品管理模块独立出来。当需要AI生成添加商品功能的代码时,只需要提供商品表的字段设计、添加商品的业务逻辑规则,不需要把支付结算、用户会员等关联不大的功能作为上下文提供给AI
  2. 限定修改范围:AI生成的代码没有那么可控,经常改A功能的同时把B功能也顺带修改了。这个问题很好解决,只要在提示词中限定修改范围即可

    仅修改 components/AddTransaction.tsx 文件:
    1. 添加表单验证功能
    2. 保持现有的样式和布局
    3. 不要改动其他文件
    
  3. 抽象与复用:假如我们要让AI生成2个布局一模一样的页面,它有时会很死板,生成完页面A之后,复制一遍页面A的代码来生成页面B。这样非常不利于大项目的维护,以后AI改了页面A,说不定页面B就忘了改。所以我们需要主动告诉AI:

    请帮我抽象这个页面为可复用的组件,
    让其他页面可以通过传入不同的参数来使用。
    
  4. 版本控制:每实现一个小功能 、 修正一个小bug,就提交一次代码

  5. 人工控制:AI有时会因缺乏关键上下文信息、或者自身能力的不足而陷入循环。比如改来改去总是出现同样的错误,或者一直在做无用功。这时就有必要人工介入了。可以尝试手动指定上下文、更换Prompt换个角度描述问题、清空对话历史重新开始,甚至手动修改部分代码给AI一个正确的方向

  6. 多元AI协作:不同AI大模型擅长不同任务。如果单一大模型无法正常完成工作,可以利用其他大模型生成“教AI做事的方法和指令 比如,你在Cursor 中使用GPT 生成的代码有问题,你可以:

    • 把代码和错误信息复制给Claude或Gemini
    • 让它分析问题并给出修改建议
    • 把修改建议再告诉GPT,让它修改代码