Vibe Coding(一):你不是在写代码,你是在描述需求

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 的协作:

  1. 你描述需求(prompt)
  2. AI 生成代码
  3. 你读代码、理解代码
  4. 你提出修改意见
  5. AI 修改
  6. 你测试、审查
  7. 重复直到满意

整个过程里,你始终是主导者。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 对话?怎样把一个模糊的需求,变成一段好代码?

每天前进一小步,就是一个新的高度!