在AI时代,我们是否还需要持续集成?
在QCon AI会议的一个关于AI与工程的讨论小组中,一位小组成员提出了这个也许故意挑衅的问题:AI是否会终结持续集成?
虽然活动中的许多人很快否认了AI会走得如此之远以至于真正消除CI的观点,但这个问题在会议大厅中引起了共鸣。会议在曼哈顿上东区纽约医学院的学术环境中举行,这个话题竟然成为了活动中讨论最热烈的话题之一。
许多人同意,在AI时代,软件开发生命周期必须发生改变。
曾在Shopify、AWS和Artsy.Net担任工程职位,最近在微软担任副总裁职务的Daniel Doubrovkine,在小组讨论中首次提出了AI是否会完全终结CI的问题。
他最近访问了Meta的运营部门,惊讶地发现该公司在将新代码推送到生产环境之前实际运行的测试非常少,开发人员可以在本地笔记本电脑上运行许多测试("左移"),然后再推送代码。
"我认为AI为我们重新思考工作方式提供了新的机会,"他说,并指出这也给了我们摆脱在发展过程中积累的不必要任务的机会。
拉取请求是CI系统的核心,它会启动一系列软件测试,然后将代码合并到生产环境中。
但是"没有宇宙的基本法则规定PR审查或代码审查必须在代码部署之前进行,"CI/CD服务提供商CircleCI的首席工程师Michael Webster在他自己的演讲中同意道。"有很多合规工具说必须这样做,这些都很重要。但这不是软件交付的基本事实。"
重新思考软件交付流程
我们将开发生命周期视为一系列线性的离散步骤。"你推送代码。你构建,然后测试,然后部署,"Webster说。
"这种模型在AI面前站不住脚,"他说。
Webster在QCon的演讲主题是AI和智能体系统如何改变软件交付生命周期。CircleCI是一家CI/CD提供商,每年处理超过十亿个客户任务。
从CircleCI在自己客户群中观察到的情况来看,软件行业正处于大量使用无头智能体的边缘,这些智能体可以按计划承担长期运行的任务,或通过webhooks激活。
无头智能体在机械翻译方面表现出色,只要给它们一套可靠的规则。结构良好的代码库是关键。
CircleCI的一个项目中,智能体发挥了作用,该项目是为CI/CD软件引入暗黑模式。设计团队指定了所需的属性,智能体完成了遍历所有面向用户的组件并进行更改的繁重工作。
"总的来说,我们发现领域专业知识加上AI的这种配对是一个非常强大的组织属性,因为它允许更多人做出贡献,"Webster说。
根据Webster通过Google的GitHubArchive for BigQuery的估算,GitHub现在每周产生数十万次与智能体相关的活动。它们在做什么?拉取请求。
但AI驱动的项目可能会创建大量代码,这会形成自己的瓶颈。
"你有AI推送的代码和它们编写的代码一样多,"Webster说。Circle CI在自己的客户中也看到了这种行为。
代码审查的挑战
平均而言,代码审查员每小时能够检查500行代码。当智能体服务每10分钟能产生1500行代码时,必然会出现交通拥堵。
除了数量问题,拉取请求"通常效率低下,"Webster说。根据许多报告,PR审查团队审查代码的中位时间可能从14小时到3小时不等,在单个工程师坚持不懈地推进一个PR的情况下。
审查PR会让你脱离工作流,而提供的信息在开发周期的早期阶段会更有用。
持续的技术债务积累也是这种PR海啸的问题。
自主工作的无头智能体可以快速工作,但也可能粗糙。最新的DORA调查报告发现了同样的问题:速度增加了,但更不稳定。
在一篇论文中,一组研究人员发现,采用Cursor等AI服务可以在代码开发中提供暂时的收益,尽管项目的速度很快就会被"静态分析警告和代码复杂性"所阻碍。
在他自己的数学计算中,Webster估计,一旦AI整体上比人类程序员快75%,使用AI生成代码获得的任何收益都会变得无用。
"如果你无法补充以加速你的交付,与AI相比,它都会被过程中的所有延迟冲刷掉,"Webster说。
换句话说,"现实是,即使你确实让AI以你想要的速度运行,作为一个组织,以及你试图实现的目标,即使你想要也无法更快。"
有一些可以做的事情,比如优化管道、重写脚本、并行化测试和更好的代码审查,这些都会有所帮助。
重新设计验证流程
但也许最好的答案是重新思考测试和验证过程,让智能体尽可能多地完成工作。
"如果你有验证AI的方法,你可以让它以最快的速度运行,"Webster说。
开发一套测试,确保如果代码通过测试,就应该进入生产环境。正如其他人指出的,失败是AI本身可以用来微调自己过程的数据集。
全面的单元测试对此很有用,尽管在可扩展性方面受到限制(Webster估计约为人工驱动工作负载的10倍)。
更好的方法是通过增量验证进行测试影响分析以加速测试,将测试修剪到只需要的内容,如依赖图所突出显示的。CircleCI将其应用到自己的单体用户界面应用程序中,发现它将测试时间从30分钟缩短到1.5分钟。
"这意味着我们可以让AI智能体以我们愿意为token花钱的速度工作,并给它一个工具,只对它需要的更改运行它需要运行的测试,"Webster说。
这样的操作可以轻松地在容器或笔记本电脑中运行。
选择性注意的原则可以应用于代码审查。"并非所有代码都具有相同的风险级别,"他说。"这里是你可以将审查修剪到只关注重要更改的地方,"Webster说。
Circle CI为客户构建了自己的智能体Chunk,用于简化他们自己的测试过程。
工程师角色的转变
未来的工程师将较少担心代码,更多地支持AI不懈追求生成更多代码,Webster预测。因此,修复不稳定测试等任务将成为首要任务,也可以自动化。
我们不需要这种线性过程,而是需要构建系统,其中所有必需的测试都在过程中的某个地方进行。
"我们不是进行线性的是/否判断,而是将这些东西组合成一个单一的门,我们所做的就是跟踪发生了什么,"Webster说。如果测试通过,程序员应该转向生产环境。"除此之外的一切都是我们对其他事情的担忧。"
有了AI,"更多的努力和精力可能会花在这种测试和评估上,较少考虑我们服务的低级细节的具体设计。"
这些QCon AI演讲和其他内容的完整访问权限现在可以通过仅视频通行证获得。
Q&A
Q1:智能体AI会完全取代持续集成吗?
A:虽然有人提出这个问题,但大多数专家认为AI不会完全消除CI,而是会改变软件开发生命周期。传统的线性开发流程(推送代码-构建-测试-部署)在AI时代需要重新思考,但测试和验证仍然必要。
Q2:AI生成代码会带来什么问题?
A:AI可以快速生成大量代码,但会造成代码审查瓶颈。智能体每10分钟能产生1500行代码,而代码审查员每小时只能检查500行。此外,AI生成的代码可能存在质量问题,导致技术债务积累和系统不稳定。
Q3:如何解决AI开发中的测试效率问题?
A:可以通过测试影响分析进行增量验证,只运行必要的测试。CircleCI将测试时间从30分钟缩短到1.5分钟。另外,可以开发自动化测试套件,让AI智能体承担更多测试工作,并采用选择性代码审查策略。
下一篇:没有了