先说结论,一句话:当写代码变得几乎不要钱,把话说清楚,就成了唯一还贵的事。
这句话是我今年被一次翻车揍明白的。
一、我派了 10 个 AI 去画画,它们全都说"没问题"
上个月我做一个 97 集的科普短片。每集三张图,两张卡片能程序生成,剩下 97 张插画得一张一张画。
我就想,这活儿正适合并行——派了 10 个 AI agent,一人分十来张,要求写得明明白白:画布多大、用什么色、线描风格、画完自己检查一遍。
10 个 agent 陆续交活,回报统一得像开过会:
"逐张肉眼查过,无问题。"
我心里咯噔一下。这话太整齐了,整齐得像大学时候我们班交实验报告。
于是我又派了 10 个 agent 去质检——关键是这批不是画的那批,提示词只改了一个字的立场:前面那批是"把它做好",这批是"默认有问题,宁可多报不可漏报"。
结果出来:22 张要重画。
我点开看的时候是真绷不住了:
有的人物头和身体分开了,脑袋在半空中飘着,脖子那块空气都替它急; 有的手臂画到一半就断在空中,末端没有手,跟被谁截胡了一样; 最离谱的一张,我要的是"一个人在桌前翻日志",它画出来是一个人被供在神台上,旁边还有人跪拜——语义不但没对,还整个反了。

我的第一反应,跟所有人都一样:这批 agent 不行,换个更强的模型。
二、翻车现场勘查:凶手是我自己
好在我有个习惯,怪工具之前先怪自己一遍。我去翻我给它们的规格文件。
先看机器人的部分:
系列固定形象:方头机器人,橙色天线球,圆角方头方身,白色填充,墨线描边 stroke-width=5……
嗯,写了一整段,连描边多粗都规定了。
然后我往下翻,找人类角色的部分。找到了,一句话:
人类用简笔画,圆头 + 圆角矩形身体。
……就这么一句。
十个 agent 拿着这一句话各自发挥:有的觉得该给脖子,有的觉得圆头直接坐身上更简洁;有的画了手掌,有的觉得一截线就是手;有的画腿,有的干脆省了——它们不是偷懒,它们是在填我留下的空白。
而我为什么给机器人写了一整段,给人只写一句话?因为我下意识觉得:人这么简单,这还用写吗?
后来我把这句话写进了自己的错题本,加粗:
凡是我觉得"这还用说吗"的地方,就是 AI 一定会自由发挥的地方。
所以真正的根因不是执行力差,是——规格里没写的规则,等于没有规则。
三、修法:把"人必须有脖子"写进代码里
想清楚这一点,修法就变了。我没把 22 张退回去让它们重画,而是花了半天写了个 60 行的 Python 文件,把"人"变成一个函数:
def person(cx, cy, pose="stand", face="neutral", s=1.0):"""一个简笔人。cy 是脚底的 y 坐标。结构保证(这三条是上次翻车的根因,不许改):1. 头和躯干之间有脖子连线,绝不分离2. 每条手臂末端必须有手掌(小圆)3. 腿脚齐全,站在 cy 这条线上"""
七种姿态、五种表情,参数化调用。"人得有脖子"这条规则,从此不靠 agent 自觉,靠代码保证。

22 张重画,一次全过。
那天我在文档里写了一句话,后来成了我团队的口头禅:
靠自觉的规范一定输,能进代码的规则才是真规则。
再后来我才知道,我瞎摸出来的这个东西,业界早有名字了,而且已经卷起来了。
四、SDD 是什么:规格是源代码,代码是编译产物
SDD,Spec-Driven Development,规格驱动开发。
一句话说清:规格才是项目的主产物,代码是从规格生成出来的、可以随时重新生成的输出。
听着像老掉牙的"文档先行"?完全不是一回事。这两个东西的区别,是"活的"和"死的"的区别:

