top of page

GitHub 代码审查 AI 给开发者拉取请求增加摩擦

GitHub 上个月在其代码审查界面中推出了更广泛的 AI 建议。

该工具现在默认对每个打开的拉取请求提出更改建议。

许多团队报告评论数量急剧上升,而接受率仍然很低。

公共论坛上的开发者表示,他们需要花费额外时间来决定哪些标记值得关注,哪些会拖慢流程。

因此,GitHub 代码审查 AI 处于日益增长的工作流争论的中心。

工具推出更广泛的默认建议

GitHub 为所有之前启用 Copilot 的公共和私有仓库激活了更新的代码审查模型。此更改无需在拉取请求视图中单独进行选择加入设置。审查者开始在打开差异后的几分钟内看到关于风格、安全模式和逻辑替代的逐行建议。GitHub 表示,目标是发现工程师在手动检查中可能遗漏的问题,如其 Copilot code review announcement 中所述。

此次推出无需仓库管理员调整任何配置切换。相反,每个现有的 Copilot 启用仓库都会自动继承新行为。这一设计决策意味着在几天内,开放源代码项目和封闭企业代码库的开发者都遇到了扩展的建议。实际上,AI 模型会扫描更改的文件以查找常见反模式,例如不安全的随机数生成、缺少输入验证和不一致的命名约定。评论以线程讨论的形式出现,任何审查者都可以解决、拒绝或编辑。由于模型在服务器端运行,无需本地安装或额外的 CI 作业,这降低了小型团队的门槛,但也去除了那些希望将 AI 输出置于自己审查管道之后的团队的选择。

使用 monorepo 的团队尤其感受到影响。在一个记录的案例中,一个包含 12,000 个文件的仓库在单个三文件差异上触发了 47 条新的 AI 评论,因为模型扫描了未更改的依赖项以获取上下文。由此产生的讨论持续了四天,工程师们争论是否应该在发布中期重构遗留模式。此类交互说明了默认开启行为如何在复杂代码库中放大噪音,而历史决策已经解决了被标记的问题。

大型组织注意到发布节奏的次要影响。一家物流公司发现,其每周发布窗口因审查者必须处理已在两年内保持稳定的类上的 AI 生成风格建议而延误了 36 小时。该团队最终记录了一份简短的内部风格指南,明确声明某些遗留命名约定为豁免,但 AI 继续在每个后续拉取请求上标记它们,直到工程师手动驳回每个实例。缺少仓库级内存迫使重复覆盖。没有专用平台工程师的小型团队经常发现这些覆盖会消耗本可用于实际功能工作或事件响应的周期。

接受率尽管量大仍保持低位

GitHub 自身讨论论坛分享的内部使用数据表明,大约五分之一的 AI 评论会收到直接的“接受”操作。

跟踪解决时间的团队报告称,中位数的 pull request 现在会多开放半天,而参与者则在整理评论。

建议数量与实际合并影响之间的差距构成了核心抱怨。

工程师们将当前体验描述为数量多于精准度。

私人 beta 报告中发布的进一步遥测数据显示,接受率因语言而异。Python 和 TypeScript 仓库的接受率约为 24%,而 C++ 和 Rust 仓库则徘徊在 12% 左右。这种差异似乎与训练数据量相关,而非固有代码质量。安全相关的建议接受率略高,为 31%,但开发者仍报告频繁出现涉及会引入破坏性更改的依赖升级的误报。当团队衡量 pull request 的完整生命周期——从首次提交到合并——时,他们发现额外的分类时间每周平均为一个由八名工程师组成的中型团队积累 3.2 小时。一个季度下来,这相当于损失超过 300 小时的生产力,相当于一名全职工程师的能力。

考虑一家中型 SaaS 公司在一个月内合并了 180 个 pull request。他们的内部仪表板记录了 1,240 条 AI 评论,其中只有 238 条被直接接受。另外 310 条被编辑成不同的修复,412 条被视为噪音而 dismissed,其余的则悬而未决数周。由此产生的数据促使工程经理制定政策,要求每条 AI 评论在合并前必须由高级审阅者提供一句话的理由,这进一步延长了周期时间但提高了信号清晰度。在多个季度中,同样的模式重复出现:高评论量很少转化为成比例的代码质量提升。

