原视频:B 站《VibeCoding就该这么做!》 https://www.bilibili.com/video/BV1YP5W6ZEP9/
AI 编程最大的问题,不是“会不会写代码”
AI 已经能把“写程序”这件事变得很便宜。你说几句话,它就能搭一个项目、补一个功能、修一个报错。问题在于:项目一复杂,随口指挥 AI 的代价就会迅速变高。
视频里用一个很具体的例子说明这件事:从零做一个 FC 模拟器,并让它跑起《超级马力》。作者自己并不懂模拟器怎么写,但不是直接让 AI “给我写一个模拟器”,而是把 AI 编程拆成一个更像工程流程的过程。
第一步:先把需求说清楚
很多 AI 写出来的东西“不差,但总是不对味”,根本原因往往不是模型太弱,而是人自己也没想清楚要什么。
视频里的做法是,把提示词拆成四块:
- 目标:我要用 Python 做一个 FC 模拟器,最终能跑《超级马力》。
- 输入:当前项目是一个 UV 创建的 Python 工程,ROM 文件已经准备好。
- 输出:请在 docs 目录下生成需求文档 Proposal.md。
- 步骤:我不懂 FC 模拟器,请用提问的方式帮我确认需求,不要擅自猜测。
这个思路很关键:不明确的地方,让 AI 先问,而不是让它先写。
第二步:把设计落到文件里
需求确定后,不要马上开写代码,而是让 AI 根据 Proposal.md 生成详细设计。
这里的重点不是文档本身有多漂亮,而是让系统被拆成相对独立的模块,例如 ROM 加载、CPU 模拟、PPU 模拟等。模块边界越清楚,后面让 AI 分头实现、分头测试就越稳。
视频里还有一个很实用的习惯:每一步的结果都写进文件,而不是一直堆在聊天上下文里。这样可以让新会话只读取必要文档,减少上下文膨胀,也降低 AI 因压缩上下文而丢细节的风险。
第三步:按模块拆任务
有了详细设计之后,再让 AI 为每个模块生成单独的任务清单,并用 Progress.md 记录整体进度。
这一步的意义是把“做一个大项目”变成“完成一组边界清楚的小任务”。对 AI 来说,小任务更容易写对;对人来说,也更容易检查它到底完成了什么。
第四步:用主 Agent 管进度,子 Agent 写模块
如果把所有任务都交给一个 Agent 从头写到尾,上下文会越来越长,成本高,错误也更难控制。
视频里的方案是:主 Agent 只负责读取 Progress.md、分配任务和监督进度;子 Agent 负责具体模块的实现。每个子 Agent 都拿到自己的详细设计、任务文件、测试要求和验收标准。
更重要的是,不是“写完就算完”。每一行重要代码都要有对应测试,最后还要通过 mypy、Ruff 和 pytest。视频里的示例最终生成了模块化代码、单元测试,并通过了 196 个测试。
这套流程真正有价值的地方
更稳的 Vibe Coding,大概应该长这样:
- 先让 AI 帮你澄清需求,而不是直接开写。
- 把需求、设计、任务、进度都沉淀成文件。
- 控制单个会话的上下文长度,必要时开新会话。
- 按模块拆任务,让多个 Agent 各做一小块。
- 用类型检查、代码规范和单元测试兜底。