工程 / 官方
智能体编程让CI系统不堪重负,Anthropic如何重构测试影响分析服务
随着AI智能体深度介入代码编写与审查流程,Anthropic工程师的季度代码产出量较2021至2025年间提升了8倍,其中80%的代码由Claude生成。代码库中的测试数量增长了10倍,而工程师人数几乎没有增加,这共同导致CI任务量在六个月内激增25倍,测试影响分析服务多次濒临崩溃。工程师Sachin Malhotra先后尝试了扩充机器核心数、按代码包分片并行处理、每日重启服务三种补丁方案,有效期分别为70天、29天和不足一天。每一次临时修复都比上一次更快失效,最终团队意识到必须彻底重新设计服务架构。这一经历揭示了一个关键教训:在智能体驱动的软件开发生命周期中,必须提前为指数级增长做好架构规划,半措施只会浪费时间。
Anthropic的工程效率在过去一年发生了根本性变化。工程师平均每季度的代码产出量是2021至2025年间的8倍,Claude负责生成其中约80%的代码,同时也深度参与PR审查与合并决策。代码生成不再是瓶颈,PR审查速度加快之后,持续集成系统开始承受前所未有的压力。与此同时,代码库中的测试数量增长了10倍,工程师规模却几乎没有扩张,两者叠加导致CI任务量在短短六个月内暴增25倍。
为应对这一压力,Anthropic早先构建了一套确定性测试影响分析服务,根据历史运行结果和代码包关联性来决定每次PR需要运行哪些测试,而非对所有变更运行全量测试。该服务由两个核心组件构成:监听器负责记录每次CI运行的测试结果,选择器则读取历史数据并决定每个PR应运行哪些测试。这一机制在任务量可控时运转良好,但当每秒都有多个CI任务并发时,监听器开始持续落后于PR队列,产生严重的数据滞后。
监听器一旦出现滞后,连锁影响便会迅速扩散。20分钟的滞后可能意味着数万条测试更新无法及时同步到选择器。若此时有问题代码被合并,失败的测试会干扰其他所有人的工作流;若某个依赖开始出现不稳定,不可靠的红色报错会阻塞合并;若某个测试被修复或新增,它在监听器追上进度之前都不会被纳入运行范围,从而埋下回归风险。由于需要维护每个测试的历史记录,整个服务只能以单进程方式运行,无法水平扩展。
面对持续告警,团队先后尝试了三次补丁。第一次将服务器核心数翻倍,撑了约70天。第二次借助Claude生成代码,将监听器按代码包拆分为独立分片并行处理,但仅维持了29天。第三次尝试每日重启服务,结果不到一天便再度失效,且重启本身导致服务逐渐积累更大的滞后,部分CI结果因此未被监听器捕获,测试选择组件开始依赖过时数据做决策。值得注意的是,这并不意味着代码未经测试就被推送到生产环境,而是测试选择的准确性受到了影响。
在整个排查过程中,Malhotra在Anthropic内部版本的Claude Tag中开启了一个长期会话,专门用于监控服务状态。每当监听器滞后超过5万个任务,Claude便会主动发出提醒并延续之前的对话,无需重复交代背景。Claude多次建议彻底重构,但团队通常选择再打一个补丁。这段经历本身也印证了智能体工具在工程运维场景中的实际价值——持续的上下文记忆让人机协作更加高效。
这次经历带来的核心启示并不在于具体用了哪些扩容手段,而在于每一种手段的有效窗口都在急剧缩短。一年前能撑数月的方案,如今只能撑数天。与此同时,由于编写代码本身不再是瓶颈,彻底重新设计一个服务所需的时间也大幅缩短,且能带来更持久的收益。Malhotra认为,随着智能体持续加速代码生成与审查,水平扩展的测试选择架构将成为行业标准,提前为指数级增长做好架构规划,远比反复打补丁更有价值。
要点
- 智能体编程使Anthropic工程师代码产出量提升8倍,CI任务量六个月内暴增25倍,测试影响分析服务多次濒临崩溃
- 三次临时补丁(扩核、分片、重启)的有效期依次为70天、29天和不足一天,每次修复的边际收益急剧递减
- 监听器滞后会导致测试选择依赖过时数据,引发误报、漏测等连锁问题,对AI驱动的开发流程影响尤为显著
- 在智能体时代,彻底重构服务架构的成本已大幅降低,提前规划指数级增长比反复打补丁更具长期价值
- 水平扩展的测试选择架构预计将成为行业标准,工程团队应尽早评估现有CI基础设施的扩展上限
原始标题:Agentic coding is straining CI. Here’s how we scaled test impact analysis at Anthropic | Claude by Anthropic
本文由 DataHub 基于公开来源整理,用于信息发现与摘要阅读;具体事实、数据和后续更新以原始来源为准。