代码审查是捕捉错误和分享知识的绝佳机制,但它也是使工程团队陷入瓶颈的最可靠方法之一。合并请求位于队列中,审阅者最终切换上下文以读取差异,他们留下一些关于变量命名的挑剔,作者响应,循环重复。在我们的内部项目中,首次评价的等待时间中位数通常以小时为单位。
当我们第一次开始尝试人工智能代码审查时,我们采取了大多数其他人可能采取的路径:我们尝试了几种不同的人工智能代码审查工具,发现其中很多工具工作得非常好,其中很多工具甚至提供了很好的定制和可配置性!
然而,不幸的是,一个反复出现的主题是,它们只是没有为Cloudflare这样规模的组织提供足够的灵活性和定制性。因此,我们跳到下一个最明显的路径,即抓取git diff,将其推入半生成的提示中,并要求大型语言模型查找bug。
结果与您预期的一样嘈杂,有大量模糊的建议,幻觉语法错误,以及在已经存在的函数上“考虑添加错误处理”的有用建议。我们很快意识到,天真的总结方法不会给我们带来我们想要的结果,特别是在复杂的代码库上。
我们决定围绕开源编码代理OpenCode构建一个CI原生编排系统,而不是从头开始构建一个单一的代码审查代理。今天,当Cloudflare的工程师打开合并请求时,它会从人工智能代理的协调smörgåsbord获得初始通行证。