一个策划 × 一个 AI
80 天 · 20 个项目
从跨年夜写第一个城市模拟器,到多 Agent 并行驾驭 9 个正式工程项目
(不是什么)
Vibe Coding ≠ "让 AI 随便写代码"。
它是一种人机协作工程范式。
方向、决策、验收
执行、搜索、生成、验证
结构化约定
文件,不是口头
核心命题:一个人如何同时驾驭十几个项目,而不让任何一个失控?
答案是三个词:纪律、复用、验证。
起源故事
2025 年跨年夜,第一次 Vibe Coding——用 AI 写了一个城市模拟器和一个修仙放置游戏。没有 Git,没有测试,所有文件平铺在一个文件夹里。
修仙游戏留下了考古遗迹:4 个 fix_*.py。AI 的 70KB 代码有结构性错误,于是让 AI 写修复脚本——但修复脚本本身也有 bug,于是又写了第二个、第三个……
真正想做的是一款 LLM 驱动的 CRPG。4 天内从零开始了 5 次:
| 日期 | 文件夹 | 结局 |
|---|---|---|
| 2.09 下午 | AIProject3 | 当天放弃 |
| 2.09 傍晚 | AIProject4 | 当天放弃 |
| 2.09 晚上 | AICRPG | 持续到 2.11 |
| 2.11 | AIcrpg2 | 空文件夹 |
| 2.13 | AICRPG3 | 1.1MB 设计,0 行代码 |
被 50 天的混乱教训后,第一次使用 Agent 干的不是写产品——而是给 AI 建"记忆系统"和工程规范。
第一条记录在案的经验教训(P-01):
执行前验证前置条件,不要一看到信号就行动。
这条到第 80 天依然是最高频被违反和重新学习的原则。
按痛感排序 · 上
git diff --stat 确认工作目录干净;部署后线上验证
3 个不同功能的"页面空白但不报错",根因都是 catch 块返回空数组而不是 throw。这种 bug 不会报错,只表现为"功能不存在"。
AutoMater 的 orchestrator.ts 膨胀到 1852 行、meta-agent.ts 2376 行。拆分后平均减少 50% 行数,效率立刻翻倍。
两个 AI 会话各自 git add -A,把对方的未完成改动混入了自己的 commit。
git add <具体文件>
按痛感排序 · 下
一层 JSON.parse 完全不够,需要五层降级解析策略。这是 Vibe Coding 中最被低估的工程挑战。
团队页面空白整整一天。所有层面检查均正确。最终发现:迁移文件名的一个 b 后缀被 Supabase CLI 静默跳过——表缺少 5 个关键列,不报错。
前端(Three.js Y-up)、UE5(Z-up cm)、Unity(Y-up m)。
必须在项目初期定义 Canonical Schema,等对接时再转换 = 盲人拆弹。
不同会话在不同副本上编辑,最终 339 行差异(整个材质系统丢失)。
方法论精华 · 4.1
每次新 AI 会话都是一张白纸。CLAUDE.md 是恢复上下文最快的方式。
最反直觉的结论 · 4.2
写出第一版只需 1 天,让它达到可信赖的质量需要 5–30 倍的时间。
| 项目 | 0 → 首版 | → 质量达标 | 审查轮次 | 测试增长 |
|---|---|---|---|---|
| NewCRPG | 1 天 | 30 天 | 41 轮 | 374 → 1664 |
| MuseSea-Studio | 1 天 | 8 天 | 20 轮 | 987 → 3731 |
| NovelForge | 1 天 | 5+ 天 | 70 轮 | 26 → 691 |
4.3 — 4.4
6 周积累 92 个可复用技能
AI Agent 的本质瓶颈不是智能,是上下文窗口。
4.5 — 4.6
AI 的输出是草稿,不是成品。
| 层次 | 方法 | 时机 |
|---|---|---|
| 编译 | tsc --noEmit | 每次修改后 |
| 测试 | vitest run | 每次修改后 |
| 构建 | build | 每次提交前 |
| 视觉 | 独立子 Agent 截图评审 | UI 修改后 |
| 线上 | 搜索 minified 代码中的字符串常量 | 部署后 |
Agent 连续工作 15+ 轮后会出现"纪律疲劳"——跳过验证、忘记更新文档、在错误目录编辑文件。
上篇 · 1–5
下篇 · 6–10
80 天的量化成果
2376 行 (已拆分)
70 轮 NovelForge
Vibe Coding 不是"让 AI 干活人来躺"——它是一种需要更高密度思考的工作方式。你省下的是打字时间,增加的是决策密度和验证密度。
有纪律的 Vibe Coding 可以让一个人做到过去一个小团队的产出。
没有纪律的 Vibe Coding 只会快速制造一堆看起来能跑但经不起推敲的代码。
区别不在于 AI 的能力,而在于人类是否建立了让 AI 能力可靠释放的框架。