Vibe Coding 进化论:从“盲盒式抽卡”到“立法者”的跃迁
核心观点:AI 编程的本质,不是让 AI 代替你的手去敲键盘,而是让你从“砌砖工人”晋升为“总设计师”。
引言:由于一个记分牌引发的“偷懒”惨案
作为程序员,我们总有一种奇怪的执念:遇到需求时,第一反应不是“找个现成的”,而是“我自己能写一个”。
最近打扑克、搓麻将时,我急需一个记分工具。市面上的小程序要么广告满天飞,要么交互反人类。于是那个熟悉的念头又冒了出来:“不如自己写一个?”
但这次,我决定换个玩法。既然处于 Vibe Coding(氛围编程/心流编程) 的时代,我不想再体验手敲 标签的枯燥,我想试试**“全自动驾驶”**——只动嘴,不动手。
然而,现实给了我一记响亮的耳光。我发现:如果你把 AI 当作许愿池,它给你的通常是破铜烂铁;只有当你把它当作施工队时,它才能给你盖起高楼。
第一阶段:盲盒式编程 —— “在老虎机前等待奇迹”
最开始,我天真地以为 AI 拥有读心术。
我在对话框里敲下:“帮我写一个微信小程序,用来记扑克和麻将的分数。”
AI 的响应速度极快,几秒钟就吐出了 WXML、JS、JSON。看起来像模像样,代码结构似乎也对。但当我把代码粘贴进 IDE 一运行:
- 点击“加分”,数字没反应;
- 界面丑得像 1998 年的网页;
- 甚至连基本的变量名都在混用拼音和英文。
这哪里是编程,这分明是在玩扭蛋机(Gacha) 。
我输入一个模糊的 Prompt,就像投下一枚硬币。出来的结果完全随机:可能偶尔不仅能跑,还挺漂亮(SSR 卡);但绝大多数时候,是一堆无法维护的垃圾代码(N 卡)。
痛点总结:
这种“抽卡式编程”带来的挫败感极强。你不得不花费比自己写代码更多的时间去 Debug,去猜测 AI 到底在哪里“幻觉”了。如果不消除随机性,AI 编程就永远只是玩具,无法进入生产环境。
第二阶段:保姆式指令 —— “坐在副驾驶的驾校教练”
吃够了盲盒的亏,我开始研究 Prompt Engineering(提示词工程) 。我意识到,不能指望 AI 猜我的心思,我得像个喋喋不休的“驾校教练”,在副驾驶时刻盯着它。
我开始输入长达几百字的指令:
“使用微信小程序原生语法,样式使用 Tailwind 风格的 class 生成。
页面结构放在 pages/score 下。
数据结构要用一个数组对象,包含 name 和 score。
记得处理 input 的双向绑定……”
这一次,效果立竿见影。
代码能跑了,UI 也像个现代产品了。但是,我并没有感到轻松。
我陷入了**“挤牙膏”**的困境:
- 漏了说“保存数据”,它就真的只做内存记分,一刷新就没;
- 忘了说“防抖”,用户连点几下就加了几次分;
- 每次修改一个小功能,它可能会破坏掉另一个原本好的功能。
痛点总结:
虽然代码质量提升了,但我沦为了**“人肉编译器”和“代码审查员”**。我的大脑必须时刻保持高负荷运转,去检查 AI 的每一个逻辑漏洞。这完全没有 Vibe,只有疲惫。
第三阶段:Spec-Driven Development (SDD) —— “先签合同,再动工”
真正的转折点,发生在我改变思维模型的那一刻。
我意识到:AI 不缺编码能力(How),它缺的是对业务边界的理解(What)和约束(Constraints)。
如果我不先把“蓝图”画好,AI 这个“建筑工”就会按自己的想象瞎盖。于是,我引入了 规范驱动开发(Spec-Driven Development) 。
我不再直接让 AI 写代码,而是让它扮演不同的角色,通过多轮对话生成**“工程合同”**。
第一步:虚拟产品经理(The PM)
任务:输出《PRD 需求文档》
我让 AI 站在 PM 的视角,帮我梳理逻辑。它列出了我没想到的细节:
- 异常处理:如果用户输入了负数怎么办?如果断网了数据怎么存?
- 业务闭环:游戏结束后,是否需要生成战报图片分享?
第二步:虚拟设计师(The Designer)
任务:输出《UI 设计规范(Design Spec)》
不直接写 CSS,而是先定义规则:
- 色板:主色调、警告色、背景灰度。
- 间距:定义 spacing-4, spacing-8 的具体像素。
- 交互:按钮在 active 状态下透明度变为 0.8。
第三步:虚拟架构师(The Architect)
任务:输出《技术方案与目录结构》
- 强制约定:状态管理使用 MobX 还是简易 GlobalData?
- 文件规范:工具函数必须放在 /utils,组件必须是大驼峰命名。
第四步:执行者(The Coder)
高潮来了。当手里握着这三份详细的 Markdown 文档(即 Spec)时,我对 AI 说了最后一句话:
“作为资深前端工程师,请阅读上述 PRD、设计规范和技术方案,严格按照规范实现这个小程序。”
结果令人起鸡皮疙瘩。
AI 生成的代码,不仅目录结构完美匹配,甚至连注释风格、错误边界(Error Boundary)都处理得滴水不漏。整个过程就像是一条精密的工业流水线,由于“合同”规定得清清楚楚,AI 几乎没有犯错的空间。
为什么 SDD 是 Vibe Coding 的终极答案?
传统软件开发中,我们常陷入“先写代码,再补文档(甚至不写文档)”的恶性循环。这导致了所谓的“屎山”——只有上帝和当初写代码的那个人知道逻辑。
而在 AI 时代,SDD 反转了这一流程:
-
代码是廉价的:生成代码的成本趋近于零。
-
思考是昂贵的:定义“做什么”和“怎么做才规范”才是核心价值。
-
Spec 即真理:
- Spec 是你和 AI 之间的法律合同。
- Spec 是多 Agent 协作的通用语言。
- Spec 甚至可以直接转化为 自动化测试用例(如 Playwright 脚本),让 AI 自己验证代码是否符合合同。
在这种模式下,你不再是陷入 for 循环细节的程序员,你是指挥家。你挥动指挥棒(Spec),AI 负责演奏出完美的乐章。
结语:程序员的新角色 —— “数字世界的立法者”
回到最初那个记分小程序。
现在它不仅跑起来了,还拥有了暗黑模式、历史回溯、甚至多人实时同步功能。
而在这个过程中,我写得最多的不是 JavaScript,而是 Markdown。
Vibe Coding 的未来,属于那些善于定义问题的人。
未来的开发者,将从“代码的搬运工”进化为“系统的立法者”:
- 你需要具备结构化思维,把模糊的想法拆解为严密的逻辑条款;
- 你需要具备系统设计能力,知道如何通过 Spec 约束 AI 的行为边界;
- 你需要具备审美与判断力,在 AI 给出的一百种方案中,选出最优雅的那一个。
别再抱怨 AI 写不出好代码了。
那是你的“合同”没写好。
从今天起,试着写一份好的 Spec,然后坐看 AI 为你建造起整座城市。这,才是真正的 Vibe。