2026年4月13日 · 阅读 —

YC Vibe Coding 实战手册:别让 AI 写嗨了

Agent 与 SkillsAI 工程实践

图片资源未同步:未命名图片

YC Vibe Coding 实战手册:别让 AI 写嗨了

YC 那套「Vibe Coding」被很多人误解成“开个 Cursor/Claude,然后一路自动驾驶”。

实际刚好相反:真正的核心不是敲代码,而是把 AI 当成一个高产但容易跑偏的队友,用流程把它的“发散/幻觉/自嗨”压住。

一句话翻译:你负责控熵,AI 负责出苦力。

原始材料来自 X:@Charly Wargnier(YC 相关内容整理),此处做了结构重排 + 实操补全(不加新结论,只补落地做法)。


先把误区踢走:Vibe ≠ 乱写

  • 不是“想到哪写到哪”。
  • 不是“让模型一次性生成一个系统”。
  • 不是“靠工具自带的撤销/回滚保命”。

Vibe Coding 的门槛在于:

  1. 拆需求的能力要更强(不然 AI 一口吃成胖子直接噎死)
  2. 版本控制要更干净(不然错误会像雪球一样滚)
  3. 测试要更上层(不然修一个点,另外两个点悄悄炸)

0)一张总览:把 AI 的“熵”关进笼子

把开发过程拆成 3 个回路:

  1. 计划回路:写清楚要做什么、怎么做、先后顺序
  2. 执行回路:AI 只负责在“小范围”内产出代码
  3. 校验回路:用 Git + 测试把偏航拦下来

这三个回路不跑顺,工具再贵都救不了。


1)规划:先写文档,再写代码(真的)

最常见的翻车姿势:一上来就让 AI 生成代码,然后在错误上继续迭代,最后得到一坨“看起来能跑、实际没人敢动”的东西。

更稳的做法是:先让 AI 写计划,但计划必须由人来“砍”。

1.1 用 Markdown 做一份可勾选的实现计划

建议格式(关键是可追踪、可切片):

# Feature: xxx

## Goal
- ...

## Non-goals (Won't do)
- ...

## Plan (checklist)
- [ ] Step 1 ...
- [ ] Step 2 ...
- [ ] Step 3 ...

## Acceptance
- ...

## Notes
- ...
  • Goal:一句话定义这次要达成什么(别写愿景)
  • Won’t do:主动砍掉“看着很香但会拖死进度”的功能
  • Acceptance:用用户行为描述验收(为后面的 E2E 测试埋点)

1.2 精简与修剪:复杂的功能先标红

AI 生成能力强,但“系统性风险控制”弱。

一旦 feature 牵扯:权限、资金、并发、跨服务一致性……先别硬上。

做法很简单:

  • 直接写进 Won't do
  • 或者拆成“先能用”的最小版本(不换结论,只换路径)

1.3 小步快跑:按章节推进,不要一次性要整套

让 AI 写一个模块可以;让 AI 写一个系统,基本等于买彩票。

实践建议:

  • 一次只做一个 checklist item
  • 每次只让 AI touch 少量文件
  • 走到新岔路口,就回到文档改计划

1.4 进度追踪:每完成一步,就打勾 + 立刻提交

这一步看起来“啰嗦”,但它就是稳定性的来源。

  • 完成一个功能点 → 文档勾选 → Git commit
  • commit 信息写清楚:做了什么、影响什么

AI 产出越快,越需要你用“颗粒度”去控风险。


2)版本控制:Git 才是救命绳,不是工具的撤销按钮

有些人对 Git 没洁癖,但一用 AI 就必须有。

因为 AI 的错误不是“写错一行”,而是“写错一片”,还会带着你继续错。

2.1 分支要干净:每个新功能从干净状态开始

建议习惯:

  • 每个 feature 一个分支
  • 分支起点必须是可运行、可测试的状态

别把希望寄托在 IDE 的 revert。

2.2 及时止损:模型开始“神游”,直接回滚

当 AI 出现这些征兆:

  • 开始编接口/编参数
  • 改了 A 却顺手把 B 重写了
  • 反复解释但越修越偏

不要争论,直接:

git reset --hard HEAD

硬一点,省时间。

2.3 拒绝在烂代码上打补丁

修一次失败就继续补丁,最后就是“补丁叠补丁叠补丁”,全靠运气维持。

正确姿势:

  • 修复失败 → 回滚到上一个确定正确的点
  • 换提示词/换方案/换模型
  • 重新来一遍

这不是浪费,是在买稳定。


3)测试与修 Bug:别被“单元测试”困住

Vibe Coding 场景下,最大的问题不是“某个函数错了”,而是“改动的外溢效应”。

所以要优先抓住用户路径。

3.1 优先做高层级测试:E2E/集成比单测更值

单测能保局部,但 AI 最喜欢在你没注意的地方“顺手优化”。

因此更推荐:

  • 先把核心用户流程写成 E2E
  • 让测试模拟真实点击/输入/跳转

这类测试的价值是:只要用户链路没断,内部怎么重构都不慌。

3.2 用自动化当守门员:防止回归

