Vibe Coding踩坑

作者:old wang 发布时间: 2026-06-01 阅读量:0 评论数:0

AI 编程工具越来越强,很多人开始用 Cursor、Claude Code、Codex、Trae 等工具做所谓的 Vibe Coding。

有些人用得很顺:需求拆得快,代码落得快,测试也能补上。

但也有不少人用得很痛苦:AI 改着改着把项目搞乱了,功能看似完成,实际一跑全是问题,最后还得自己一点点排雷。

问题不一定出在模型不够强,也不完全是 Prompt 写得不好。

更大的差距在于:你有没有把 AI 拉回正常的软件工程流程里。

Vibe Coding 不是闭眼让 AI 狂写代码。短期做原型可以大胆一点,先把东西跑起来;但只要代码要长期维护,Git、测试、Review、需求边界这些基本功就不能丢。

1. Git 是底线,不是可选项

用 AI 写代码,第一件事不是开写,而是确认 Git 状态。

AI 改代码很快,也意味着它改坏代码同样很快。如果没有版本控制,出了问题很难回到干净状态。

建议做到:

  - 每个功能单独开分支

  - 小步提交

  - 一个提交只解决一个明确问题

  - 不要让 AI 直接在主分支上大改

  - 改动前先看 git status

AI 适合快速试错,但 Git 是兜底机制。没有 Git 的 Vibe Coding,本质上是在裸奔。

2. 动手前,先检查工作区

让 AI 开始写代码之前,先让它看当前工作区状态。

尤其要确认:

  - 是否有未提交改动

  - 当前在哪个分支

  - 这些改动是不是用户手写的

  - 是否需要先新建分支

  - 是否存在生成文件、临时文件、未跟踪文件

很多翻车不是因为 AI 不会写代码,而是它在一个已经很乱的工作区里继续改,最后你分不清哪些是原来的问题,哪些是 AI 新引入的问题。

一个好的习惯是:每次让 AI 接手前,先让它执行一次工作区检查,并说明它准备改哪些文件。

3. 需求不要只写一句话

不要只对 AI 说:

  > 帮我实现一个订单导出功能。

这类需求太模糊,AI 只能靠猜。它可能猜错字段、权限、分页、异常处理、导出格式、数量限制,甚至猜错业务含义。

更好的方式是先写清楚:

  - 目标是什么

  - 输入是什么

  - 输出是什么

  - 权限怎么控制

  - 数据量限制是多少

  - 失败时怎么处理

  - 是否需要兼容历史逻辑

  - 验收标准是什么

  - 哪些地方不能改

如果自己一时写不清,可以先让强模型帮你把需求整理成 Spec,再让编码模型实现。

需求越清楚,AI 越不容易自由发挥。

4. 让 AI 参考项目里的好代码

  不要只说:

  > 代码写优雅一点。

  > 按项目规范来。

  > 注意架构设计。

这些话对 AI 来说都太抽象。

更有效的方式是直接告诉它:

  - 参考哪个 Controller

  - 参考哪个 Service

  - 参考哪个测试类

  - 参考哪个异常处理方式

  - 参考哪个 DTO / VO 命名风格

  - 参考哪个前端页面结构

比如:

  > 新增接口时,参考 UserController 的参数校验和返回格式。

  > Service 层参考 OrderServiceImpl 的事务处理方式。

  > 测试参考 PaymentServiceTest 的写法。

AI 最擅长模仿上下文。给它看项目里的好代码,比空泛地要求“写得好一点”有效得多。

5. 把项目坑点写进规则文件

很多项目都有自己的坑:

  - 某些目录不能改

  - 某些接口不能破坏兼容

  - DTO 不能直接复用 Entity

  - 数据库迁移必须单独确认

  - 日志不能打印敏感信息

  - 前端不能引入新的 UI 库

  - 测试必须走固定命令

这些内容不要每次靠聊天提醒,可以写进规则文件里。

例如:

  - CLAUDE.md

  - AGENTS.md

  - Cursor Rules

  - Codex instructions

  - 项目内的开发规范文档

规则文件不要写成大而全的团队手册。重点放 AI 容易犯错、但团队又必须遵守的规则。

规则越具体,越有用。

6. 重复流程沉淀成 Skill

有些工作流程会反复出现:

  - TDD

  - 代码审查

  - 前端视觉检查

  - 性能分析

  - 网页资料调研

  - GitHub PR 评论处理

  - CI 失败排查

