Vibe Coding ≠ 让 AI 写代码
Vibe Coding 的关键词从来不是 code 而是 vibe:代码从最终产物变成人与 AI 之间的中间语言,人负责提需求、判断与验收,让 AI 替我们做事,而不是简单地让它写代码。
本文是《Vibe Coding 实战系列》第 2 篇。
这不就是 Copilot 吗?让 AI 帮你写代码而已。
这句话代表了很大一部分人对 Vibe Coding 的理解。说实话,我第一次听到这个词的时候,也是这么想的,不就是把键盘换成了聊天框吗?
但真正尝试 Vibe Coding 一段时间之后,我发现这个理解既对也不对。
从表面上看,确实像是在说 AI 写代码,但是我们要看到本质,这实际上是改变了我们的工作模式。
这一篇我就展开说一下,同样是不写代码,为什么 Copilot 和 Vibe Coding 是两种完全不同的体验。
常见误区
Vibe Coding = 让 AI 写代码
这是传播最广的一个误解,很多人认为 Vibe Coding 的核心是AI 写代码。
我只用说一句话,然后 AI 把代码吐出来,复制粘贴这个代码在项目里面跑一下就完事了。但是这个理解的问题在于,我们过分的将注意力放在了代码上,而 Vibe Coding 的关键词从来不是 code,是 vibe。
现在回忆一下 Karpathy 原推文的原话:
…fully give in to the vibes, embrace exponentials, and forget that the code even exists.
注意最后一句,forget that the code even exists(忘了代码的存在)。
如果 Vibe Coding 只是一味地让 AI 写代码,那代码就应该是核心产出物,我们是不可能忘了它的存在的,并且我们会盯着 AI 写的每一行看、改、调。
所以Vibe Coding 真正的意思是代码从我的产出物变成了我和 AI 之间的中间语言。我不再需要关心代码长什么样,我关心的只有 AI 做出来的东西是不是我要的东西这一件事。
我们可以大致这样对比一下这两种模式:
| 让 AI 写代码 | Vibe Coding | |
|---|---|---|
| 角色 | 程序员 + 一个打字更快的助手 | 产品经理 + 一个随叫随到的工程师 |
| 目标 | 代码写得对不对、漂不漂亮 | 做出来的东西是不是我要的 |
| 代码 | 最终产物 | 中间过程,可以不看 |
| 工作模式 | 读、改、调代码 | 提需求、验收、再提需求 |
Vibe Coding 不是让 AI 写代码,是让 AI 替我们做事,我们只管指挥调度。
只要会写 Prompt 就行
开始 vibe Coding 一段时间后,很多人就会进入这个误区,Vibe Coding 嘛,不就是写 Prompt?Prompt 写得好了,AI 就能写出我想要的东西。
想想这个理解错在哪?它是把 Vibe Coding 简化成了 Prompt 工程,但要注意, Prompt 只是手段,不是核心。
真正的 Vibe Coding 里,Prompt 虽然重要,但它不是最难的部分。最难的部分在于判断,我们要判断 AI 给的东西对不对、好不好、要不要继续改。
举个例子,现在让 AI 写一个用户登录页面,AI 返回了一个看起来很完整的实现,这个过程中,Prompt 写得好的人,能让 AI 一次就写出接近需求的代码,然后就可以结束需求了?真的吗?实际上,在这个领域更强的人会进一步问,这个登录页有没有考虑 XSS?密码是明文传输吗?错误提示会不会泄露用户信息?token 存在哪里?过期了怎么办?
而这些问题,是 AI 不会主动告诉你的问题,只有我们主动向 AI 询问时,才能得到答案,而能不能问到这些问题,取决于你对这个领域的理解深度。所以关于 Vibe Coding,我们需要以下几种能力:
-
表达能力:把模糊的想法说清楚。
-
领域知识储备:判断 AI 给的东西靠不靠谱,有没有深入的必要。
-
判断力:在 AI 跑偏的时候把它拉回来。
而 Prompt 只是第 1 点里的一个小技巧,如果我们把全部精力花在研究 Prompt 上,就像学开车只研究方向盘怎么握,姿势再标准,那也还是不会开。
总的来说,Vibe Coding 实践得好的人,往往本身就是领域里的富有经验的人。他们不是因为会写 Prompt 才厉害,而是因为他们知道什么是对的,所以能指挥 AI 往对的方向走。新手用 Vibe Coding,反而容易因为判断不了对错而被带到沟里翻车。
代码质量 AI 会保证的
很多人觉得,AI 都是有专门的人去训练的,学了那么多开源项目,那么 AI 写的代码,质量肯定有保证的吧?但事实却是,AI 写的代码,质量参差不齐,而且很难一眼看出问题所在。
因为 AI 写代码的逻辑是概率上最可能正确,而不是逻辑上必然正确。它会写出看起来很合理、能跑,但埋着雷的代码,随时可能会爆炸,这些问题包括但不限于:
-
安全漏洞:忘记处理或根本不考虑处理 SQL 注入、XSS、硬编码密钥等问题。
-
边界条件:面对空值、并发、极端输入,AI 倾向于写 happy path。
-
性能问题:我们不说,AI 不一定会考虑到运行环境,所以有时候会存在 N+1 查询、不必要的循环、内存泄漏。
-
依赖陷阱:引入一个其实不需要的库,或者用了过时的 API。
-
幻觉函数:调用一个根本不存在的函数或参数,跑起来才报错。
这些问题的共同点是:代码能运行,测试可能也会通过,但部署在生产环境就会引发问题。
所以在 Vibe Coding 里,质量保证最终还是需要我们来做(又回到了我们自己的头上):
-
阅读关键代码:阅读我们判断为高风险的部分,比如认证、支付、数据操作。
-
跑测试:让 AI 写测试用例覆盖正常、异常、边界等 case,或者自己写关键路径的测试。
-
做 Code Review:哪怕是 AI 写的,也要 Review,这并非是不信任 AI,而是不信任概率正确。
-
渐进上线:先灰度、再全量,出问题能回滚。
Vibe Coding 不是降低了质量要求,而是把质量保证的方式从写正确的代码变成了审核放通符合预期的代码。
当然现在出了很多 agent 可以一站式解决很多问题,但是在写生产级代码时,我们依旧不能够放松警惕,因为一次出错带来的代价我们并不是总能够承担的起来的。
Vibe Coding 的核心转变
说完误区,我们来看 Vibe Coding 到底带来了什么变化?
-
从手写代码到指挥团队
传统编码过程中,我们的核心动作是写,敲键盘、想语法、调 bug,而在 Vibe Coding 里,我们的核心动作是指挥,说需求、看结果、给反馈。
这个转变看似简单,但背后其实是身份的变化,Vibe Coding 将我们从执行者变成了管理者。执行者关心的是我怎么做,管理者关心的是做什么、做的对不对。
-
从编写代码到直面结果
过去,代码是我们和电脑之间的对话。我们写代码在电脑上执行,代码的质量直接决定了结果。而 Vibe Coding 则让代码退到了幕后,我们和 AI 之间使用自然语言对话,AI 把自然语言翻译成代码,然后代码再翻译成结果,这样一来,我们直接面对的就是结果,而不是代码。
同样地,这也意味着你的评估标准要从代码写得好不好变成结果对不对、体验好不好。
-
从全知全能到善于判断
传统编码要求我们将语法、框架、API、最佳实践等等这些内容都得记在脑子里。但 Vibe Coding 不需要我们全知全能,因为 AI 可以随时补上我们不知道的细节。但这也意味着它对我们提出了新的要求:能拍板且善于判断,即在 AI 给的多个方案里要选择对的,在 AI 跑偏的时候给它拉回来。
过去的全知全能是记忆力的竞争,现在的善断是判断力的竞争。后者比前者更难,同样也更值钱。
Vibe Coding 体验
我们用一个实例来展现出我们的 Vibe Coding 的变化,现在假设有一个需求是做一个待办清单网页。
让 AI 写代码的工作流是:
-
打开 IDE,新建 HTML 文件。
-
写了一个
<div class="todo-list">,然后按 Tab 让 Copilot 补全。 -
Copilot 补了几行,看一看,改一改,然后继续写。
-
写到一半发现某个 API 记不清了,去查文档(也可以让 AI 提供文档)。
-
写完了,跑一下报错,开始调试。
-
重复以上过程,半小时后做出一个能用的版本。
这个过程里,我们是主导者,AI 是助手。代码是你一行行接生出来的,每一行你都看过、改过、确认过。
Vibe Coding 工作流
-
打开 Cursor,输入框里写:做一个待办清单网页,能添加、勾选完成、删除,底部显示总数和已完成数,配色浅色+蓝色主色,单文件 HTML。
-
30 秒后,AI 生成了一个完整的单文件应用。
-
打开浏览器看了一眼,UI 对了,功能没问题,点一点没有报错。
-
但是我突然觉得待办完成后应该移到底部,于是又补了一句:一项待办完成后将该项待办置于列表底部。
-
过了一会儿,AI 改好了,我再看一眼没有太大的问题,我很满意。
-
全程 3 分钟。
这个过程里,AI 是执行者,我们是验收者。代码我可能只扫了一眼,甚至完全没看,因为我看到的结果是对的。
在第一个工作流里,我们和代码是一体的,代码就是我们思想的延伸。而在 Vibe Coding 中,我们和代码之间隔着 AI,代码是 AI 的产出,而我变成了只对结果负责。
这就是为什么说 Vibe Coding 不是简单的让 AI 写代码的原因,Vibe Coding 是把你从代码里抽离出来,放到一个更高的位置上。
在一遍遍的 Vibe Coding 中,我发现,我好像也有了“老板”思维,AI 给的套餐量是固定的,我需要在这个固定的 token 量中,调教出来一个好的员工,不管他咋实现的,我反正拍脑袋想出来的,AI 就得帮我实现。
Vibe Coding 适合所有人吗?
其实 Vibe Coding 并不是对所有人都同样有用。
最适合 Vibe Coding 的人:
-
有一定领域经验,能判断对错的开发者,这类人能够把判断力转化为生产力。
-
做原型、做工具、做验证的人,他们更看重速度而不是完美。
-
非程序员但有清晰需求的人,就像产品一样,不需要懂代码,只要能说清要什么。
不太适合 Vibe Coding 的人:
-
完全的新手无法判断不了 AI 给的东西对不对,容易被带偏。
-
做生产核心系统的人,因为需要对每一行代码负责,不能忘了代码存在。
-
需要极致性能或安全的人,毕竟,AI 在这些方面还不够可靠。
一个有点反直觉的结论:Vibe Coding 对有经验的人是放大器,对没经验的人是陷阱。经验越丰富,Vibe Coding 越能放大你的效率;经验越浅,越容易被 AI 的概率正确坑到。
所以如果你是新手,别急着 vibe coding,还是建议先老老实实写代码,建立自己的判断力。等你能一眼看出 AI 写的代码有没有坑的时候,再用 Vibe Coding 提速,效果会好得多。
下一篇预告
下一篇,我们会进入实战:
《Vibe Coding 第一课:用一句话生成你的第一个应用》
我会从头到尾跑一遍完整的 vibe coding 流程,从一句话需求,到一个能跑的应用,再到迭代优化,全程只靠自然语言指挥 AI。