2026年4月13日 · 阅读 —
Vibe Coding 真相:不是写爽,是控熵
图片资源未同步:未命名图片
Vibe Coding 真相:不是写爽,是控熵
“Vibe Coding(氛围编程)”这词听起来像摆烂:打开 Cursor/Windsurf/Claude,手一挥,代码自己长出来。
但 YC 这套指南讲得很直白:
- 核心不是写代码,而是控制 AI 的发散
- 真正的生产力来自流程:计划、边界、版本、测试、复盘
把 AI 当成一个“输出爆炸、但方向感不稳定”的外包队友就好—— 你负责控熵(边界 + 校验 + 回滚),AI 负责出分力(实现 +改动 +解释)。
YC 那套「Vibe Coding」被很多人误解成“开个 Cursor/Claude,然后一路自动驾驶”。
实际刚好相反:真正的核心不是敲代码,而是把 AI 当成一个高产但容易跑偏的队友,用流程把它的“发散/幻觉/自嗨”压住。
一句话翻译:你负责控熵,AI 负责出苦力。
材料来源:YC guide to vibe coding(整理自 X / @Charly Wargnier 等)
别求“自动驾驶”,求“可回滚的推进”
Vibe Coding 的目标不是一次生成一个系统。 目标是:
- 每 30~90 分钟推进一个小步
- 每一步都有“边界”和“证据”(测试/日志/可运行状态)
- 任何时候都能一键回到上一个稳定点
这套东西看似保守,其实是给 AI 这种“高产但不靠谱”量身定制的工程学。
1)规划:先写计划,再让 AI 开工(否则就是把自己卖给随机性)
1.1 先产出一份“可执行计划”
第一步不是敲代码,而是让 AI 写一份实现计划放进 Markdown 文件里。
建议结构(关键:可切片、可追踪):
# Feature: xxx
## Goal
- ...
## Scope
- In scope: ...
- Out of scope: ...
## Won't do (for now)
- ...
## Parking lot (ideas later)
- ...
## Plan (checklist)
- [ ] Step 1 ...
- [ ] Step 2 ...
- [ ] Step 3 ...
## Acceptance (user behaviors)
- ...
额外强调了两个点:
- Maintain scope control:给“以后再做”的想法单独开一个
Parking lot,避免写着写着就加戏。 - Implement incrementally:按小节推进,别试图“先把整个系统生成出来再说”。
1.2 Review & refine:计划必须被“砍”
AI 擅长把事情写大;人类要负责把事情写小。
- 不必要的项直接删
- 太复杂的功能直接标记
Won't do - 边界不清的,先补充“验收动作”,再写实现
一句话:计划不是许愿清单,是约束合同。
1.3 Track progress:每完成一小节,就打勾
明确建议:实现完成后,让 AI 把对应 checklist 打勾。
这个动作的意义不在“记录”,而在让推进有节奏:
- 做完一个点就停一下
- 回头检查边界有没有被破坏
- 再进下一步
2)版本控制:Git 是保险箱,IDE 的 Revert 只是纸巾
2.1 Use Git religiously:每个新功能从干净状态开始
- 一个 feature 一条分支
- 分支起点必须是“可运行/可测试”的状态
别依赖工具自带撤销。AI 写错不是“一行错”,往往是“一片错”。
2.2 Reset when stuck:AI 开始“神游”,直接回滚
用词很形象:vision quest(开始走神游剧情)。
典型征兆:
- 开始编接口/编参数
- 改 A 顺手重写 B
- 一直解释但修复越来越偏
处理方式别温柔:
git reset --hard HEAD
该砍就砍。继续补丁只会把错误堆叠成地层。
2.3 Avoid cumulative problems:失败多次就“重来一次干净实现”
还补了一句:当终于找到正确方案时,最好 reset 然后 clean implementation。
原因很现实:
- 经过几轮失败修复,代码里会残留大量“为了过某个点而临时加的东西”
- 这些残留后面会变成隐形地雷
所以:找到正确路径后,从干净状态把它“重新走一遍”,反而更快。
3)测试:别陷在“单测崇拜”,先把用户路径锁死
3.1 Prioritize high-level tests:E2E/集成测试优先
明确:优先 end-to-end integration tests,而不是 unit tests。
原因很朴素:
- AI 最爱在“你没盯着的地方”做不必要的改动
- 单测保局部,E2E 保用户路径
3.2 Simulate user behavior:测试要像用户一样点
把核心流程写成“有人真的在点击/输入/跳转”。
这类测试的价值是:
- 内部怎么重构都行
- 只要用户路径没断,就不会把产品写成“代码很漂亮但没人能用”
3.3 Use tests as guardrails:必要时先写测试再写实现
提到:有些 founder 建议从 test cases 开始,用测试提供清晰边界。
这不是教条,而是控熵:
- 先把边界写成可运行的断言
- 再让 AI 在这个轨道里产出代码
4)Bug 修复:最有效的提示词,往往就是“把报错粘过去”
把 bug fixing 单独拎出来,说明它在 AI 开发里是高频场景。
4.1 Leverage error messages:报错信息就是最强上下文
很多时候不需要长篇解释:
- 直接把 error message + stack trace + 触发步骤贴给 AI
- 再加一句“不要猜,给出最可能原因 + 验证步骤”
4.2 Analyze before coding:先列原因,再动手
让 AI 先输出:
- 可能原因列表(按概率排序)
- 每个原因对应的验证方法(加日志/断点/最小复现)
把“瞎改代码”改成“像工程师一样排查”。
4.3 Implement logging:战略性加日志
提到 implement logging,这点很关键:
- AI 很会“修到看似没错”
- 但没有日志,就不知道是不是修到了真正根因
日志不是为了漂亮,是为了让系统对排查友好。
4.4 Switch models:一个模型卡住就换脑子
当某个模型持续在一个坑里打转,直接换(Claude ↔ GPT-4 等)。
很多时候不是表达问题,是推理路径卡死。
5)AI 工具优化:把规则写进文件,让 AI 每次上岗都先读员工手册
完整的一组“AI tool optimization”。
5.1 Create instruction files:.cursorrules / windsurf.rules / claude.md
把项目规范固化在文件里:
- 目录结构
- 命名约定
- 不允许的改动(例如:不要动无关文件)
- 测试策略(改行为必须补 E2E)
示例:
# AI Working Rules
- Only touch files mentioned in the plan.
- Do not refactor unrelated code.
- If unsure, ask before guessing.
- Any behavior change requires E2E update.
- Prefer small, reviewable diffs.
这不是写给人看的,是写给每次都会失忆的 AI 看。
5.2 Local documentation:把 API 文档下载进项目
把关键文档放进 docs/,让 AI 读本地文件。
好处:
- 避免联网搜索到过期信息
- 避免凭“训练记忆”编参数
5.3 Use multiple tools:多工具并行
有人会同时开 Cursor + Windsurf。
重点不是品牌崇拜,而是岗位分工:
- 一个负责快写快改(偏实现)
- 一个负责长思考/总结/复盘(偏审查)
5.4 Tool specialization:承认工具有偏科
写得很直白:
- Cursor 前端更快
- Windsurf 更“想得久”
不要指望一个工具全能,把它们当不同角色用更稳。
5.5 Compare outputs:多产几份方案再挑最好的
让 AI 同时给 2~3 个实现方案(或同方案不同取舍),再由人做选择。
这一步的意义:
- 减少“第一版就上头”
- 避免被模型的叙述能力绑架
6)复杂功能开发:先在“干净沙盒”做原型,再搬回主干
提到了 complex feature development 的几个关键动作。
6.1 Create standalone prototypes:先在干净代码库里做
复杂功能容易把主仓库弄脏。
更稳的策略:
- 新开一个干净 repo/目录做 prototype
- 跑通最小链路
- 再把可行实现搬回主项目
这样 AI 的探索不会污染生产代码。
6.2 Use reference implementations:给 AI 一份“能跑的例子”
让 AI 跟着“可工作的参考实现”走,成功率会高很多。
- 指向一个已验证的 demo
- 或者仓库里已有模块作为模板
6.3 Clear boundaries:外部 API 稳定,内部随便折腾
这句非常 YC:
- 外部接口保持一致
- 内部实现可以不断重构
这也是控熵的边界:对外稳定、对内可迭代。
6.4 Modular architecture:有边界的模块化更适合 AI
提到:service-based architecture with clear boundaries 往往比 monorepos 更好。
翻译成人话:
- 边界清楚,模型不容易越界改一大片
- 模块小,模型更容易“看全上下文”
7)技术栈选择:老框架更香,小文件更保命
7.1 Established frameworks excel:老牌框架对 AI 更友好
点名 Ruby on Rails:因为 20 年一致的 conventions,训练数据覆盖足。
延伸一下:
- 不是说新技术不能用
- 但“冷门 + 新潮 + 资料少”的组合,会把 AI 的可靠性拉到地板
7.2 Training data matters:新语言可能更吃亏
像 Rust、Elixir 这类语言,在某些领域很强,但对 AI 来说可能训练语料更少。
所以选型时要加一个维度:AI 对这套栈的熟悉程度。
7.3 Modularity is key / Avoid large files:拆小文件
强调:不要有几千行的大文件。
原因很简单:
- 人类 review 痛苦
- 模型上下文有限,更容易漏掉关键细节
模块越小,越可控。
8)Beyond coding:AI 不只写代码,它还能把杂活扫干净
额外给了“Beyond coding”的清单,这部分很适合创业/小团队。
- DevOps automation:配服务器、DNS、hosting
- Design assistance:生成 favicon、UI 小素材
- Content creation:写文档、写营销材料
- Educational tool:让 AI 逐行解释实现(用于 onboarding / code review)
- Use screenshots:UI bug 直接截图丢给 AI
- Voice input:像 Aqua 这类工具,语音输入速度能到 140 wpm
一句话:把 AI 当“跨职能实习生”,能省掉一堆低价值切换。
9)Continuous improvement:把 AI 开发当成一个长期系统
最后一块是持续改进,核心不是“今天写爽了”,而是“下周还能迭代”。
- Regular refactoring:测试在位后,频繁重构
- Identify opportunities:让 AI 找重构候选点(但由人拍板)
- Stay current:新模型发布就试(别闭门造车)
- Recognize strengths:承认不同模型擅长不同任务
这套思路非常现实:工具在变,流程要能承受变化。
10)一些想法与“真实体感”(不煽情,只讲工程学)
这套指南最值钱的不是某条技巧,而是它默认了一个事实:
- LLM 的产出像洪水:来得快、量很大、但方向不稳定
- 工程体系的作用是堤坝:计划、边界、版本、测试、日志
当把“写代码”切换成“控熵”,很多情绪会消失:
- 不再被“它怎么又改坏了”气到上火,因为回滚是默认动作
- 不再被“它是不是更聪明”焦虑,因为工具只是岗位,不是信仰
- 不再把“写得快”当胜利,因为可回滚、可验证的推进才算赢
换句话说:Vibe Coding 并不是放弃工程纪律,而是把工程纪律提升到了更高优先级。
11)一页可复制工作流(建议直接贴进 claude.md)
# Vibe Coding Workflow
## 0. Plan first
- Write docs/plan.md with Goal, Scope, Won't do, Parking lot, Checklist, Acceptance.
- Only implement one checklist item per iteration.
## 1. Git discipline
- Work on a clean feature branch.
- Commit after each completed item.
- If stuck or AI goes off-track: git reset --hard HEAD.
## 2. Tests as guardrails
- Prefer E2E/integration tests for core user paths.
- Update tests whenever behavior changes.
## 3. Debugging
- Paste exact error messages.
- Analyze possible causes before coding.
- Add logging for observability.
- Switch models if stuck.
## 4. Boundaries
- Keep external APIs stable; refactor internals freely.
- Keep files small and modules clear.
#VibeCoding #AI编程 #Cursor #Windsurf #Claude #Git #E2E测试 #工程化