JavaScript 的 BDD 库 Yadda,昨天发了 3.0.0。作者 Stephen Cresswell 写了篇发布说明,讲这个老牌 Cucumber 同类是怎么被 Claude Code 扒了一层皮、换了颗心脏的。通稿写得诚实,没怎么吹“重新定义”,但里面有一句话,干过这行的看一眼就捞得出来——
编码能力已经不是瓶颈,协调智能体干活时的认知负荷才是。
这剧本,眼熟。不是说这话新鲜——Cursor 出来时有人喊过,Copilot 出来时也有人喊过。新鲜的是,这次说这话的人手里真拿着一个“一天改完”的库。他不是在讲理念,他是在讲他上周干完的活。
这瓜我没打算吃太大口,但结构值得拆。
改动清单不算花哨:只面向 Node.js,砍掉 CasperJS、PhantomJS、Bower 这些坟头草三尺高的集成,测试套件迁到 node:test,接上 Biome 和 lefthook,源码改成 ES6,顺手补了 TypeScript 类型定义。改造顺序划重点——Claude 规划成多个分离阶段,作者一个阶段一个阶段推进。作者特意提了一句:刻意避免在同一阶段同时改生产代码和对应测试,保住测试当外部约束的效力,别让“改坏一块但测试跟着改了”这种事把一切装得像没事发生过。
就这几行字,比任何关于 prompt 技巧的长文都像样。
因为他在聊一个特别具体、特别不性感、但智能体时代每天都要撞上的问题:怎么让一个速度奇快、记忆超强、但偶尔精神错乱的员工干活,而不让这活越干越脏。他选了最朴素的一招——一次只让 AI 动一块肉,另一块用锁链拴住。这招自己改过几年老代码的人一看就懂,根本不是“提示词工程”,就是工程纪律。Claude 负责定拆解顺序、写新代码,人类负责守边界、按阶段审阅、盯着测试别被顺手改歪——像带着一条聪明得会钻空子的狗走迷宫,绳子得始终攥在自己手里。
整个过程加上并行处理其他杂事,大约一天。一天能交付完一个库,说明对它本身的“编码”确实过了大多数时间。像 Cresswell 这种常年维护 BDD 工具的老手,真正的功力不在那几百行迁移上,而在怎么吩咐机器、怎么划分阶段、怎么判断“这块可以放手”、怎么在它跑偏之前喊停。这就是他说的认知负荷。它比“写代码的能力”值钱,因为后者现在可以租。
这里插一句我自己的话:这个“认知负荷”概念,快被一帮只发 demo 视频、不接实际项目的爱好者聊臭了。他们说“指挥 AI 很难受”,主要是还没学会用外部约束钳制 AI 的自由发挥——像玩没刹车的卡丁车,只喊“这车太快”。Cresswell 是那种会主动装刹车盘的人。很多人把“限制 AI”理解为自我设限,其实限制得越脏、越明确,它跑得越欢。
话不能说得太满。新版还加了个功能:支持把功能规格说明写成 GitHub 风格 Markdown。理由很直线——可执行规格说明能给智能体好用的上下文,还能当一份可验证的契约。这话听着对,但我打个问号:规格说明一旦本身是给人看的,“可执行性”和“可读性”之间就永远有条缝隙。现在的 LLM 能同时理解这两种文体了,不再像过去那样只有程序员能把它俩对到一块——这部分的后续,可能比“用 AI 写代码”本身更值得追。这条我留着以后写。
说回发布本身。翻遍整个发布记录,有个细节特别扎眼:Claude Code 究竟是怎么把 Yadda 分阶段的?让它自己读一遍源码,还是给了它一份设计思路?这是决定“调度链”上限的关键。但我更想弄明白另一件事——在一个“所有代码都可以被 AI 重写”的年代,一份老库的干净架构是怎么被 AI 识别出来,并因此没有被重构得面目全非的? 好的工程认得出好工程。这件事上,人和机器达成了罕见的共识。
文末作者说编码能力不再是瓶颈,这句话我举一半手。另一半手压在这个问题上:有一天协调认知也不再稀缺,人人都能管十条智能体流水线时,那些只会“管理”不会“判断”的人,靠什么吃饭?
答案我也没有。但 Yadda 3.0.0 至少证明了一件事:提前想清楚这个问题的人,正在闷声发大财。
等下一批跟风复制“一天改库”叙事的热帖出来,我把这篇改个标题再发一遍,就叫《我说过吧》——瓜不新鲜了,但真香。