31

Vibe Coding 实战

⏱️ 45分钟

Vibe Coding 实战

Vibe Coding 不是"我描述需求 AI 写完我合并"。在生产环境里,它是一种以自然语言为主输入、但保留工程纪律的协作方式——AI 出第一稿,工程师做约束、验证、和重构决策。

如果你只在 toy demo 里用过 vibe coding,先把 Vibe Coding 全流程 SOP 完整跑一遍。本章假设你已经了解基础流程,重点讲生产里怎么不踩坑。

4 种场景的决策矩阵

场景Vibe 还是手写原因
加一个 CRUD endpoint,pattern 已存在VibeAI 复制现有 pattern 准确率高
重构核心算法 / 性能优化手写AI 不知道你的 perf budget 和 trade-off
写一次性脚本 / 数据迁移Vibe跑完即弃,不进入 codebase
修生产 bug混合AI 找出可疑位置,工程师做最终判断
新增 styled-componentVibe视觉描述清晰,AI 输出质量稳定
改 auth / 权限 / 计费逻辑手写错了直接出事,必须每行你自己理解

判断标准:这段代码出错的爆炸半径有多大。半径小 → vibe;半径大 → 手写或至少 line-by-line review。

给 vibe 输出加 quality gate

直接 merge AI 写的代码是事故的开始。最低限度装这 5 道闸:

  1. Type check 必须过 - tsc --noEmit 是最便宜的 sanity check,AI 经常编出不存在的 import
  2. 新代码必须有 test - prompt 里写死 "implement and add unit tests in same PR",没 test 的实现拒收
  3. PR diff 行数限制 - 单 PR +400/-200 行硬上限,超过强制拆分。AI 一次生成 800 行没人能 review
  4. Lint + format 自动跑 - pre-commit hook 接 husky + lint-staged,AI 写出来的 indentation/quote style 经常不一致
  5. 关键路径加 e2e - auth flow / 支付 / 数据迁移这类,e2e test 必须覆盖一条 happy path
# .github/workflows/vibe-gate.yml 示例
- name: Type check
  run: bun run type-check
- name: Test coverage
  run: bun test --coverage
  # PR 内新增文件 coverage 必须 ≥ 80%
- name: PR size guard
  uses: CodelyTV/pr-size-labeler@v1
  with:
    xl_max_size: '600'  # 超过 600 行直接 block

Code review 的 vibe 模式

人写代码 review 看"对不对",AI 写代码 review 看 3 件事:

  1. Hallucination - 引用的 function / API 真的存在吗?AI 经常编造 lodash.deepMergeReact.useDeferredQuery 这类不存在的东西
  2. Pattern drift - 是否绕开了 codebase 已有的 utility?比如项目有 useApi() hook,AI 写出了原始 fetch(...)
  3. Over-engineering - 加了不必要的抽象层、提前优化、unused interface。AI 倾向于"完整",但项目要的是"够用"

实操:reviewer 在 PR description 里看到 "Generated with Claude Code" 就启动 vibe 模式 review,比平时多花 30% 时间。

失败案例:JR Academy 真实事故

事故 1:AI 生成的 migration 删错字段

某次让 Claude Code "remove unused legacy_user_id field from User schema"。AI 写了 mongoose migration 直接 unset 字段。问题:production 还有 200K 用户的 legacy 系统在读这个字段做对账。Migration 跑完对账系统挂掉。

教训:所有 destructive 数据库操作必须人写,AI 顶多给伪代码参考。

事故 2:AI"修复"了一个 race condition,但用了错误模式

PR 描述写"fix race condition in order creation by adding mutex"。Reviewer approve。生产部署后 throughput 降 80%,因为 AI 加的是 process-level mutex,但服务跑 4 个 pod,根本没起隔离作用。

教训:concurrency / distributed system 的修复 review 必须 line-by-line,不能信 PR description。

长期可持续的 vibe 节奏

  • 每天前 30 分钟手写 - 保持对 codebase 的肌肉记忆,否则三个月后你看不懂自己的项目
  • 复杂任务先白板 - 想清楚架构再让 AI 实现细节,不要让 AI 帮你想架构
  • 每周回看一个 AI PR - 重读自己 merge 的 AI 代码,理解每行在做什么。是否有过度工程?是否有更好的写法?
  • 保留手写关键模块的能力 - auth / billing / 核心算法这些,公司活命的代码,必须每行你自己理解

下一步

📚 相关资源

❓ 常见问题

关于本章主题最常被搜索的问题,点击展开答案

Vibe Coding 是不是按一下按钮 AI 就把整个 product 做完?

不是。Vibe Coding 是一种协作方式:你用自然语言写清目标、约束、acceptance criteria,AI 负责生成 / 改 / 解释 / 迭代代码,定方向 + sign-off 仍然是你的事。AI 解决『机械翻译需求成代码』,解决不了『判断 priority + 做 architecture 取舍 + 对 production 风险负责』。

Vibe Coding 适合哪些任务,哪些要谨慎?

适合:页面样式 / 组件补全、CRUD + form + type、报错排查、新项目 prototype —— 反馈快、容易 validate、规则明确。谨慎:支付 / 鉴权 / 权限系统、核心 architecture 升级 —— 写错代价高,必须人主导方案。不建议全权交给 AI:compliance、security 敏感逻辑必须人工 review。

一个有效的 Vibe Coding prompt 至少包含什么?

4 件事缺一不可:目标(要做什么)、背景(哪个 project / file / 业务 context)、约束(tech stack / style / 不能动的 boundary)、验收(完成后怎么判断对错)。少一项 AI 就只能猜,结果就会是『看似合理但不对题』。这 4 件事写清楚,普通需求一次就能跑通。

Vibe Coding 新手最容易踩哪些坑?

5 个高频坑:(1) 需求太空 → AI 产出『看似合理但不对题』,修法是写清 input / output / boundary;(2) 一次改太多 file → 出问题没法定位,拆成 1-2 个小 task;(3) 不贴错误信息 → AI 只能猜,直接贴 log + 截图 + 调用链;(4) 只看代码不运行 → 看着像对实际跑不通,每轮 validate;(5) 把 AI 当最终责任人 → 出错没人兜底,sign-off 留给人。

把报错丢给 AI 是『偷懒』吗?

不是,是 Vibe Coding 的标准动作。报错信息不是失败的证明,是解决问题的钥匙 —— 你把代码 + terminal 红色报错 + 调用链一股脑贴回去,AI 能在几秒内做第一轮 root cause 分析,比你翻 10 个 Stack Overflow 帖子快得多。关键是贴完整 context,不是只贴一句『报错了帮我看看』。