写在开头
在正式开始之前,我们可以一起看一张图——这是本文的完整结构导览,也基本涵盖了 Vibe Coding 从理念到实践的全流程。你会发现,整个过程中’写代码’只占了很小的一部分,更多的篇幅都在讲’如何思考’和’如何与 AI 沟通’。
第一部分:什么是Vibe Coding
在这个部分,我会做一个简单的概念介绍。以及他是否真的有营销号传的那样神乎其神,在实际的使用过程中,你可能碰到的情况是什么样的,你会遇到什么卡点和困境。
第二部分:在动手之前先动脑
这是整篇文章的核心,也是Vibe Coding最关键的一步。我会带你通过四个维度深度思考你的产品,然后把这些思考落地成一份清晰的 PRD。这一步做好了,后面的开发就会顺畅很多。
第三部分:真正开始 Vibe Coding
从创建仓库、搭建脚手架,到生成功能模块、调试错误,我会告诉你每一步的最佳实践,以及如何写出让 AI 真正理解你的提示词。
如果你是第一次接触 Vibe Coding,建议按顺序阅读;如果你已经有一些经验,可以直接跳到你感兴趣的章节。在每一章的开头,你都会得到一个思维导图,帮你先获得一个全局的了解。
现在,让我们从’Vibe Coding 到底是什么’开始。全文大约5000字,阅读时长15-20分钟。
Vibe Coding是什么?
简单来说,Vibe Coding就是用自然语言告诉AI你想要构建什么,AI就能自动为你生成代码并构建应用。
听起来真的很美好,对吧?你再也不需要程序员,现在营销号把Vibe-Coding传的神乎其神,有一个Idea就可以跑出一个PMF。
但如果你用过 Cursor、Claude Code 或 Lovable,你可能有过这样的体验:刚开始真的很惊艳,一句话就能生成一个完整页面,但是没过多久你就会发现这些代码不是不能跑,就是频繁报错,改一点小逻辑,整个项目就崩掉,最后你看不懂、改不动,剩下一堆屎山代码。
欢迎来到 Vibe Coding 的至暗时刻——这些快速生成的代码其实很难维护、逻辑混乱、充满了隐藏的技术债。
那我们该如何避免走到这一步?关键在于把“写代码”放在后面,把“想清楚要做什么”放在前面。
在 Vibe Coding 中,最重要的一步不是写代码,而是通过与 AI 交互,逐步搞清楚:你到底要做一个什么样的产品?需要使用什么样的框架?然后把这些思考写成一份清晰的 PRD。
深度思考:你要构建一个什么样的产品?
在动手之前,我们要先搞明白:我究竟要构建一个怎样的产品?它存在的意义是什么?要提供什么价值?我要通过它解决谁的什么问题?
这一步是很多人最容易卡住的地方,但也是最重要的一步,所以千万不能跳过。没有做过产品经理的人常常会觉得无从下手,但是没关系,我们可以从四个角度慢慢捋清楚。
第一个角度:这是什么产品?
这是最基础的一步,也是最关键的“起点”。你需要回答几个看似简单的问题:它叫什么名字?这是一个什么类型的应用?如果只能用一句话描述它的功能,你会怎么说?
举个例子:假设我们想做一个叫 TodoMate 的小工具,它能帮你自动整理每天要做的事,提醒我重点任务,还能根据完成情况生成小总结。那如果用一句话描述,它就是:“TodoMate 是一个帮我规划一天、自动提醒并追踪进度的智能待办助手。”
看起来很简单,但我们其实已经回答了最核心的三个问题:它是什么(一个待办工具)、为谁服务(忙碌的人)、解决什么问题(时间管理与效率)。
这就是一个清晰的产品起点。当你能用一句话准确描述你的产品,AI 才能真正理解你想做什么。
第二个角度:它怎么运作?目标是什么?
接着,我们要想想它是怎么工作的。还是以TodoMate为例:
用户要做哪些操作?
想象一下用户进入产品的完整流程。用户操作可能是:用户输入待办事项 → AI 自动分类并生成优先级 → 到时间后提醒用户执行。
这就是一个最小可用流程,简单、完整、能跑通。
我们不需要一开始就设计一个复杂的交互,但是必须确保核心路径是清晰的。
核心功能有哪些?
这里需要做减法。我们不需要一次想到所有功能,但是需要分清哪些是核心必须(比如添加事项、提醒和完成),哪些是可以后期拓展的(比如智能分析、可视化看板)。
在产品的第一期,我们要先把核心功能做出来,然后再逐步考虑锦上添花的东西。
输入是什么?输出是什么?
在TodoMate中,用户输入的可能是任务内容,输出是任务清单、提醒、可视化建议等。
你怎么判断这个产品是否“成功”?
比如用户每天打开 TodoMate 的次数、平均完成任务的比例、用户留存率等等,这些指标会在后续变成可追踪的优化目标,也是后续的功能迭代方向。
第三个角度:如何实现?
到这里,我们的产品已经从’脑海里的一个想法’,变成了’一个有清晰逻辑的系统’。但如何让逻辑变成可运行的程序,就需要开始思考技术实现层面的问题了:
这些数据(待办事项)该怎么保存?要不要设置任务优先级?是否需要云同步?有哪些异常情况(比如重复提醒、任务被删除)?产品分为哪些模块?每个模块负责什么功能?
这个阶段不需要写出技术文档,但需要心里有数:这个产品大概是个什么样的结构,这样你后续才能提供足够的上下文信息。
第四个角度:如何让它更好?
最后一步,跳出“能用”的思维,思考如何优化与创新。能不能自动识别语音输入?能不能根据用户习惯智能排序?能不能用一句话总结今天的完成情况?
好产品的往往是在不断地追问“还能不能更好”中诞生。即使这些优化功能暂时做不了,先想清楚方向,也能为后续迭代留下空间。
总的来说,Vibe coding 的第一步,不是写代码,而是写清楚需求。当我们能准确地描述要构建的产品、定义清楚你产品的理想态,AI 才能真正帮你实现那个想法。在 Vibe coding 中,真正的起点是清晰的思考,想的越清楚、做的越顺利。
写出你的PRD
Vibecoding 的第一步,是想清楚我们要构建一个什么样的产品,那接下来就要把这些思考落地成文。PRD 在 Vibe coding 里非常重要,是贯穿整个开发过程的上下文基础。写 PRD就是让我们的想法变得清晰、可被理解、可被执行。
PRD无需长篇累牍,但一定要覆盖核心信息。一般来讲,PRD通常包含以下几个部分:
项目概述
简明扼要地介绍产品的核心信息,包括:产品名称、一句话定位(产品是什么)、项目目标(要达成什么),以及核心问题(解决什么痛点)。
这部分的关键是让 AI 快速理解:我们在构建什么、为何构建、预期成果是什么。
技术栈
明确项目所需的技术架构,包括:使用的编程语言(如 Python、JavaScript)、前端或后端框架(如 React、Next.js、Flask )、调用的 API(如 ChatGPT API)、其他技术要求(如数据库类型)。这部分不仅能帮助你梳理开发边界,也能让 AI 更清楚技术上下文。
建议优先选择常见、成熟的语言和框架。由于 AI 的模型训练基于广泛的公开代码语料,主流技术生态往往能带来更高的生成质量与稳定性。
功能列表
列出产品的核心功能,并为它们排序优先级。同时需要明确:
哪些是核心功能(MVP)?—— 没有它,产品就无法成立
哪些是可延展功能?—— 可以放到后续版本中实现
功能之间是否存在依赖关系?——确认开发顺序和技术关联

