Vibe Coding 实战
Vibe Coding 实战
Vibe Coding 不是"我描述需求 AI 写完我合并"。在生产环境里,它是一种以自然语言为主输入、但保留工程纪律的协作方式——AI 出第一稿,工程师做约束、验证、和重构决策。
如果你只在 toy demo 里用过 vibe coding,先把 Vibe Coding 全流程 SOP 完整跑一遍。本章假设你已经了解基础流程,重点讲生产里怎么不踩坑。
4 种场景的决策矩阵
| 场景 | Vibe 还是手写 | 原因 |
|---|---|---|
| 加一个 CRUD endpoint,pattern 已存在 | Vibe | AI 复制现有 pattern 准确率高 |
| 重构核心算法 / 性能优化 | 手写 | AI 不知道你的 perf budget 和 trade-off |
| 写一次性脚本 / 数据迁移 | Vibe | 跑完即弃,不进入 codebase |
| 修生产 bug | 混合 | AI 找出可疑位置,工程师做最终判断 |
| 新增 styled-component | Vibe | 视觉描述清晰,AI 输出质量稳定 |
| 改 auth / 权限 / 计费逻辑 | 手写 | 错了直接出事,必须每行你自己理解 |
判断标准:这段代码出错的爆炸半径有多大。半径小 → vibe;半径大 → 手写或至少 line-by-line review。
给 vibe 输出加 quality gate
直接 merge AI 写的代码是事故的开始。最低限度装这 5 道闸:
- Type check 必须过 -
tsc --noEmit是最便宜的 sanity check,AI 经常编出不存在的 import - 新代码必须有 test - prompt 里写死 "implement and add unit tests in same PR",没 test 的实现拒收
- PR diff 行数限制 - 单 PR
+400/-200行硬上限,超过强制拆分。AI 一次生成 800 行没人能 review - Lint + format 自动跑 - pre-commit hook 接 husky + lint-staged,AI 写出来的 indentation/quote style 经常不一致
- 关键路径加 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 件事:
- Hallucination - 引用的 function / API 真的存在吗?AI 经常编造
lodash.deepMerge、React.useDeferredQuery这类不存在的东西 - Pattern drift - 是否绕开了 codebase 已有的 utility?比如项目有
useApi()hook,AI 写出了原始fetch(...) - 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 / 核心算法这些,公司活命的代码,必须每行你自己理解
下一步
- AI Rules 配置实战 — 把 quality gate 沉淀进项目规则
- AI Coding 工作流 — 三种工具的分工
- Claude Code Examples — 实战 prompt 模式
📚 相关资源
❓ 常见问题
关于本章主题最常被搜索的问题,点击展开答案
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,不是只贴一句『报错了帮我看看』。