Vibe Coding 这个词最近半年在各个技术社区里出现的频率越来越高,尤其 Vercel 推出 AI Vibe Coding Platform 之后,讨论又上了一个台阶。我最初听到这个说法时是持怀疑态度的,觉得无非是“AI 辅助编程”换了个名字。直到我自己把一个完整小项目用这种思路从零做到上线,才发现它真正改变的不是怎么写代码,而是怎么思考一个需求。
这篇文章不打算讲抽象概念,我会直接用自己最近一个从想法到上线的项目做例子,拆成 5 个步骤,把过程里踩过的坑、试过的工具、总结出的 prompt 模板都放出来。适合两类人看:一类是还在观望、想知道 Vibe Coding 到底靠不靠谱的朋友;另一类是已经上手了,但总觉得 AI 生成的代码改起来很痛苦、越写越乱的人。看完你应该能理解,Vibe Coding 的核心不是让 AI 替你写代码,而是你学会如何正确地把脑子里的想法“喂”给 AI。
1. 先想清楚:Vibe Coding 到底在解决什么问题
1.1 Vibe Coding 不是玄学,而是把表达放在第一位
我见过不少人对 Vibe Coding 的理解停留在“像聊天一样让 AI 写代码”,这个说法没错,但它忽略了一个关键点:Vibe Coding 真正改变的是分工方式。以前做软件,你的精力要均匀分配在需求分析、架构设计、编码实现、测试修 Bug 这几件事上。现在有了高质量代码模型的辅助,实现层面的大量工作可以被压缩,你需要把更多精力放到“表达需求”和“判断结果”上。
打个比方,传统开发有点像定制家具:你得先画图纸、量尺寸、选板材,每一步都得自己想清楚,然后找师傅做。Vibe Coding 更像是你请了一个特别勤快的助手,你只需要很具体地告诉他“我想要一个靠墙的书架,高度到腰,有三层隔板,最下面一层要留出放收纳箱的空间”,他就会快速给你出一个成品让,你来看效果、提修改意见。描述问题的质量,直接决定成品的质量。
这也是为什么我会把 Vibe Coding 理解成一种“以表达为核心的开发方式”。代码生成器本身已经不是新鲜事,真正稀缺的是一个人能不能把一个模糊的、一闪而过的想法,转成 AI 能执行、能反馈、能迭代的清晰指令。项目能做到什么程度,基本上在第一步就决定了。
1.2 它与 Spec-Driven 的区别,决定你什么时候该用它
很多人会把 Vibe Coding 和 Spec-Driven(规格驱动开发)放在一起对比,这两个词我都在不同项目里实践过,说下感受。
Spec-Driven 的核心是先写文档、先定规格。你先把需求拆成详细的用户故事,定义清楚接口、字段、边界条件、技术约束,然后让 AI 按这份规格去实现。这种方式的好处是结果可控、过程可追溯,非常适合需求相对明确、多方协作、需要长期维护的项目。坏处也很明显:写一份完备的规格文档成本很高,而且一旦需求变化,改文档、改实现、改测试的链路非常长。
Vibe Coding 完全反过来。它默认需求是模糊的、会变的,所以采用“边聊边做、快速验证、持续修正”的方式。你一开始不用想清楚所有细节,只需要给出一个大致方向,让 AI 生成一版原型,然后通过对话不断调整。
这两种方式不是非此即彼。我的经验是:探索期、原型期、个人项目或小团队内部工具,大胆用 Vibe Coding,因为这时候最大的成本是试错成本,而不是维护成本;项目一旦稳定下来,要进入正式迭代、多人协作,就补上 Spec-Driven 的规格和约束,让 AI 在明确的边界里干活。最好的状态不是二选一,而是先用 Vibe 把路蹚出来,再用 Spec 把路固定下来,这也是后面我会专门讲“从 Vibe Coding 到 Harness × SDD”的原因。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 第1步:把“我有一个想法”翻译成 AI 能懂的指令
2.1 先做减法:一句话说清最小可用版本
我的项目是一个“团队周报自动汇总工具”。最初的想法其实很散:想做一个工具,能自动收集大家写的周报,能按项目归类,能生成摘要,能统计工时,最好还能对接钉钉和飞书……如果把这些需求一次性全部丢给 AI,结果大概率是一堆互相冲突的代码,根本跑不起来。
我后来做的事,是把念头全部写下来,然后用“5W1H”逐个过一遍,做减法:
- Who:给谁用?5 人以内的小团队。
- What:核心要解决什么?把分散在群里的周报文字汇总成一份片段。
- When:什么时候用?每周五下午。
- Where:数据从哪来?粘贴到页面上的文本,或者群里导出的消息记录。
- Why:为什么要做?人工复制粘贴太烦,且容易漏人。
- How:怎么用?打开网页,粘贴文本,点生成,看到汇总结果。
过完这一轮,我砍掉了“对接钉钉飞书”“统计工时”这些非核心诉求,把第一版目标压缩成一句话:给 5 人以内的小团队,每周五自动聚合粘贴进来的周报文字,生成一份分成员的摘要清单。
这句话,就是我要喂给 AI 的第一条指令。它足够简单,AI 不会误解;它足够具体,AI 知道要做什么、不做什么。这一条建议对所有人都成立:不要试图让 AI 一次做完你要的 80 分,先让它做到 60 分能跑起来,后面再迭代到 80 分。
2.2 创建可复用的 prompt 模板
确定一句话需求之后,第二步就是把它扩展成一条完整 prompt。我总结了一个比较稳的模板,目前一直在用:
你是一名全栈工程师,请帮我实现一个 [项目一句话描述]。
技术栈:[明确技术栈,比如 Next.js + TailwindCSS,不引入额外后端]
输入:用户粘贴的周报文本,格式可能是 [列举几种可能格式]
输出:按成员分组、按日期排序的摘要清单,支持一键复制
边界:不需要登录系统;不需要数据库;不要处理图片附件;单次最多 50 人
验收标准:粘贴 3 人周报,点击生成,能正确输出 3 个分组,且内容无遗漏
这里的几个部分都很有讲究。技术栈一定要写清楚,如果不说,AI 可能默认给你上全套工程化配置,反而拖慢速度。边界条件尤其重要,你明确说“不要数据库”,AI 就不会给你引入重型存储;“不要登录”,它就不会平白加一个认证页面。验收标准是给 AI 一个“做完”的判据,也方便你自己检查结果。
我当时用这条 prompt 生成的第一版,大概只有不到 300 行代码,但已经能完成核心功能:粘贴文本、解析成员名、按日期聚合、输出摘要。对比一下我最早那种“帮我写一个周报汇总工具”的写法,生成结果是完全不同的质量。Vibe Coding Guide 里最常提的一句话就是:你用越具体的词描述问题,AI 返回的代码就越接近你能用的水平。
3. 第2步:搭建工具链,选对 AI 编程环境
3.1 从 Cursor 到 Vercel AI Vibe Coding Platform 的选型思路
环境选型这一步看起来简单,实际决定了后面整个开发节奏。我这些年用过不少方式,简单做个对比,方便你判断自己该用哪类工具:
| 工具/方式 | 适合场景 | 优点 | 缺点 |
|---|---|---|---|
| Cursor | 已有代码库、本地项目迭代 | 上下文控制强,能精准改某个文件;支持多文件关联修改 | 需要本地环境,新手配置模型时容易一头雾水 |
| GitHub Copilot | 日常开发补全、写重复代码 | 融入编辑器,随写随补,不打断思路 | 大段功能生成能力偏弱,不适合从零搭一个完整项目 |
| Vercel AI Vibe Coding Platform | 全栈原型、快速从想法到线上 | 从生成到部署一体化,不用自己搞服务器;前端、后端、数据库都能在对话里完成 | 对复杂微服务架构支持有限,偏向应用层项目 |
| 纯 Web 聊天式 Copilot(如 Claude 等) | 一次性生成脚本、算法验证 | 门槛低,打开网页就能用 | 和项目文件系统隔离,迭代时要反复粘贴代码 |
我这次项目选的是 Vercel AI Vibe Coding Platform。原因是它把“写代码”和“上线”之间的链路切掉了。传统模式下,代码生成只是第一步,后面还有装依赖、配环境、部署、绑定域名,这些环节都是劝退新手的地方。Vercel 平台的思路是:你在对话里把需求说清楚,它直接帮你生成项目结构,并且内置了部署能力,聊完就能看到线上地址。
当然,如果你的项目是一个已经跑了几年的老系统,想在里面加功能,那我更推荐 Cursor 这类能直接挂载本地目录的工具,它更擅长在已有代码里做局部修改,而不是凭空生成一套新代码。
3.2 环境配置里最容易踩的三个坑
选完工具,配置环节有 3 个坑我几乎每次都遇到,写出来帮你避雷。
第一个坑是模型不一致导致行为漂移。同一个 Vibe Coding 平台,不同模型生成代码的风格差别很大,有的喜欢一次性输出完整文件,有的喜欢分步解释再动手。如果你今天选模型 A,明天换模型 B,同一个功能可能被两次生成出完全不同的实现。我的习惯是:一个项目周期内固定一个模型,除非有重大问题,否则不中途切换。
第二个坑是上下文窗口被无关日志塞满。Vibe Coding 的本质是对话,AI 能记住的上下文是有限的。如果你频繁把运行日志、报错堆栈整段粘贴进去,它会逐渐忘掉你最初的技术约束和需求边界,然后开始生成和主题无关的内容。正确做法是:粘贴报错信息前,先截取关键几行;每次开启新主题时,重新贴一遍你的一项目标和已完成状态。
第三个坑是权限过大,AI 乱改无关文件。这个在 Cursor 这类本地工具上特别明显。你让它“优化一下登录逻辑”,它可能顺手把样式文件、路由配置全改了。解决办法是设置精确的规则,或者在 prompt 里明确写“本次修改只涉及 auth 目录和 login 页面,其他文件不允许改动”。玩 Vibe Coding 的核心能力之一,就是学会给 AI 划定活动范围。
4. 第3步:用对话驱动核心功能,把第一版跑起来
4.1 一次完整对话的节奏控制
很多人第一次玩 Vibe Coding 时,会把它当成搜索引擎一样用,想到什么就发什么:“帮我加一个删除按钮”“这个按钮样式不对”“顺便把数据存储改一下”。这样做的结果就是代码越改越乱,最后连 AI 自己都不知道项目处于什么状态。
我自己的节奏控制方法很简单,固定分四步:
- 先发整体框架。第一轮对话不要聊具体细节,而是让 AI 先生成项目骨架:目录结构、核心页面、数据流向。让它先回答“我打算这样搭,你确认一下”,而不是直接生成代码。这一步可以避免后面推倒重来。
- 一轮只改一个模块。比如这一轮只处理“周报输入”功能,下一轮再处理“分组逻辑”,再下一轮处理“导出”。这样每次变更的 diff 都很小,出问题容易排查。
- 每轮对话后立即运行验证。AI 生成完代码,立刻让它在本地或预览环境跑一遍,确认没有编译错误再进入下一轮。连续性 Bug 能及时暴露,不用等攒到最后一起修。
- 定期让 AI 总结当前状态。每隔 3-5 轮对话,我会让它输出一份“当前项目文件结构和已完成功能清单”,用于重新校准上下文。这条习惯非常有用,能让 AI 在长对话后不忘项目本来目的。
这套节奏也是我做 Vibe Coding Guide 时最想强调的部分:Vibe 不等于乱来,它的自由在于探索方向,而不是流程上的随意。
4.2 让 AI 生成可维护代码的 5 条指令技巧
用对话驱动开发,生成代码不代表结束,关键在于生成的是不是可维护的代码。下面这几条指令技巧帮我避开过很多后期维护的雷:
第一,明确要求写注释,但不要废话注释。 我会在 prompt 里加一句“请在关键函数和复杂逻辑处写注释,解释为什么这样做”,而不是“给每行都写注释”。因为 AI 最喜欢生成的注释是“这段代码实现了一个计算功能”,而真正有价值的是“这里用缓存是因为接口调用频率高,而且数据每天只更新一次”。
第二,把可变参数集中暴露到配置区。 比如分组关键词、时间格式、成员名单,这些都应该放到文件顶部或者单独配置文件里。AI 默认喜欢把值硬编码,一旦你要改规则就要满文件找。
第三,禁止 AI 复制粘贴旧代码。 让 AI 新增功能时,它有时候会从项目里复制一大段相似逻辑,然后改几个字段就当成新函数。这在功能上没问题,但日积月累就是重复代码的灾难。我会明确说“如果现有函数超过 80% 相似,请重构抽取公共方法,而不是复制”。
第四,一次改动超过 N 个文件时,让 AI 先说方案再动手。 比如“如果这次改动会涉及超过 5 个文件,请先列一个修改清单我再确认”。这个指令尤其适合后期迭代阶段,能有效避免 AI 重构上瘾,把整个项目翻一遍。
第五,遇到 AI 的决策,要求它说明理由。 比如“为什么这里要用状态管理库而不是 useState?”“为什么选择定时轮询而非 WebSocket?”问完之后结合自己的判断决定是否接受。这一条是我觉得最不像“Vibe”但最有用的技巧。它让 AI 从一个执行者变成一个能解释思路的伙伴,你也能从对话里学到不少东西。
5. 第4步:验证、修 Bug、补边界,别让 AI 带偏节奏
5.1 该从哪些角度验收 AI 生成的代码
Vibe Coding 最迷惑人的地方,是 AI 生成的东西看起来特别完整,页面能打开、按钮能点击、流程也能走通,但一旦遇到边界情况就崩。我自己定义了一套验收清单,每次功能完成后照着过一遍:
- 输入异常:空数据、超长文本、特殊字符、错误格式,AI 有没有做兜底处理?
- 边界条件:列表为空、只有一条数据、日期跨月、成员名重复,这些情况是否正确显示?
- 重复操作:按钮被连续点击两次,会不会重复提交?页面刷新后状态是否异常?
- 并发状态:多个用户同时操作时,有没有互相覆盖的问题?
- 数据安全:有没有把密钥、token 硬编码在代码里?用户输入有没有被转义?
以我的周报工具为例,第一个版本在“只有一个人提交周报”时,分组列表成了空白的;在“周报文本里出现表情符号”时,摘要区域直接乱码了。这些问题从页面效果上根本看不出来,只有拿边界数据测试才能暴露。
5.2 典型翻车现场与排查思路速查表
Vibe Coding 的生产力很高,但产生 Bug 的方式也很清奇。我整理了几个高频问题,基本是玩这款项目时每个人都会遇到的:
| 现象 | 根因 | 处理方式 |
|---|---|---|
| 改了一个功能,另一个功能挂了 | AI 没有遵守“只改指定文件”的约束,连带改了别处 | 回到对话,明确指出回滚某个文件的改动,并重新强调修改范围 |
| 同一段逻辑前后生成出两个不同版本 | 长对话里上下文丢失,AI 忘了之前约定 | 把当前关键代码贴回对话,让 AI 基于现网代码重新出发 |
| AI 反复生成同一段无法解决的报错 | 它一直在旧问题的上下文里打转,无法跳出思维定式 | 换一个新会话,重新描述目标,把报错信息精简后贴入 |
| 功能正常,但接口调用次数暴涨 | AI 在某处加了循环请求,没有做缓存或节流 | 审查代码里的请求调用位置,要求统一封装请求方法 |
| AI 引入了不兼容依赖 | 它按自己的知识库选版本,没有考虑项目现有依赖 | 在 prompt 中提前限制“不得新增依赖”或“新增依赖前先征得同意” |
这张表我第一次整理出来的时候,是自己踩坑的记录,后来发现它完全可以当成一个通用的排查清单。遇到奇怪问题,先别慌,按表对一下,大概率能定位到问题。
5.3 人工审校的时间怎么控制
很多人以为 Vibe Coding 让程序员不用再看代码了,这是最大的误解。实际上,AI 生成的代码必须审校,只不过审校的方法可以更高效。
我的做法是:把大部分精力放在看 diff 而不是逐行通读代码。每次 AI 改完,我会打开变更对比,只看它动了哪些地方、为什么动、有没有超出要求的改动。单独新增的小文件可以快速扫一眼,大范围重构则必须用前面提到的“先方案后动手”来从源头控制。这个习惯帮我把审校时间控制在整个项目时间的 30% 左右,既不会漏掉问题,也不会被 AI 生成的代码海洋淹没。
另外提一句,如果涉及登录、支付、权限这些关键安全模块,我会在 AI 生成后自己手动再写一遍核心逻辑。不是说 AI 写不了,而是这种高风险代码值得你用最可靠的、自己能完全理解的方式来处理。Vibe Coding 是很好的工具,但不能把所有安全责任都交给它。
6. 第5步:上线发布与持续迭代的取舍
6.1 部署不一定复杂:选平台托管还是自建运维
代码写完要上线,这一步对很多新手来说反而是心理压力最大的地方。我的建议很简单:优先选择提供一键部署的平台,而不是去折腾云服务器。
以我的项目为例,因为用的是 Vercel AI Vibe Coding Platform,生成完项目后它自带部署能力。绑定 GitHub 仓库、选好分支、点一下 Deploy,几分钟内就拿到了线上 URL。自动部署的好处还在于,后面每次修改代码推送到仓库,线上环境自动更新,省掉了手动上传的步骤。
如果你用的是本地 Cursor 开发,或者项目本身有后端服务,那可以考虑 Vercel、Netlify 或 Cloudflare Pages 这类平台,它们大多支持前端静态部署和 Serverless 函数,适合大部分轻量级项目。只有当你需要常驻后台任务、目录挂载、复杂网络配置时,才有必要上云服务器。
部署环节有 3 个很容易被忽略的点:一是 .env 环境变量千万别提交到 GitHub 仓库,尤其是各种 API Key,一旦泄露后果很麻烦;二是域名绑定后记得配置 HTTPS,绝大多数平台默认提供证书,但要求你正确配置域名解析;三是数据库备份策略,如果项目里用了数据库,要提前了解平台的自动备份机制。这些事 Vibe Coding 教程里一般不会细讲,但它们都是真实上线必不可少的部分。
6.2 用 Spec-Driven 给长期迭代兜底:从 Vibe Coding 到 Harness × SDD
越用 Vibe Coding,我越意识到一件事:它在原型阶段的效率是碾压级的,但如果你打算长期维护这个项目,就必须引入另一种方式来做“收口”。
具体做法我用的是 Harness × SDD(Spec-Driven Development)思路。所谓 Harness,可以理解为一套约束 AI 行为的“套件”,包括:一组自动测试、固定的 prompt 模板、结构化的任务描述文件,以及明确的代码规范。每次让 AI 迭代功能时,不是在空白对话里从零描述,而是把这些文件通过上下文传给 AI,让它在一个被约束的框架里工作。
举个例子,我的周报工具进入稳定期后,我给 AI 新增需求时都会附带一段固定的 spec:
现有功能:[一句话描述当前版本]
本次需求:[一句话描述新功能]
验收标准:[自动测试列表,比如:输入 3 条周报应输出 3 个分组;成员名含特殊字符时不报错]
修改范围:[只允许修改 src/pages 下文件,不得改动公共函数库]
完成后请运行测试并报告结果。
这套方式把 Vibe Coding 的自由度和 Spec-Driven 的可控性结合起来了。AI 依然可以用对话的方式生成代码,但它的工作内容时刻受规格和测试约束,不会跑偏。这也是“从 Vibe Coding 到 Harness × SDD 全栈开发实战”这条路线上我认为最值得借鉴的实践结构。
6.3 小项目可以这样持续升级
项目上线不等于结束,只要还在用,就会有新需求进来。我通常维护小项目的节奏是这样的:
每次拿到新需求,我不会直接跑去对话里让 AI 改,而是先花几分钟把需求描述清楚,丢进固定模板里,再补上对应的验收条件。然后让 AI 动手改,改完运行测试,测试通过后我做一次快速人工 review,最后合并上线。整个过程通常不到半小时,但因为有 spec 和测试兜底,项目在持续迭代中依然能保持稳定。
我特别推荐个人开发者和小团队都这么做,不要因为项目小而省略这些步骤。Vibe Coding 最大的优势是让创造的门槛变低,但它不会天然保证代码质量。想要项目长期健康成长,人工 review 和规格约束缺一不可。
回头看我这个项目从想法到上线的完整过程,最深的体会是:Vibe Coding 真正考验的从来不是和 AI“聊得来”,而是你有没有一套清晰的方法论,用来表达需求、控制节奏、验证结果、守住底线。5 步流程听起来简单,但每一步背后都有值得琢磨的细节。踩过几次坑之后,你再回头看那些看似神奇的 AI 项目,会发现它们不过是在正确的方法之上,把每个环节都做扎实了而已。这也正是我建议你掌握的:把 Vibe Coding 当工具,而不是当魔法。
