Vibe Coding
用自然语言与 AI 对话式编程,开发者描述意图、AI 写代码,像指挥一个全栈工程师干活。
什么是 Vibe Coding
Vibe Coding 是 Andrej Karpathy 在 2025 年初提出的概念:不再逐行写代码,而是用自然语言描述你想要什么,让 AI 生成代码,你只做审查和调整。
"Vibe" 的意思是——跟着感觉走,用对话的方式编码,像跟一个全栈工程师 pair programming。
Karpathy 原帖大意:「我在 Vibe Coding 时,会忘记代码是存在的。我只看到屏幕上有东西在动,能用就行。出了 bug,我把报错粘给 AI,让它修,通常就修好了。我不再 review 它做的每一处修改。」
这段话有个常被忽略的关键前提——他做的是周末玩具项目。Karpathy 自己后来也澄清过,生产代码不应该这么干。
与传统编程的区别
| 维度 | 传统编程 | Vibe Coding |
|---|---|---|
| 交互方式 | 键盘敲代码 | 自然语言对话 |
| 开发者角色 | 写代码 | 审查代码、描述意图 |
| 思考粒度 | 语法级(怎么写) | 架构级(写什么) |
| 效率瓶颈 | 打字速度 | 提问精度 |
| 适合场景 | 精确控制 | 快速原型、CRUD |
Vibe Coding 工作流
1. 描述意图
帮我做一个 TODO 应用:
- 添加/删除/标记完成
- 本地存储
- 暗色主题
- 响应式布局
2. AI 生成代码
AI 一次性或分步生成完整代码。
3. 审查与调整
布局不错,但列表项太挤了,增加 padding。
删除按钮加个确认弹窗。
4. 迭代直到满意
适合 Vibe Coding 的工具
AI IDE
| 工具 | 特点 | Vibe Coding 适配度 |
|---|---|---|
| Cursor | Composer 多文件改写 | ★★★★★ |
| Trae | 字节出品,国内直连 | ★★★★☆ |
| Windsurf | Cascade 模式 | ★★★★☆ |
| Qoder | 阿里出品 | ★★★☆☆ |
AI 应用生成器
这类工具更进一步——不需要 IDE,直接在浏览器里对话生成完整应用:
| 工具 | 特点 |
|---|---|
| Bolt.new | 一句话生成全栈应用,浏览器内运行 |
| Lovable | AI 全栈开发,内置部署 |
| v0 | Vercel 出品,专注前端 UI 生成 |
| Replit Agent | 云端全流程:编码→测试→部署 |
Vibe Coding vs Spec-Driven Development
2026 年另一种主流流派——Spec-Driven Development(规格驱动开发,如 GitHub Spec Kit)走的是相反路线:
| 维度 | Vibe Coding | Spec-Driven |
|---|---|---|
| 起点 | 一句话目标 | 详细 spec / 验收标准 |
| AI 自由度 | 高 | 受 spec 严格约束 |
| 适合阶段 | 探索、原型 | 生产、团队协作 |
| 出错成本 | 改了再改 | 改 spec → 重新生成 |
| 可审计性 | 低 | 高 |
| 代表工具 | Cursor / Bolt | GitHub Spec Kit / Claude Code + AGENTS.md |
实务中两者结合:探索期 Vibe Coding 快速验证,进入生产前补 spec / 测试 / AGENTS.md 把它"固化"成可维护的代码。
Vibe → Hardened 流程:从玩具到生产
Vibe Coding 出来的代码上线前必须经过"加固"流程:
[Vibe 阶段] [Hardened 阶段]
对话生成 → 补单元测试 + 集成测试
功能能跑 → Code Review(人 + AI 双重)
能用就行 → 边界条件、错误处理补全
本地 SQLite → 生产 DB + 迁移脚本
密钥写死 → 走 env / secret 管理
console.log 满天 → 结构化日志 + 监控
没有 CI → Lint / 类型检查 / 测试 / 部署 pipeline
没有文档 → README + AGENTS.md / CLAUDE.md
跳过 Hardened 直接上线,是 vibe coding 翻车最常见原因。
版本控制策略
Vibe Coding 容易让 AI 一次改一大片,下面三招防止 commit 爆炸:
- 小步提交——每完成一个功能就 commit,不要"全部改完再统一提"。AI 一次性回滚单个 commit 比从乱了的工作区里挑改动容易得多。
- 分支隔离实验——任何"AI,帮我试一下用别的方案"先开新分支,跑通再合,跑废就删。别在主分支直接让它改。
- diff 必看——
git diff即使你 vibe,也要扫一眼变了多少行、动了哪些文件。AI 偶尔会"顺手"重写无关代码,不看 diff 就放过去。
Vibe Coding 的边界
适合
- ✅ CRUD 应用、管理后台
- ✅ 落地页、营销网站
- ✅ 原型验证、MVP 开发
- ✅ 数据处理脚本、一次性自动化
- ✅ 单页应用(React/Vue)
- ✅ 个人玩具项目(Karpathy 本意)
不适合
- ❌ 高并发系统(需要精细性能优化)
- ❌ 底层系统编程(OS/驱动/编译器)
- ❌ 安全关键系统(医疗/航空/金融核心)
- ❌ 大型已有项目重构(上下文太长)
- ❌ 需要精确算法实现(不如手写可靠)
- ❌ 多人协作的生产代码(无 spec 难协同)
真实失败案例
社区流传的几个翻车故事,可以反向学习:
- 「能跑就行」结果跑不动——开发者 vibe 出一个 SaaS 上线,没看 AI 生成的数据库查询逻辑。前 100 个用户没事,第 1000 个用户时发现每个请求都在做全表扫描,数据库 CPU 100%。
- 密钥泄露——AI 生成的代码里直接硬编码 OpenAI API key,开发者没看就 push 到公开 repo,几小时被薅几千刀。
- AI 删了文件没提——让 AI"重构一下",它顺手删了一个看似无用的 utils 文件,实际上有别处依赖。本地跑通是因为缓存,部署后崩。
- "测试也帮我加上"——AI 写了测试,但测的是"实现是否调用了 mock"而非"业务是否正确"。100% 覆盖率,0 个 bug 被发现。
- prompt injection 没防——AI 写的客服 bot 直接把用户输入拼到 system prompt,第一周就被用户绕过限制泄露内部数据。
共性:没有审查 = 没有质量门。Vibe Coding 把"写代码的速度"加快了 10 倍,如果不同时把"审查 + 测试"也加快 10 倍,bug 数也会跟着翻 10 倍。
最佳实践
提示词技巧
❌ "做个网站"
✅ "用 Next.js 14 App Router 做一个 SaaS 落地页:
- Hero 区:标题 + 副标题 + CTA 按钮
- Features 区:3 列图标 + 文字
- Pricing 区:3 档价格卡片
- Footer 区:链接 + 版权
- 用 Tailwind CSS,暗色主题
- 响应式,移动端优先"
分步迭代
不要一次性要求 AI 做完所有事。分步迭代:
- 先生成骨架(布局 + 路由)
- 再填充内容(文案 + 样式)
- 最后加交互(状态管理 + API)
保持审查
Vibe Coding 不等于不看代码。你必须:
- 理解 AI 生成的每一行代码
- 检查安全漏洞(XSS、SQL 注入、密钥泄露)
- 验证业务逻辑正确性
- 测试边界情况
- 看
git diff而不是只看 AI 的总结
Vibe Coding 会取代程序员吗
短答案:不会,但会改变程序员的工作方式。
- 初级程序员 — 从"写代码"变成"审代码",门槛降低
- 高级程序员 — 效率 10x,一个人能做原来一个团队的活
- 非程序员 — 能做出简单应用,但复杂系统仍需专业开发者
未来程序员的核心竞争力不是"会写代码",而是:
- 系统设计能力 — 知道该做什么、怎么拆分
- 代码审查能力 — 能判断 AI 生成代码的质量
- 调试能力 — AI 出错时能定位和修复
- 领域知识 — 理解业务需求,翻译为技术方案
- 测试能力 — 知道怎么验证 AI 的输出真的是对的
延伸阅读
- 配套思路:Prompt Engineering / Context Engineering
- 自主性更高的选项:AI Agent
- 工具底层机制:Function Calling