判断 AI 编程助手是否值得继续使用,应看它能否以更少的人力投入交付通过验收且安全的改动,而不是只看首个补丁生成得多快。作者省下的时间,可能转移给代码审查、返工或值班团队。结论取决于任务组合、开发者、代码库、工具版本和审查流程;下面是一套供团队在自身边界内验证的方法。
现有研究能说明什么,不能说明什么
GitHub 相关研究者在 2022 年将 95 名专业开发者随机分配到可用或不可用 Copilot 的组,要求实现一个 JavaScript HTTP 服务器。仅在完成任务的人中(两组各 35 人),Copilot 组的平均用时低 55.8%,约为 1 小时 11 分钟,对照组约为 2 小时 41 分钟。终点是首次提交通过 12 项公开测试的代码,而非代码审查或上线。按全部受分配者计算,两组完成率分别为 78% 与 70%;论文未确立这一差异具有统计显著性。另有问卷记录开发者的主观感受。因此,这个用时差异是特定任务中以完成为条件的比较,不能当作全体受分配者、生产发布或后续维护的提速估计。参见实验论文与GitHub 的研究介绍。
METR 则在 16 名熟悉各自开源仓库的资深开发者所做的 246 个真实 issue 上,随机指定部分任务允许使用 AI,部分不允许。在 2025 年 2 月至 6 月的研究中,允许使用 AI 的任务平均多花了 19% 的时间;开发者事前预期会减少 24%,事后主观估计减少了 20%。主观提速感不能替代计时对照,但这也不能推出所有助手都会拖慢所有开发者。该研究针对这些经验丰富的贡献者、仓库及当时的工具;测量的是开发者报告的 issue 实现工时,包含 PR 送审前以及根据审查反馈继续修改的时间;不包含审查者工时,也不等于团队从任务到生产部署的完整周期。参见METR 论文。
也不能把上述历史减速直接当成当前效果。METR 在 2026 年 2 月表示,后续实验的原始估计有提速迹象,但不愿在禁用 AI 条件下工作的开发者退出、部分任务被选择性排除,加上并行智能体使工时难以核算,令这一估计不可靠;报告的区间也包含零效果。这提醒团队在自己的试点中预先定义纳入条件并记录缺失任务,不能将后续原始估计写成新的普遍提速结论。参见METR 后续说明。
DORA 用变更前置时间、部署频率、失败部署恢复时间、变更失败率和部署返工率区分交付吞吐与不稳定性。这些服务层面的指标补充而非取代任务层面的作者、审查者工时。DORA 的变更前置时间从提交代码算到部署生产环境;下文记录的历时则从任务分配开始,两者须分别标注。参见DORA 指标指南。
看数据之前,先写明要作的决定
限定一个团队、一个仓库或紧密相关的服务、一套助手配置和一类符合条件的任务。例如纳入常规缺陷修复、小型功能与测试;紧急热修复以及涉及密钥或受限代码的变更,除非另有获批的安全配置,否则排除。被筛除的任务也要登记原因,不能只让作者提交预计 AI 表现好的任务。
按同一口径整理近期符合条件的工作作为背景基线:从任务分配到变更获准合并的历时;作者主动工作分钟数(含提示与验证)、审查者主动工作分钟数、审查轮次、CI 失败、固定合并后窗口内的返工,以及生产回滚或安全发现。记录任务数量、类型、预先定义的复杂度、经验档、仓库和中位数及离散情况。历史工作只是背景,不能冒充可互换的随机对照组。若过去没有主动工时日志,就标为缺失,不要用 PR 时间戳伪造精确分钟数。简单的采用前后比较还会受发布周期、人员、选题和工具学习影响。
主要决策视图应覆盖所有被分配的合格任务:报告验收率和每个受分配任务对应的人类主动工时;未完成、放弃的任务及其已耗工时也保留。另列每个已验收合格改动的人类主动工时,说明只看已验收者可能产生选择偏差。主动工时包括作者实现、提示与验证、审查、作者修改及同一观察窗口内可归因的后续返工,时间区间不可重复计入。任务分配到合并、分配到部署的自然历时另列;排队和非工作时段会影响历时,不能用它替代主动工时。质量和安全是不可用提速换掉的护栏,而非可随意调整的分母。
按任务类型等分层做随机试点
- 先冻结方案。分配前约定合格任务、合并后 14 天返工观察窗、始终未合并任务的固定截止日、分配前复杂度标准(例如预计涉及的组件数、新颖性、依赖或迁移风险,而不是事后实际改动文件数)、两组允许的工具、测试与审查门槛、归因裁定人。14 天只是示例,应依发布节奏选择。还须预先定义验收、任务单位(拆分工单如何沿用原分组)、停止与样本规则,以及随访未完成的报告办法。登记模型、IDE 插件、策略、提示词与工具配置及日期;试点中升级工具须记录并另作分析。
- 先纳入真实任务,再随机分组。在分诊时给每个工单标注任务类型、复杂度档和仓库,在这些层内随机分配为“允许 AI”或“不允许 AI”;任务分布覆盖参与开发者,并记录其经验与代码库熟悉程度。避免同一人重复做同一 issue,或让高度相似的实现相互泄露学习效果。如无法禁用 AI,可采用有同期对照且记录充分的分阶段推广,但应称为观察性比较,不能称为随机试验。
- 两组保持同样门槛。测试、分支保护、审查者和安全检查一致。“允许 AI”是使用机会;记录实际使用情况,但首先按原始分配组分析(意向治疗分析),以免选择性使用把比较变成容易任务的竞赛。不能为 AI 组豁免审查。请审查者记录主动工时,不要把每条审查意见都算成缺陷。
- 跟踪整项改动。从任务分配起,记录作者开工与停工、提示、局部测试、首次 PR、审查、修改、合并、部署和后续返工。拆分、失败或放弃均明确登记。工具订阅和计算成本单列,不与人力分钟混算。访谈作者及审查者关于疲劳、理解程度与可维护性的感受,但将其标为主观反馈,而非实测因果提速。
- 分层比较并呈现不确定性。分别展示两组分配任务数、验收率、每个受分配任务的平均主动工时,并按任务类型和复杂度给出已观察工时的中位数及离散情况。比较组间的受分配任务均值与验收率,同时列出仅已验收任务的结果;可行时给出不确定性区间。样本较小时,展示透明的结果范围,并注明不足以证明等效或安全。标记固定截止日仍未结束的任务;随访未完成不等于返工为零。不能看完结果才挑有利子组。小试点用于本地决策,不是普适生产力百分比的证明。
可复制记录表:每个受分配任务一行
| 字段 | 记录时点 | 口径 |
|---|---|---|
| 工单 ID、仓库、任务类型、复杂度、开发者经验档 | 分配前 | 预先分层,不用作个人排名 |
| 随机编号、分配组、实际 AI 使用情况、工具与模型版本 | 分配时及过程中 | 保留意向治疗分组和偏离情况 |
| 分配、首次开工、首次 PR、合并、部署时间戳 | 过程中 | 计算阶段历时,标记周末及排队 |
| 作者实现、提示、测试与验证分钟数 | 过程中 | 互不重叠的主动区间,包括失败建议 |
| 审查者分钟数、审查轮次、作者修改分钟数 | 过程中 | 计入每次审查与修复 |
| CI 失败、安全发现严重程度、获批例外 | 过程中 | 两组同样把关,高严重程度须调查 |
| 状态、放弃原因、验收日期 | 决策时 | 未完成任务不能消失 |
| 14 天返工分钟数、关联缺陷、回滚、事件、随访完整度 | 随访时 | 审查者按两组相同规则归因;待补、缺失与无返工分开 |
| 费用、作者与审查者信心备注 | 随访时 | 支出和主观报告与观测工时分开 |
对每个分配组,按预定截止日累计不重叠的主动工时,再除以全部受分配任务数,同时列出验收数及放弃、未结束任务已耗工时。另将已验收改动的工时总和除以验收数,并提醒两组验收率不同会使这项比较有偏。按相似层比较,披露多少任务尚未完成随访。电子表格可计算 total_active_min = author_impl + prompting + validation + reviewer + revision + followup_rework;排除重复区间,不要把缺失字段默默填零。只有部分工时可用时,应标注为部分总计,不能当成可比的最终观测。这张表是建议的团队方案,不是已经发表或验证的行业基准。
用预先写定的阈值和暂停规则作决定
以下是示例决策约定,不是有证据背书的行业门槛:团队可在试点前要求每个受分配合格任务的总主动工时观察值至少降低 15%,验收率不下降,且仅看已验收者的比较没有掩盖额外工作;每项均报告不确定性。约定的随访期内,严重安全问题、流入生产的缺陷、变更失败或可归因返工不得增加。小样本中零事件或仍有随访待完成,不表示护栏已被证明安全;罕见损害无法评估时,应限制推广并持续监测。若只是合并历时缩短、审查者工时却增加,也不足以支持扩大使用。
一旦出现凭据或受限代码泄露、未缓解的严重漏洞、未经授权的智能体操作,或可能与助手有关的重大生产事件,应立即暂停,隔离受影响工作并调查;只有安全或发布负责人批准控制措施后才恢复。其他情况下,合格任务层内收益与护栏可信则有限扩大;作者提速被审查负担抵消或样本无结论则修订后重试;总投入上升或质量门槛失守则停止或限制使用。事先指定决策负责人和复核日期。15% 与 14 天都只是例子,必须按团队风险承受能力、样本容量和发布周期调整。
结果不能直接迁移到哪里
助手可能有助于写测试或重复的 API 粘合代码,却未必适用于依赖大量上下文的重构、安全敏感迁移或测试稀少的仓库。能执行命令的智能体还带来权限、数据外泄和破坏性操作风险,不同于代码补全。坚持最小权限、可行时沙盒运行、获批的数据边界、依赖和许可证检查以及常规人工审查,并把这些成本算进流程,不给 AI 补丁开绿灯。不要用建议采纳率或生成行数给开发者排名:这些是活动量,而非团队交付的可维护结果。
关键问题不是“AI 写代码是否更快”,而是“在这类合格任务、这一工具版本及安全策略下,团队是否以更少总投入交付了获准验收的改动,同时没有把缺陷或风险推向下游?”工具、任务组合或流程改变后,应重新检验。