开发者辩论噪音与信号

一方认为,即使不完美的标志仍能偶尔捕获后来导致生产事故的边缘情况。

反对观点认为,分类通用评论所花费的时间超过了在真实 bug 上节省的任何时间。双方都同意,界面尚未提供足够上下文以便快速决策。如今不存在共享的测量方法来区分不同代码库中有帮助的建议和重复的建议。

Hacker News 和 Reddit 上的社区讨论经常并排展示截图,显示在触及不相关模块的连续 pull request 上生成的几乎相同的 AI 评论。批评者指出,该模型缺乏仓库级记忆,因此无法学习某个特定警告之前曾被作为风格偏好而拒绝。支持者反驳说,偶尔的高价值发现——例如支付处理函数中未处理的错误路径——证明了开销是合理的。缺乏共享的信号质量指标导致每个团队发明自己的标准,这阻碍了有意义的跨团队基准测试,并减缓了向更好默认设置的集体进步。

尝试进行定量跟踪的团队经常发现,接受率更多与审阅者资历相关,而非模型自身的置信度分数。高级工程师能快速识别并丢弃重复的风格建议,而新贡献者则花费不成比例的精力评估每个标志。这种动态可能会扩大同一团队内的经验差距,而不是缩小它。

现有审查流程面临新压力

已经运行 linters、静态分析和人工检查清单的团队现在面临重复信号。一些维护者添加了规则,默认隐藏自动评论,仅在明确请求时显示。其他人保留可见标志,但培训初级开发人员将每项视为可选,除非维护者标记为必需。新增层改变了拉取请求讨论中最终判断的归属。

在已经使用 GitHub Actions 工作流进行代码检查和安全扫描的组织中,新的 AI 层往往会重复报告 ESLint、RuboCop 或 Semgrep 等工具已发现的问题。重复通知造成了认知负荷问题:审阅者现在必须在决定某一行是否确实需要修复之前,在精神上对三到四个独立来源进行去重。几个大型开源项目通过引入配置文件来抑制整个类别的 AI 评论,从而有效地将该功能再次变为 opt-in 体验。没有专用工具工程师的较小团队往往缺乏实施此类过滤器的带宽,使他们暴露在全部噪音量之下。

团队接下来在测试什么

几个开源项目计划进行 A/B 测试,在交替周关闭模型并测量总审查时长。企业客户已要求 GitHub 提供按仓库的控制,以限制建议类别而非完全禁用该功能。GitHub 尚未公布这些控制的时间表。这些测试的结果将显示当前默认设置是否保持不变或需要进一步调整。

GitHub 社区展示中分享的初步结果表明,完全禁用 AI 的项目中位审查时长减少了 19%。与此同时,一家金融科技组织报告称,在关闭周内,合并后生产问题的数量增加了 14%,这表明某些类别的建议仍能提供净价值。这些相互矛盾的信号强化了对细粒度控制的需求,使团队能够仅启用安全和逻辑检查,同时抑制风格建议。

AI 模型如何生成建议

底层模型结合了在公开 GitHub 仓库上微调的大型语言模型与静态分析启发式方法。当拉取请求打开时,系统提取 diff、周围上下文和文件历史。然后提示模型提出改进可读性、安全态势或性能的编辑。每条建议都包含显示给审阅者的置信度分数,尽管内部测试显示这些分数与最终接受度仅弱相关。由于模型在 token 而非抽象语法树上运行,它有时会提出破坏编译或引入现有测试套件未捕获的细微行为变化的修改。

检查原始提示的开发人员发现,上下文窗口偶尔会截断提交消息或相邻文件中记录的重要先前决策。这种截断解释了为什么某些建议会与数月前做出的有意设计权衡相矛盾。

与竞争 AI 审查工具的比较