如果每次都靠聊天重新提醒,效率很低,也容易漏步骤。

更好的做法是把固定流程沉淀成 Skill、脚本、模板或检查清单。

比如代码审查可以固定要求:

  - 先看 diff

  - 按严重程度列问题

  - 关注 bug、回归风险、测试缺口

  - 不做无关重构建议

前端检查可以固定要求:

  - 启动本地服务

  - 打开页面

  - 截图验证

  - 检查移动端

  - 确认无文字重叠和布局错位

把流程固化下来,AI 的输出会稳定很多。

7. 贵模型不要拿来搬砖

不同模型适合做不同的事。

强模型更适合:

  - 梳理需求

  - 拆任务

  - 做架构判断

  - 发现风险

  - Review diff

  - 分析复杂 bug

便宜模型或普通模型更适合:

  - 按明确任务写代码

  - 补测试

  - 改样式

  - 做机械性重构

  - 根据已有模式补文件

不要所有事情都用最贵模型硬跑,也不要让弱模型做高层设计判断。

比较实用的方式是:

  > 强模型定方向,普通模型干活,最后再让强模型 Review。

这样成本和质量会更平衡。

8. AI 说修好了,不代表真的修好了

AI 很容易说:

  > 已修复。

  > 已完成。

  > 现在可以正常工作。

但工程上不能只看它怎么说,要看证据。

至少要看:

  - 测试是否跑过

  - 命令输出是什么

  - diff 改了哪些文件

  - 是否覆盖了异常场景

  - 是否引入了新的依赖

  - 是否改到了无关代码

如果是性能优化,还要看:

  - 优化前后耗时

  - SQL EXPLAIN

  - 压测数据

  - 缓存命中率

  - CPU / 内存变化

如果涉及敏感操作,更不能让 AI 自动决定:

  - 删除文件

  - 数据库迁移

  - 推送代码

  - 修改密钥

  - 生产配置

  - 批量替换

  - 重置 Git 历史

AI 可以建议,但关键操作必须人工确认。

9. 一个会话不要塞太多任务

AI 上下文再长,也不适合无限塞任务。

一个会话里同时做需求分析、写后端、改前端、补测试、调 CI、写文档,很容易失控。上下文越长,AI 越容易遗漏约束,甚至混淆前后任务。

建议按阶段拆开:

  - 一个会话只做一个明确目标

  - 长任务写 NOTES.md 或任务记录

  - 每完成一个阶段就提交一次

  - 新会话接手时先读记录和 Git diff

  - 不要让 AI 靠记忆续命

可维护的 AI 编码流程,应该允许随时换会话、换模型、换人接手。

10. 多 Agent 先串行,再并行

多 Agent 很诱人。

一个写后端,一个写前端,一个补测试,一个做 Review,看起来效率很高。

但前提是你的单 Agent 流程已经稳定。

如果单 Agent 都经常翻车,直接上多 Agent,只会把问题放大。多个 Agent 同时改代码,很容易出现冲突、重复实现、风格不一致、互相覆盖。

更合理的顺序是:

  1. 先把单 Agent 流程跑顺。

  2. 再把任务拆成清晰边界。

  3. 先串行执行,确认交接稳定。

  4. 最后再考虑 worktree 并行、多 Agent 并发、专项 subagent。

subagent 很适合做独立任务,比如:

  - 只做代码审查

  - 只分析测试失败

  - 只查资料

  - 只检查前端页面

  - 只做性能瓶颈分析

不要一开始就追求复杂编排。流程稳定,比 Agent 数量更重要。

总结

同样是 Vibe Coding,有人又快又稳,有人频繁翻车,差距不只是 Prompt,也不只是模型。

真正的差距在工程流程。

AI 写代码越快,越需要这些东西兜底:

  - Git

  - 测试

  - Review

  - Spec

  - 小步提交

  - 清晰边界

  - 可验证结果

  - 可回滚机制

以前这些流程主要是用来约束人。

现在,它们也顺手约束一下 AI。

短期做原型,可以让 AI 更自由一点,快速试错、快速验证。但只要代码要长期维护,就不能把 AI 当成一个随便发挥的代码生成器。

更好的方式是把 AI 当成一个执行力很强、但需要明确边界和验收标准的工程协作者。

让它写代码之前,先把上下文给清楚。

让它写完之后,再用测试、diff 和 Review 验证结果。

这样 Vibe Coding 才不只是“感觉来了就写”,而是能真正进入生产级开发流程。

评论