| AI(直接拿去生成代码) | ||
| 改规格,重新生成 | ||
传统的文档先行,最后都死在同一个地方:文档和代码脱节。这画面你肯定见过——设计文档停在第一版,代码已经迭代二十轮了,新人捧着文档理解系统,理解出来的是三年前那个系统,还理解得特别认真。
SDD 为什么在今天才立得住?因为 AI 把"从规格到代码"这一段的成本压到了近乎为零。规格改一改重新生成就行,人不用手工同步——文档第一次有了不腐烂的可能。
我那 60 行的 figures.py 就是最土的 SDD:"人长什么样"这条规格,不再写在文档里等人遵守,而是写进函数里强制执行。
五、谁在用:这不是个新概念,是已经打起来的赛道
我以为这是个小圈子话题,查了一圈发现进展比我想的猛。
GitHub 官方开源了一套工具叫 Spec Kit,一个 Python 命令行工具,12 万多星,支持 30 多种 AI 编码 agent(Copilot、Claude Code、Gemini CLI 等)。它把工作流切成四步,每步之间有明确的检查点:
- Specify(定规格)
要什么、成功标准是什么,先不谈技术; - Plan(出方案)
把规格翻译成架构决策和技术选型; - Tasks(拆任务)
拆成能测、能评审的最小单元; - Implement(写实现)
AI 在前三步的约束下生成代码。
GitHub 自己给它的定位很狠:"Spec-Driven Development flips the script"——规格不再是辅助说明,规格是可执行的。
亚马逊做了个 IDE 叫 Kiro,走得更远:它不是给编辑器装插件,而是把规格做成编辑器里的"一等公民"。你随口描述一个功能,它先把你的话转成正式需求文档——用的是 EARS 记法,一种原本给航空航天安全关键系统写需求用的语法。
翻译成人话:你说"帮我做个登录功能",它先把你按到椅子上,用航天标准问你到底要什么。
后面还跟着 BMAD、GSD 一堆工具在同一条路上抢地盘。而方法论层面,SDD 被明确定义成对"vibe coding"失败模式的回应——AI 生成的代码看着合理、实则跑偏,API 是编的,项目一大就开始腐烂。
说白了:这个行业花了一年时间,用最贵的算力,重新学会了一件老事——先想清楚,再动手。
六、为什么最大的阻力不是工具,是"手写代码惯性"
我看过一句评价,说 SDD 在团队里推不动,最大的阻力从来不是工具不好用,是工程师的手写代码惯性。
这句话精准得让人有点疼。
我们这代人的肌肉记忆是什么?打开 IDE 直接写。 脑子里想清楚三成就开始敲,边写边想,写着写着方案自己就浮出来了——代码是我们的思考工具。
这个习惯在过去是完全正确的。因为过去写代码贵,边写边想是唯一划算的思考方式;文档写得再全,代码还得一行行敲,前置思考的边际收益有限。
但当 AI 三十秒能给你八百行代码,这笔账彻底翻过来了:
你想清楚三成就让它写,它会把剩下七成替你编完——编得还挺像回事,你得逐行去找它编在哪,找出来的时间比自己写还长; 你想清楚十成再让它写,它一次就对。
返工的成本,第一次超过了思考的成本。
所以 SDD 难的不是学工具,是要承认一件反直觉的事:先想清楚再动手,比边想边写更快。 这跟很多人二十年的手感是相反的——所以推起来最大的敌人是惯性,不是学习曲线。
我自己那次翻车就是活例证。我不是不知道要写规格,我是下意识觉得"人物这么简单,还用写?"——手写时代这个判断没问题,因为人画的时候自己就补全了;AI 时代这个判断致命,因为它只会填空白,不会读你的心。
七、不用装工具,今天就能开始的三步
看到这儿你可能想:那是不是得先装 Spec Kit、换个 IDE?不用。SDD 的内核不是工具,是三个动作:

第一步:让 AI 先出方案,你确认了再让它写代码。
成本最低、收益最高的一步。我现在给 AI 的任何一个稍复杂的任务,最后都会加一句:
先给我方案设计(模块划分、数据流、关键决策的理由),我确认后再写代码。
就这一句话,能逼出两样东西:AI 把它的理解摊开给你看(你能提前发现它误解了什么,而不是等八百行代码写完),以及你自己必须想清楚你到底要什么。
顺带一个副作用:等你要跟人讲这个系统是怎么设计的,你讲得出来。跳过这步的人讲不出来——代码能跑,但那是 AI 的想法,不是你的。
第二步:专门去写你觉得"不用说"的部分。
翻车之后我的习惯变了:写规格时专门找那些"这还用说吗"的地方,因为那正是空白所在。
有个笨办法特别好用——规格写完,问 AI 一句:
这份规格里有哪些地方是模糊的、你需要自己做假设的?
它列出来的每一条,都是未来翻车的坐标。这一步花五分钟,省的是重画 22 张图的那半天。
第三步:能进代码的规则,就别留在文档里。
这是我那 60 行函数换来的教训。规格其实分两种:
- 需要判断的
(这个功能为谁解决什么问题、这个取舍值不值)——留在文档里,人来把关; - 可以固化的
(人物必须有脖子、每个接口必须有超时、每次提交必须过 lint)——写进代码、模板、CI 卡口。
靠自觉维护的规范,早晚会输给排期。进了代码的规则,不会。
收尾
回到开头那句话:当写代码变得几乎不要钱,把话说清楚就成了唯一还贵的事。
过去二十年,我们这行默认"能写"是核心竞争力。现在这个前提在松动——不是说写代码不重要了,而是"想清楚、说明白、定标准、验收得了"这一组能力,第一次比手速值钱。
有意思的是,这组能力一点都不新。它一直是资深工程师和架构师身上最难被替代的那部分,只是过去被淹在敲代码的时间里,显不出来。
AI 没有创造它,AI 只是把它从水下抬到了水面上。
那 22 张重画的图,最后我自己逐张看了一遍——全过。而这次真正改掉的,不是那 22 张图,是那个生成图的规格。
你在团队里推过类似的事吗?欢迎留言聊聊你遇到的最大阻力是什么。我先押一个:惯性。
夜雨聆风