
GitHub上超四成PR由AI代理起草,软件工程流程尚未跟上
来源标题:In the software factory, engineers become process engineers
到9月,GitHub上超过40%的pull request由AI代理生成初稿,高于3月的17%。代码生成变快,但交付流程没跟上:CircleCI数据显示日均workflow运行同比增长59%,头部5%团队增长97%,最低四分位团队无明显增长。有公司强制PR产出翻倍后,每位评审者的负担翻倍,自动化评审在覆盖面上几个月内超过人工评审。
以下正文由 AI 翻译自 The New Stack(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
在软件的发展历程中,稀缺资源一直是会写代码的人。行业建立的每一个流程都基于这一假设。冲刺、代码审查、预发布环境、发布列车,全都是围绕人工手动完成工作来设计的。
这个假设已经不成立了。到9月,GitHub上超过40%的pull request是以agent的初稿开始的,而3月这个比例是17%。工作正在向机器转移,但围绕工作的流程还没有跟上。
Agent让生成代码变得廉价而快速。但在大多数情况下,它们对交付代码尚未产生同样的影响。CircleCI的2026年交付数据显示,日均workflow运行次数同比增长59%,排名前5%的团队增长了97%,而最低四分位的团队没有可测量的增长。一项针对某公司的研究要求将pull request产出翻倍,结果发现每位审查者的负载翻倍,自动化审查在覆盖率上几个月内就超过了人工审查。
“当任何行业的工作被自动化时,人不会消失。他们停止做那些工作,开始设计工作所运行的系统。”
当任何行业的工作被自动化时,人不会消失。他们的工作变了。他们停止做那些工作,开始设计工作所运行的系统。软件工程师正在变成流程工程师,他们构建的是一个软件工厂。
三条制造业的经验适用于agent
软件不是汽车工厂。工厂成千上万次地制造同样的产品,而软件从不会两次交付同样的变更。但有三个理念是通用的,因为它们关乎如何运行一个由机器完成工作的系统。
第一,人设计的是系统,不是产出。福特的Model T从每辆车12.5小时降到1914年的每93分钟一辆,而工人并没有变快八倍。是工程师重新设计了生产线。
第二,质量在每一步中内建。丰田佐吉发明了一种织布机,任何一根线断了就会自动停止,于是一个操作员可以看管多台机器,而不是盯着一台。丰田围绕这个理念构建了它的生产系统,W. Edwards Deming花了数十年告诉制造商停止依赖终端检验。
第三,最慢的步骤决定节奏。这就是Eliyahu Goldratt在《目标》中的观点。加速瓶颈之外的任何步骤,你只会在瓶颈前堆积更多工作。Agent加速了编码,而现在堆积发生在审查和验证环节。
软件工厂是一个agent网络
软件工厂运行在众多专业化agent之上,每个agent擅长一项工作,在整个生命周期中把工作传递给其他agent。一个研究agent把使用数据和客户通话转化为简报,一个规格agent撰写带验收标准的需求。一个编码agent编写变更,一个审查agent审查变更。一个测试agent运行变更并把失败送回,一个发布agent在feature flag后面逐步推出。一个站点可靠性工程(SRE)agent对生产环境中出现的问题进行分诊,并开启下一项工作。
这个循环中的大多数交接是agent对agent的,这改变了交接的本质。在人类之间,交接可以是一个Slack线程和一些共享上下文。在agent之间,它必须是一份契约,说明传递什么、以什么形式、附带什么证据。没有验收标准的规格书让编码agent无从瞄准,没有测试证据的变更让发布agent无从信任。
“没有验收标准的规格书让编码agent无从瞄准,没有测试证据的变更让发布agent无从信任。”
Agent对agent的工作还会以新的方式失败。错误会累积,因为每个agent都基于上一个的输出继续构建。Agent可能过于容易达成一致,或者永远来回交换同一个修复。一个agent工厂需要的是一个机器工厂所需要的东西:工位之间的检查,以及有人来决定这些检查放在哪里。
软件工程师变成流程工程师
那个人就是软件工程师。工作从写代码转向设计写代码、测试代码和交付代码的系统。这更需要技术能力,而不是更少,因为你现在负责所有代码是如何被制造出来的。工作归结为四项职责,第一是设计流程:哪些agent存在、每个agent负责什么、什么并行运行、每次交接必须包含什么。
第二是定义“好”。Agent无法命中没有人写下来的目标。规格书、验收标准、性能预算和API契约过去存在于人们的头脑中。现在它们必须足够明确,让机器能够检查。
第三是改进产线。当一个agent交付了bug,有用的问题不是agent为什么那样做,而是产线为什么让它通过了。每一个逃逸的缺陷都是流程bug。
第四是设置人工关卡。人应该放在错误代价高昂、需要判断力的地方。对每个agent pull request进行逐行人工审查是手工艺时代的习惯,相当于工厂里手工检查每一颗螺栓。
“当一个agent交付了bug,有用的问题不是agent为什么那样做,而是产线为什么让它通过了。每一个逃逸的缺陷都是流程bug。”
Agent写代码、修测试。Schema迁移出错代价高昂但机器检查成本很低,所以agent在硬性检查后面运行它。用户界面(UI)文案需要品味但修改成本低,所以人在发布后审查。构建什么以及安全边界在哪里,需要人工关卡。
质量内建于每一个变更,而不是在最后检验
大多数团队仍然运行着旧的质量保证模式。变更堆积起来,然后在最后经过一次检验:一个共享的预发布环境和一个人工审查者。那是整个工厂只有一个测试台,一旦agent使变更数量成倍增加,它就变成了Goldratt所描述的瓶颈。
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。