其他平台提供类似功能,但默认行为不同。Amazon CodeGuru 默认仅显示高严重性发现,并要求按仓库明确启用。SonarQube 的 AI 辅助规则仍处于付费层,并集成在现有质量门中,直到解决违规才能合并。Google 的内部 critique 系统提供内联建议,但会通过人工审核员路由后再到达作者。这些设计选择表明 GitHub 的“默认开启”方法处于该范围的一个极端。评估多个供应商的组织往往将调整建议量的能力而非原始检测准确性作为决定因素,如 Amazon CodeGuru 产品文档 中所述。

不同团队规模和成熟度水平的影响

拥有不到十名工程师的初创团队通常缺乏专用的平台工具,因此承担了额外审查周期的全部成本。相比之下,拥有内部开发者平台的企业可以将 AI 评论路由到现有的工单系统或通过策略即代码进行抑制。初级工程师较多的团队报告称,AI 评论提供了有用的教学时刻,但资深工程师仍花费不成比例的时间解释为什么应该忽略某些建议。跨多个时区的分布式团队会经历放大的摩擦,因为未解决的 AI 评论会阻塞进度,直到另一个大洲的人醒来解决它。

真实团队的具体示例

一家医疗保健初创公司记录了一条 AI 评论,该评论正确识别了图像处理例程中缺失的边界检查,而该例程此前已通过内部安全审查。该建议在几分钟内被接受,后来防止了高分辨率上传期间可能发生的崩溃。相反,一家电子商务平台收到了 87 条相同的建议,要求在不相关的微服务中重命名变量,每条建议都经过人工审查后被驳回。这些对比案例凸显了模型性能的不均衡,并解释了为什么团队继续尝试自定义抑制规则。

日常工作流程的实际影响

寻求保留益处同时减少摩擦的团队已开始采用几种模式。首先,建立对“可操作”的共享定义可防止在个别讨论中 endless 争论。其次,创建一个轻量级机器人,对 AI 评论做出反应并添加“需要讨论”标签,有助于在站会期间仅浮现有争议的项目。第三,安排每周 15 分钟的已拒绝建议审查,让团队完善集体判断,偶尔向 GitHub 请求改进。这些轻量级治理实践将不受控制的建议洪流转化为可管理的反馈渠道。

限制与风险

尽管表面上方便,但仍存在几项硬性限制。该模型无法访问私有文档或架构决策记录,因此其建议有时会与有意设计选择冲突。对于训练数据中未充分表示的新型漏洞类别,假阴性仍有可能存在。过度依赖自动化反馈也可能导致人工审查者发现细微问题的技能退化,特别是涉及需要领域知识的系统级交互。最后,当前实现将所有生成的建议存储在 GitHub 的基础设施中,这给处理受监管数据的团队带来了合规问题。这些限制的详细信息见 GitHub Copilot trust center

未来展望与关注点

GitHub 已表示有兴趣添加仓库特定的微调和按语言模型选择。如果实施,这些功能可缩小通用建议与代码库特定期望之间的差距。观察者还预计与 GitHub Actions 更紧密集成,允许团队仅在特定分支或文件类型上运行 AI 模型。在每次产品更新后持续测量接受率,将成为摩擦问题是否得到解决或仅被转移的最清晰指标。

常见问题

禁用 Copilot 是否也会禁用 AI 审查建议?

不会。一旦仓库有任何 Copilot 使用历史,新默认设置就会独立应用。

我今天可以按严重性筛选建议吗?

在仓库级别不行;仅存在全局的每用户通知设置。

开源项目会获得与企业客户相同的体验吗?

是的。推出不区分公共和私有仓库。

关注快速发展的技术故事的团队通常需要一个地方来保存源笔记、会议上下文和后续问题。轻量级的 AI 知识库 可以让这些移动的部分在新闻周期变化后更容易重新访问。

 
 

免费开始

一款本地优先的AI助手,具备个人知识管理功能

为了获得更好的人工智能体验,

remio 目前仅支持Windows 10+ (x64)M-Chip Mac

在你的大脑里添加一个搜索栏

Ask remio

记住一切

​无需整理

bottom of page