LLM 很常见的操作是:

  • 修 A 的同时,把 B 改坏
  • 或者为了让测试过,动了你没要求它动的逻辑

解决办法不玄学:

  • 核心链路必须有自动化
  • 每次生成/改动后跑一轮
  • 让测试决定“能不能合并”,而不是靠肉眼

3.3 换模型思路:卡住就换“脑子”

当一个模型进入死循环:

  • 同样的错误反复出现
  • 解释听起来合理,但代码一直不对

直接切换模型(例如 Claude ↔ GPT-4)。

很多时候不是你表达不清楚,是它的推理路径卡住了。


4)AI 工具优化:让规则长在项目里,而不是长在脑子里

你不可能每次都靠对话把规范说全。

所以把“团队共识”写进文件,让 AI 每次都能读到。

4.1 指令文件:把规范写死(.cursorrules / claude.md)

指令文件的作用:

  • 限制 AI 的改动范围
  • 统一代码风格
  • 固化工程约束(目录结构、命名、提交策略)

示例(可按项目改):

# Project Rules

- Do not change unrelated files.
- Keep functions small and pure.
- Prefer existing patterns in /src.
- Add/adjust E2E tests when behavior changes.
- If unsure, ask for clarification instead of guessing.

重点不在内容多,而在“每次都生效”。

4.2 本地化文档:把 API 文档放进仓库

很多错误来自:

  • 在线搜索到过期文档
  • 或者模型凭训练记忆瞎补

更稳:

  • 把关键 API/SDK 文档下载进 docs/
  • 让 AI 在本地文件里找答案

这会显著减少“编出来的参数”。

4.3 双持策略:工具各干各的活

有些人会同时开:

  • Cursor:偏“写得快、改得快”
  • Windsurf:偏“想得深、总结强”

核心不是信仰哪个工具,而是把它们当不同岗位:

  • 一个当码农
  • 一个当架构师/Reviewer

5)技术栈选择:老框架更香,小文件更保命

AI 的能力很吃“训练数据覆盖”。

5.1 老牌框架对 AI 更友好

像 Ruby on Rails 这种沉淀久、资料多的体系,对 AI 更友好:

  • 常见坑在互联网上被踩过无数次
  • 模型更容易给出靠谱的套路

选择新潮但冷门的东西,等于让 AI 在黑箱里摸索。

5.2 避开巨型文件:模块小,模型脑子才清醒

AI 的上下文是有限的。

文件越大:

  • 它越容易漏细节
  • 越容易“重写一段不该重写的逻辑”

实践建议:

  • 拆小模块
  • 每次改动控制影响面
  • 让关键逻辑更可定位、更可测试

6)续写:把这套方法变成“每日可复用的工作流”

上面是原则,下面是能直接照着做的节奏。

6.1 开工前 10 分钟:先把边界钉死

开工前做三件事:

  1. 选一个最小任务(能在 30~90 分钟内完成)
  2. 写进计划文档(含 Won't do)
  3. 明确“验收动作”(用户会点什么、看到什么)

这三步做完,再开 AI。

6.2 一次对话只解决一件事:别开“全能许愿池”

给 AI 的任务建议写成这样的结构:

  • 目标:只改某个行为
  • 限制:只允许改哪些文件
  • 输出:需要补哪些测试
  • 失败策略:不确定就先问

示例提示词(按项目改写即可):

Task: Implement <feature> following the plan in docs/plan.md.
Constraints:
- Only modify files under src/<module>.
- Do not refactor unrelated code.
- If the plan is unclear, ask before coding.
Tests:
- Add/adjust E2E tests for the acceptance criteria.

这类提示词的价值是“控熵”:限制范围,减少发散。

6.3 每个 checklist item 的标准闭环

每次完成一个小步,都走同一个闭环:

  1. 生成/修改代码
  2. 跑测试(至少跑关键链路)
  3. 文档打勾
  4. Git commit

缺一项都容易出事。

6.4 处理翻车:三种“立即止血”的动作

  • 回滚:先回到干净状态再说
  • 缩小任务:把任务再拆一半
  • 换模型:换一个推理路径

别让 AI 陪着在一个坑里挖 2 小时。

6.5 团队协作补丁:让每个人都在同一套规则里

多人协作时,建议把下面内容写进仓库:

  • claude.md / .cursorrules(统一约束)
  • docs/plan-template.md(统一计划模板)
  • docs/testing-guide.md(统一测试优先级:先 E2E 再单测)

这样新人上手不会靠口口相传,AI 也不会各写各的风格。


7)一页速查清单(复制就能用)

开始前

  • 有一份 Markdown 计划(含 Won’t do)
  • 任务被拆成 30~90 分钟的小步
  • 验收动作写清楚(为 E2E 服务)

开发中

  • 每次只做一个 checklist item
  • 只改小范围文件
  • 模型开始神游就回滚

收尾

  • 跑过关键链路测试
  • 文档打勾
  • Git commit(信息清晰)

#VibeCoding #AI编程 #Cursor #Windsurf #Claude #Git #E2E测试 #工程效率