他们的代码,没人读过一行

摘要:有一支三人团队,规矩是代码不能由人写、也不能由人审。他们把代码评审换成场景验证,用行为克隆顶替真实的 Okta 和 Slack。这篇讲清楚这套东西怎么转起来,以及为什么你的团队多半还不能照抄。

上周你审了多少个 PR?

大概率答不上来。但你记得那种手感:早上打开代码仓库,红色的一排,每个三五百行。从第一行读到最后一行,读懂七成,剩下三成因为 CI 是绿的,点了通过。

这不是你不认真。

Dan Shapiro 给 AI 编程分了五级,从自动补全一路排到黑灯工厂。他把第四级的日常形容得很直接——你的生活就是一堆 diff。绝大多数人卡在这里,因为放手比想象中难。他自己也停在这一级,原文里只有一句,"我在这里"。

在这里插入图片描述

那第五级长什么样?

先把一个不太舒服的数据放上来。Faros AI 今年分析了 22,000 名开发者、4,000 多个团队、两年的遥测数据,把这种状态叫加速鞭打——车头提了速,车厢被甩在后面。

提速是真的。人均任务完成量涨 33.7%,人均完成的 epic 涨 66.2%。

被甩在后面也是真的。PR 评审时间中位数涨了 441%,每个 PR 对应的事故涨了 242.7%。新写的代码很快被删掉重写的比例,涨了 861%。

还有更扎心的:完全没有人评审就合并的 PR,多了 31.3%。

所以你其实已经在做实验了。只是这场实验没有对照组:你的团队里大概率有一批代码没经过人眼就上线,那不是设计出来的,是漏出来的。

StrongDM 做的事,是把这个漏出来的结果,变成一条明写的规矩。

两条没有解释空间的规矩

StrongDM 的 AI Lab 在 2025 年 7 月启动,从头到尾三个人,牵头的就是他们的 CTO。他们给自己定的章程里有两句话:

代码不能由人写。
代码不能由人审。

人的工作退到只剩说清意图:系统该做什么、要处理哪些场景、哪些约束不能碰。剩下的生成、验证、迭代,Agent 自己跑到收敛,中间不需要人调参,也不需要人点通过。

他们把这套东西叫软件工厂。词听着像营销,但他们真拿它造自己的产品——一款特权访问管理平台。这个品类对可靠性的要求不低,选它当实验田本身就说明点问题。

他们复盘时说,转折点是 Claude 3.5 之后长会话的表现变了,从错误累积翻成正确累积。这个判断我没法独立验证,只能记下是他们自己的说法。

评审到底在干什么

要理解他们为什么敢删评审,得先把自己那一关过了。

直觉上,评审不能删。删了质量谁兜。

那就在评审上加码。有人已经在加:hunk 级评审,逐块通过或者打回;CI 里塞静态检查;前面再垫一层 AI 预审。颗粒度越做越细,队列一点没短,因为细审花的是同一个人的同一双眼睛。

换个方向,加人呢?瓶颈不是人头,是注意力。十个人的评审能力不会变成十份,只会多出九份上下文切换。

那换更强的模型?产出更快,待审的 diff 更多。

三条路都有人走过。走完你会发现,卡住的不是哪一环,是你把代码当成了验收对象。

评审这个动作,本质上是在代码里反推意图。你读 diff,猜作者想干什么,再判断这么干对不对。它之所以必要,是因为意图不在代码里,在人脑子里。

那如果意图本来就在外面呢?

他们要求把系统该有的行为写成端到端场景:用户处在什么状态、做什么操作、系统该怎么响应。场景存在代码库外面,Agent 开发的时候看不到。

这是整个设计的支点。测试住在代码库里,Agent 读得到,于是它能学会让测试通过,而不是让功能正确。最粗暴的版本是写个 return true;隐蔽一点的版本是悄悄把断言改宽,改到刚好能过。

场景在库外,相当于机器学习里的留出集。你看不见判分标准,只能真的把它做对。

判分方式也跟着换了。不再是过或不过,而是一个比例:在所有观察到的执行路径里,有多大比例像是满足了需求。

为什么要用比例?因为行为验证天生是概率的。同一个场景跑二十次,十八次对、两次错,你说它过还是不过。布尔判断会把这个信息直接抹掉。

假 Slack 的意义

还剩一个硬问题:这些场景在哪跑。

真实环境跑不起。调一次 Okta 的接口要联网、要额度,撞上限流就卡住;更要紧的是,你不敢在生产 Slack 上试一件事:如果它半路挂掉会怎样。

他们的解法是造一个数字孪生宇宙。Okta、Jira、Slack、Google Docs 和 Drive,每个都做一个行为克隆,复刻接口、边界情况和可观测行为。

克隆的价值不在省事,在解锁。一小时跑几千个场景,不联网、不花钱、不限流,还能故意让它坏:让 Jira 返回乱码,让 Slack 在写操作进行到一半时断掉,看系统撑不撑得住。

