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 对话?怎样把一个模糊的需求,变成一段好代码?

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