AI 编程的结构化演进
本文是 Spec Coding 协作体系的宏观导论,面向所有参与 AI 辅助研发的角色。无需任何前置知识即可阅读。
假设你要做一个优惠券功能。同一个工具,两种截然不同的使用方式。
"There's a new kind of coding I call 'vibe coding', where you fully give in to the vibes, embrace exponentials, and forget that the code even exists."
Karpathy 本人后来也做了区分:真正的专业级 AI 辅助编程是另一回事——把所有相关上下文塞进去,描述增量变更,让 AI 给出几种高层方案,你选一种,然后逐行审查生成的代码。
从纯 Vibe 到完整 Spec,不是二选一,而是一条连续的光谱。我们把它分为七个阶段。
从一个阶段跃迁到下一个,通常不是因为"我想做得更好",而是因为"痛了"。
| 跃迁 | 痛点 | 关键动作 |
|---|---|---|
| 1 -> 2 | "线上 bug,回头看代码完全看不懂" | 立规矩:不理解的代码不许合入 |
| 2 -> 3 | "AI 每次都用错 ORM / 不遵守项目约定" | 写 AI-CONTEXT.md |
| 3 -> 4 | "代码风格对了,但做出来的不是我要的" | 需求结构化,写 AC |
| 4 -> 5 | "每个功能单独 OK,集成起来接口对不上" | 先做全局设计和接口契约 |
| 5 -> 6 | "Spec 写了但 AI 偷偷跳过了几个 AC" | 加质量门禁 + 一致性审查 |
| 6 -> 7 | "同样的问题换个项目又犯了一遍" | Bug 根因归类 -> 反哺模板和 Skill |
每个阶段的完整交付流程是什么样的?哪些环节由人来做,哪些被 AI 接管,哪些用 Spec 驱动了自动化?
结构化程度应该跟项目复杂度匹配。不够会失控,过度会拖慢。
对角线上是最优解。偏离对角线越远,要么在浪费时间,要么在积累风险。
"I won't commit any code to my repository if I couldn't explain exactly what it does to somebody else."
"Vibe coding is great for momentum, but without structure it collapses under production demands."
"Guiding AI to write useful software is a deeply intellectual exercise."
随着 AI 模型能力的提升,整条光谱在向上移动——Vibe 的边界在上升,Spec 的天花板也在上升。
今天需要 Spec 才能搞定的场景,明天用 Vibe 就够了。模型进步会不断拉高 Vibe 的上界。
Spec 不会失去价值——它会持续把可交付的复杂度上界往上推。过去做不了的系统设计,有了 Spec + AI 就变得可行。
架构取舍、业务优先级判断、跨团队协调——是 AI 无法替代的。这个区域在缩小,但不会消失。
向下拆解,提升效果;向上聚合,提升效率。两个方向缺一不可。
App + 小程序 + H5 三端券池同步,核销需实时扣减库存并处理并发冲突
拆成 4 个子系统:券模板管理、发放引擎、核销服务、数据统计。定义子系统间接口契约。
以"券模板管理"为例:创建模板、编辑模板、上下架、叠加规则配置。每个功能一个 Spec。
Given 已有满减券 A 和折扣券 BWhen 配置 A 和 B 可叠加Then 两券可同时抵扣,总优惠不超订单 50%
把"写 Spec -> 审查 -> 修改"的循环封装成可复用技能。30 分钟人工审查变成 5 分钟一键触发。
写 Spec-PRD -> 调用审查 Agent -> 通过后 -> 技术补全 Agent。人从"执行每步"变成"关键节点决策"。
多个 Agent 串联成自动化流水线。人的角色后移到架构选型拍板、业务规则裁决、质量门禁判断。
AI 编程这件事,最终会把软件开发带向哪里?
AI 正在大规模消解偶然复杂性——代码实现、测试编写、代码审查、文档撰写。但"我们到底要构建什么"——这是本质复杂性,始终需要人来回答。需求的模糊性、业务的权衡取舍、用户的真实痛点,不会因为 AI 能写代码就自动变清晰。
写 Spec 的过程比 Spec 本身更有价值。当你把"做一个优惠券系统"拆解成子系统、模块、功能点、验收标准时,你被迫把模糊的意图变成精确的定义。类比:我们不会因为有了计算器就停止学数学——数学训练的是思维能力,不仅仅是计算能力。
人只表达 What("我需要一个优惠券管理系统"),AI 处理所有的 How。但 APEX-Agents 基准测试显示,顶级模型在真实世界任务中的首次完成率不到 25%。编码门槛在降低,但工程复杂度并没有消失——它只是换了一种形式出现。
Fred Brooks 在《人月神话》中区分了本质复杂性(Essential Complexity)和偶然复杂性(Accidental Complexity)。AI 消解的是偶然复杂性——代码、测试、文档。但本质复杂性——"到底要做什么"——始终需要人来回答。
找到你的角色,进入对应的工具箱。不需要一次学完,用到哪学到哪。