回答完这些问题,我们就得到清晰的MVP边界。
用户旅程图
也就是用户使用产品的完整体验路径,我们需要从用户视角还原真实的用户体验流程。
从用户视角出发,思考:谁是我们的目标用户?他们的操作路径是什么?输入 和输出分别是什么?有没有特殊需求或使用约束?我们如何判断一次成功的体验?
UI 界面
虽然 AI 已经能帮你生成界面,但我还是建议自己用 Figma自己画一版,这能帮助我们更好地梳理信息结构,我们需要在这里明确:界面布局、按钮与交互逻辑、信息层级与视觉优先级。
写 PRD 的过程,其实就是让模糊的想法变得清晰的过程。我们能清楚地描述出产品长什么样、怎么用、为什么这样做,AI 也才能真正成为程序员,而不是一个随机的代码生成器。
正式进行Vibe Coding
现在我们已经有了一份清晰的PRD,也已经决定了你的技术栈。可以正式开始Vibe Coding了。
准备工作
我们需要注册一个Github账号并登录,并安装一个AI Code工具,我个人会比较推荐Cursor和VS Code中的Copilot。Claude Code固然很棒,但是对对终端不熟悉的人不太友好,学习成本较高。
Vibe Coding的过程中存在不稳定性,我们的每一次修改可能能让我们的项目更好,也有可能让它崩掉。所谓版本控制,就是帮助我们保存、和记这个过程,来确保我们随时可以回退到最初的版本。
目前绝大多参数的AI Code工具(无论是Cursor、Claude Code)都和Github实现了无缝集成,Github可以帮我们记录每次生成的代码、查看改动历史、回退到任何一个历史版本,在不同工具之间无缝同步。
因此,我们需要在项目最开始就创建你的仓库,并复制你的链接。在这里,我们假设仓库链接是https://github.com/yourname/my-app.git。
创建好后,在我们的终端运行以下代码:
git remote add origin https://github.com/yourname/my-app.git
git branch -M main
git push -u origin main
到这里,我们的Github就准备好了,从现在开始,我们每实现一个小功能,最好都在终端运行一次:
git add .
git commit -m ‘备注’
git push
这样,我们就可以确保无论换电脑还是换平台,项目都可以无缝衔接。
让AI帮你创建脚手架
在真正开始写代码之前,我们需要先搭建脚手架。
所谓脚手架,就是项目骨架和初始模板。脚手架决定了项目的文件结构(比如哪里是页面、哪里是组件)、基础配置、初始逻辑等。这样能够确保你后续的代码都是在同一套规范下进行。
如果我们直接让AI开始写(比如“帮我写一个登录系统”),它可能会随便创建文件夹结构、不统一命名规则、生成重复依赖,久而久之我们就不得不全部删掉重写,但是有了脚手架,项目从一开始就有了骨架,AI会在同一个结构下持续生成可维护的模块。
AI完成后,我们需要确保项目文件夹创建成功,有README(说明文档)、package.json(依赖管理和脚本配置)等基础文件。
生成功能模块
接下来,我们就可以生成我们的功能模块了。但是这里要注意的就是,不要试图让AI一次就构建出一整个模块。
即使是再聪明的模型,一旦任务过大,也会进入混乱。正确的做法应该是从核心或基础的功能开始,等这个部分看起来完整后进行版本保存,再进行下一步,然后不断循环提示、生成代码、反馈、新提示的过程。
调试错误
为了让AI能像人类开发者一样能够“复现问题、理解上下文、并给出解决方案”,在调试错误的时候也需要注意提供足够明的信息。
首先,理解整体结构并定位问题。先收集调试上下文:包括错误截图、完整报错信息,以及可能出问题的代码位置。让AI知道系统是什么样、哪一块了问题,否则AI无法判断错误的是逻辑、数据、还是结构性的。
然后清楚描述:你的预期的表现是什么、实际的表现又是什么,并指出具体错误位置,这样AI才能判断偏差的方向。
在此基础上,进一步整理项目的文件结构、搞清楚代码的运行逻辑,让AI能够理解问题发生的环境。AI是静态推理,它不会自己“点进去看文件”。你要告诉它项目结构和关键逻辑,它才知道怎么改。
最后,将这些信息一并提供给AI,让AI协助分析错误原因、给出修复建议或生成修正版代码。
当信息充分、逻辑清晰时,AI才能准确定位问题,并生成可靠的修复方案,而不是“凭空猜”。
撰写提示词
在这个过程中,如何撰写提示词非常非常重要。一个模糊的提示词会让AI完全不明确你的需求,随便做一个,来回修改十次,最终崩溃。因此,写提示词的撰写水平很大程度上决定了我们和AI交互的效率。
SCAFF模版这是一个提示词结构框架,已经被多次验证有效,能够稳定生成高可用的代码。这个模版包含五个部分:
Situation(情境):项目背景、现有架构、技术栈
Challenge(挑战):要完成的具体编码任务
Audience(受众):代码的使用者或维护者的技术水平
Format(格式):代码的结构和组织方式
Foundations(基础):相关的现有代码模式、约束和限制条件
这个链接提供了非常详细的展示,可以进行参考:https://docs./document-templates/ai-prompt-library-template
在写的时候,还有几个要点需要注意:首先是明确性,每个 prompt 都需锁定清晰目标,明确告知 AI 需实现的功能与期望的输出格式,避免模糊表述导致理解偏差;其次是最小化改动原则,应限定 AI 仅修改必要代码模块,不触碰无关部分,防止因牵一发而动全身引发新的逻辑混乱;同时要充分提供上下文,把当前项目的进度状态、技术架构、依赖关系等信息完整传递给 AI,帮助AI建立准确的开发环境认知;最后需明确限制条件,比如明确标注 “不要修改样式文件”“禁止生成额外无关函数” 等禁忌,避免 AI 产生不必要的冗余操作。
写在最后
如果你完整读到了这里,相信你已经明白:Vibe Coding 不是’让 AI 帮你写代码’,而是’让 AI 帮你实现想法’。
这两者的区别,就像是’给 AI 一张草图让它盖房子’和’给 AI 一份完整的建筑图纸让它施工’,前者注定会得到一个摇摇欲坠的违章建筑,后者才能建成一个可以长期使用的房子。
回到文章开头那个场景:为什么你让 AI 做了一个待办应用,却很快就陷入了代码屎山?和与AI交互的很多场景一样,是因为你没有给它足够清晰的指引。
当你只是说’帮我做一个待办应用’,AI 只能按照它理解的’通用待办应用’来生成代码。但你脑子里想的可能是一个带智能排序、语音输入、跨设备同步的复杂系统。这种信息差就是混乱的根源。
而当你按照本文的方法,先深度思考产品的四个维度,写出清晰的 PRD,再用 SCAFF 模版逐步引导 AI 开发——你会发现,AI 不仅能理解你的需求,还能持续在同一套逻辑下生成可维护的代码。
Vibe Coding 正在改变软件开发的方式,让更多人可以把想法变成现实。但工具只是工具,真正重要的,始终是我们的思考、审美和判断。
希望这篇文章能帮你少走弯路,避开屎山代码。如果你在实践中遇到了问题,或者有更好的经验想分享,欢迎交流。