1、两种“做饭”的方式
想象你要做一顿饭。
传统方式:你自己走进厨房,洗菜、切菜、掌握火候、调味,每一步都亲力亲为。你知道什么时候翻面,知道盐放多少,知道火候到了没有。你是厨师。
Vibe Coding 方式:你坐在餐桌前,对一位能力很强的厨师说:“我想要一道酸辣口味的菜,带点东南亚风味,不要太油腻,最好有海鲜。” 厨师去做了,端上来你尝一口,说:“酸味再重点,少放点辣椒。” 厨师调整,再端上来,你说:“差不多就是这个味道了。”
这就是 Vibe Coding 的本质——你不再亲自写每一行代码,而是用自然语言描述你想要什么,让 AI 来生成代码。
2、什么变了?什么没变?
Vibe Coding 这个名字来自 Andrej Karpathy(OpenAI 联合创始人之一),他在 2025 年初提出了这个概念。核心意思是:你不需要关心“怎么写”,只需要关心“要什么”。
让我用一个实际的例子来说明。
假设你要写一个函数,把用户输入的手机号做格式化处理。
传统编程,你的大脑在思考:
- 用哪个字符串处理函数?
slice还是substring? - 正则表达式怎么写?
/^1[3-9]\d{9}$/对不对? - 边界情况:如果用户输入了空格怎么办?如果输入了
+86前缀怎么办? - 这段代码放哪个文件里?函数叫什么名字?
Vibe Coding,你的大脑在思考:
- 我希望手机号显示成
138-1234-5678的格式 - 如果用户输入带空格或横杠,先清理掉
- 如果输入不合法,别崩,给个提示
- 这是一个工具函数,放
utils/format.js里
你把这些告诉 AI,AI 写出代码。你读一下代码,跑一下测试,没问题就过了。
核心变化:你的角色从“代码实施者”变成了“需求定义者 + 代码审查者”。
没变的东西:你还是需要知道什么是好的代码、什么是合理的架构、什么是正确的业务逻辑。Vibe Coding 不是让你扔掉编程知识,而是让你把更多精力放在更高层次的思考上。
3、适合什么场景?
Vibe Coding 不是万能的。它在某些场景下特别好用,在某些场景下要谨慎。
特别适合的场景:
- 快速原型和 MVP。你想验证一个想法,30 分钟搭一个能跑的东西出来,Vibe Coding 极快。
- 重复性代码。CRUD 接口、表单校验、数据格式转换——这些模式固定的代码,AI 写起来又快又准。
- 你不熟悉的语言或框架。你会 Python 但要写一段 SQL,你会前端但要搞一段 Nginx 配置——告诉 AI 你要什么就行。
- 探索性编程。“把这个 API 的返回数据整理成图表看看”——快速试,不行就换个方向。
要谨慎的场景:
- 核心算法或复杂业务逻辑。你需要真的理解这段代码在干什么,不能只是“看起来能跑”。
- 安全敏感的代码。用户认证、支付、权限控制——AI 可能写出有安全隐患的代码。
- 需要深度上下文理解的大型重构。AI 不知道你的项目全貌,改一个地方可能影响远处的东西。
一个好的判断标准:如果这段代码出错了,你能不能在 5 分钟内自己修好? 能的话,放心用 Vibe Coding。不能的话,还是自己写更踏实。
4、Vibe Coding 不是“让 AI 替你写代码”
这是一个容易误解的地方。
Vibe Coding 不是“我把需求丢给 AI,然后去喝咖啡”。它更像是你和 AI 的协作:
- 你描述需求(prompt)
- AI 生成代码
- 你读代码、理解代码
- 你提出修改意见
- AI 修改
- 你测试、审查
- 重复直到满意
整个过程里,你始终是主导者。AI 是你的加速器,不是你的替代品。
就像一个经验丰富的师傅带着一个手脚麻利的学徒——师傅说“把那块木料打磨光滑”,学徒动手打磨,师傅检查说“这边还不够光滑”,学徒继续打磨。活是做完了,但到底做成什么样,师傅说了算。
5、你需要的核心能力
既然角色变了,能力要求也变了:
- 描述需求的能力:你能不能把脑子里的想法,清晰地说出来?这是 Vibe Coding 最重要的基本功。
- 阅读代码的能力:AI 写出来的代码,你至少能看懂它在干什么。不需要是源码级专家,但要能看懂逻辑流。
- 审查意识:这段代码有没有边界情况没处理?会不会有性能问题?异常路径走了吗?
- 拆分问题的能力:大需求拆成小需求,小需求拆成更小的需求。一次让 AI 写 500 行不如分 5 次每次写 100 行。
简单说:你不需要成为最好的司机,但你要知道目的地是什么、路怎么走。
6、一个真实的工作流
假设我想做一个网页,显示当前天气,输入城市名就行。
我不会说:“帮我做一个天气网站。”
我会说:
“用 HTML + JS 做一个单页天气查询工具。输入框输入城市英文名,调用 Open-Meteo 免费天气 API,返回后在页面上显示当前温度、天气状况、湿度、风速。样式简洁,移动端友好。不要用任何框架,纯 HTML + JS。”
AI 生成代码后,我看看:
- API 调用对不对?
- 错误处理有没有?(城市不存在怎么办?网络断了怎么办?)
- HTML 结构是否语义化?
- 样式在手机上看起来如何?
发现问题,继续对话:
“请求失败的时候页面现在是空白的,加一个错误提示。还有,输入框回车也应该触发查询。”
就这样一轮一轮迭代。这不是“AI 替我写代码”,这是“我和 AI 结对编程”。
下一篇文章,我们会聊 Vibe Coding 最重要的基本功:如何与 AI 对话?怎样把一个模糊的需求,变成一段好代码?
每天前进一小步,就是一个新的高度!