以前重写一个 Slack 服务端是疯子才干的事,因为不经济。现在让 Agent 生成一个行为近似的 mock 很便宜。

变的不是技术可行性,是经济学。

在这里插入图片描述

我去看了一眼他们的仓库

说到这,你可能想去看他们怎么实现的。

我去了。GitHub 上 attractor 这个仓库,全部内容五个文件:一个 884 字节的 README、三份规格文档(93KB、71KB、112KB)、一个许可证。没有一行能跑的代码,GitHub 的语言统计是空的。最后一次提交停在 2026 年 3 月 17 日。

拿另一边的 cxdb 对照,那是真代码库:Rust 约 946KB、TypeScript 574KB、Go 449KB,还在维护。

所以我拿到的是图纸,不是产线。三份规格把设计讲得很细,但数字孪生怎么搭、场景库长什么样、流水线怎么串,都不在里面。

这其实合理。场景库是他们最值钱的资产,每一条都对应一次踩过的坑。换我也不会开源。

代价比收益更需要说清楚

他们有个内部基准:一个人一天如果没烧掉一千美元 token,说明工厂还有优化空间。

注意这话的性质。它是说给自己听的鞭子,不是账单,也不是给你的预算建议。可就算按这个标准算,三个人一天也是三千美元的额度,一个月就够压掉大多数团队的试点预算。

另一个限制是规模。三个人、一条产品线。三五个人的协作半径和三十人不是一个问题。人一多,意图本身先开始打架,场景库会出现互相矛盾的条目,那时候概率满意度是判不出来的。

还有一层更微妙:人力没消失,是前移了。场景要人写、要人挑、要人判断这条算不算通过。区别在于场景能复用,diff 是一次性消耗品。

前期投入也得算进去。造一个 Okta 的克隆要多久,公开材料里没说。这不是拉个容器就有的事。

最要命的一条是覆盖面:它只能验证你想到的场景。想不到的边界照样漏。而且因为没人在读代码,漏了也没人凭直觉发现。你失去的不只是评审,还有评审时那点说不清的直觉——翻到某一行,心里咯噔一下。

换掉评审,不是取消验证

顺着这条线看回去,Faros 那组数据的意思就清楚了。产出涨了六成,事故涨了两倍多,评审时间涨了四倍多。这不是 AI 不行,是生成快到把下游撑爆了。

验证就是这套系统里的传感器。StrongDM 的答案是换一个更宽的,不是把它摘掉。

这个区别很关键。他们要的不是不验证,是验证得比人快一个数量级。评审被换掉了,兜底没有。

两者放在一起看,没人审这件事有两种含义。一种是失控,一种是设计。区别在于你有没有造出替代品。

你的项目能不能这么干

三个前置条件,缺一个就先别动。

意图能不能写成端到端场景。如果你的需求长这样——这个类要线程安全、这个接口 QPS 要过万——那不是场景,是约束。场景得是:用户点了退款,余额在五秒内回到账上,且通知发出去了。

外部依赖造不造得出克隆。依赖三个公开 SaaS,还能试;依赖几十个内部服务、每个都没文档,先别想。这一条最卡人。

失败模式可不可观测。出了问题你得能看见。日志、指标、链路追踪都没有的系统,把评审拆掉等于蒙眼开车。

反过来也成立。跨服务交互的 bug,单元测试的保真度天然不够,这类系统恰恰最需要行为克隆;而遗留系统既没有克隆也没有场景,最该留着人审。

还有个更根本的前提:你得有能力判断什么叫对。场景写得含糊,概率满意度就是自欺欺人。它会稳定地告诉你 95% 通过,而那个 95% 什么都不代表。

写在最后

回到开头那个问题。

评审这一环正在被换掉,不是被取消。换成了场景验证,换成了行为克隆,换成了概率判分。

场景必须放在代码库外面,不然它就是另一种测试,Agent 照样能对着判分标准写代码。

判分从布尔换成比例,因为行为验证本来就没有绝对的对错。

数字孪生让造一个假 Slack 从奢侈变成日常。这件事变的是经济学,不是技术。

他们公开了图纸,没公开产线。

三个人、一条产品线、人均每天一千美元,这三个数字绑在一起才成立。拆开任何一个,结论都不成立。

至于你自己。如果你还在审 diff 审到半夜,先别急着羡慕黑灯工厂。问问你的需求能不能写成场景。写不出来,说明意图还不在你手上,那才是真正卡住的地方。

参考资料

  1. StrongDM 官方博客:The StrongDM Software Factory: Building Software with AI
  2. Dan Shapiro:The Five Levels: from Spicy Autocomplete to the Dark Factory
  3. Simon Willison:StrongDM's Software Factory
  4. Faros AI:AI Engineering Report 2026: The Acceleration Whiplash
  5. GitHub:strongdm/attractor、strongdm/cxdb

作者:唐悦玮 | 公众号同名
从后端出发,用 AI 拓展到全栈的工程师。

posted @ 2026-10-29 11:28  唐悦玮  阅读(13)  评论(0)    收藏  举报