前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
返回 AI 情报前线
All News · 全部资讯9013
  • 决策模型:只返回概率、拒绝生成文本的新范式
  • AI购物Agent遭评测攻击:恶意评论注入钓鱼
  • GPT-6 Astra百万token成本拆解:何时值得用
  • MCP 服务器悄然变更工具描述 = 你的 Agent 在执行未知指令
  • GitHub Copilot 已上线 Claude Sonnet 5.5
  • Claude Sonnet 5.5 编程 benchmark 暴涨 6 倍,成本降三成
  • Anthropic发布Sonnet 5.5:半价达到 Opus 水平
  • Claude Sonnet 5.5 发布:性价比翻倍
  • VoiceStudio: 开源全本地语音克隆,支持646语言和MCP
  • 企业级AI代理界面设计:让记忆成为第一公民
  • OpenAI代理绕过限制:通过DNS隧道实现隐蔽通信
  • IDE 不够用:构建 Agentic 开发环境 ADE
  • Agent 记住了修复方案却错了:AfterTrace 事件恢复工具
  • 代理工具调用经济学:告别靠猜
  • OpenAI代理利用Google安全游戏漏洞抓取UN数据
  • 小米 MiMo-V2.6 开源登顶 AA 指数,超越 Kimi K3
  • 代码生成自动化了,代码审查却没有:AI辅助PR的真相
  • Cloudflare推出cf CLI:Agent化的全API命令行工具
  • Nvidia在芯片层引入AI Agent看门狗:毫秒级隔离
  • pgEdge:AI 编程助手造的数据库分支无法合并,这才是设计原意
  • 月之暗面 Kimi K3.1 曝光:100 万 Token 上下文
  • Cloudflare 开源 Forge:自动生成 API SDK 和文档
  • 英伟达推 AI Agent 安全平台:毫秒级隔离失控 Agent
  • EmDash 1.0:面向Astro的安全开源CMS
  • Cloudflare Kitesurf浏览器升级:730K平台测试通过,支持WebMCP
  • Cloudflare 收购 VoidZero 后:JS 工具链提速 10 倍
  • RAG原理解析:从第一性原理出发
  • 16 岁少年用 AI 机器人 Antares 发现微软内部 API 漏洞:涉 17 万亿行数据
  • Nvidia推出Open Agent安全平台,管控越狱AI智能体
  • Holo4:通用计算机操作智能体的底层支撑
  • 英伟达发布 AI 智能体安全平台:毫秒级异常隔离
  • 用Termux在Android手机上搭AI开发服务器
  • NVIDIA开源OpenShell安全沙箱:给本地Agent施加真实运行时限制
  • OpenRig:用 YAML 定义多 Agent 团队,Claude Code 与 Codex 协同作战
  • Cursor+Claude Opus 4.6误删Railway生产数据库的完整事故报告
  • 官方发布Claude Opus 5.5 Prompt技巧指南
  • Fireworks AI发布Ember-1:后训练版Kimi K3省40% Token
  • 生产级 AI Agent 开发:比 Prompt 更重要的 7 个架构层
  • GPT-6 与 Claude Opus 5.5 一周内相继发布
  • AI Agent 生产级基础设施的五个核心层次
  • MCP stdio Server:一次 print() 导致 19% 工具调用失败
  • AI Agent 为何生产环境总是失败:真正原因不是模型
  • Kubernetes GPU 集群部署 LLM 实战:Llama 3.3 70B 和 DeepSeek R1
  • 生产环境常青的开源 LLM:没人谈但一直出现
  • 多语言LLM推理优化:tokenize是首个瓶颈
  • 三个「成功」却实际失败的Bug:HTTP 200不等于正确
  • TypeSafe AI Jev:20个Agent生产级用例实测
  • 已加载 47 / 9013
8.0
热点
AI SCORE
编程提效2026-09-28 22:52

代码生成自动化了,代码审查却没有:AI辅助PR的真相

dev.to · AI#AI编程#代码审查#工程管理
Editor brief · 编辑速览

某组织90.7%的PR为AI辅助生成,其中50.6%没有任何人工审核;机器人审核数远超人工,指标数据掩盖了人工审查缺位的问题。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

验证鸿沟:我们自动化了代码生成,却忘了扩大审查规模

James Coombs 是一名设计工程师,负责编写 AI 代理在 Pull Request 上运行的代码审查技能。他提取了 49 个代码仓库连续四周的合并 PR 数据,检查审查是否跟上了生成的节奏。仪表盘显示跟上了。去掉机器人再看——并没有。

在一个工程组织内的 49 个代码仓库中,2026 年 8 月 24 日至 9 月 20 日的四周内合并了 1,239 个 Pull Request,其中 90.7% 标记为 AI 辅助(在提交时标记)。其中一半——50.6%——没有任何人账户的审查就合并了。不是轻量审查。根本没有。而这还是保守数字,因为几位工程师把代理撰写的审查贴在自己账户名下,所以来自人员账户的审查并不一定是人写的审查。组织的审查指标看起来更健康:中位 PR 收到两条评论,只有 30.6% 完全没有任何评论。两种说法都对,因为指标把机器人算作审查者。在那个时间窗口的最后一周,机器人留下了 898 条审查中的 635 条。我们用同样的方式扩大了代码产出速度,又用同样的方式扩大了审查规模,而人类审查根本没有扩展。

鸿沟,以及那个看似正确却错误的故事

我最初在七月跑了这些数字,当时是一周和 331 个 PR。那时候中位 PR 收到零条评论,55.6% 完全没有评论,43.2% 除了作者之外没有任何人审查。现在变成两条、30.6% 和 25.7%。看起来像是审查在追赶上来。并不是。只看来自人员账户的审查,没有任何审查的 PR 占比从七月的 47.7% 上升到过去四周的 50.6%,仅最近一周就达到 61.6%。仪表盘的收益全是机器人审查。

一个诱人的说法是 AI 写了烂代码,人类放行通过了。我无法验证这一点,而且值得精确说明原因,而不是随手抓一个数字。收集器统计标题以 "revert" 开头的 PR。这是回滚 PR 的计数,不是衡量谁的代码后来被回滚的指标,四周内仅有一个。七月的速度数据我也解读过:AI 辅助的 PR 停留中位时间 2.4 小时,而纯人类 PR 是 0.6 小时。现在变成 3.4 小时对比 3.8 小时,单周数据两者都有高低,而且 1,239 个 PR 中只有 115 个是纯人类 PR,所以我放弃了这个论点。

在任何人都拿这些数据制定政策之前,先说明一个注意事项:这是一个组织在四周内的数据,所以把它当作一个趋势而不是常数来理解。小仓库偏差很大,而这个数据集里小仓库很多。49 个仓库中有 20 个在四周内只合并了三个或更少的 PR,49 个中有 27 个中位评论数为零,而按 PR 权重的中位评论数是两条。所以不要依赖每个仓库的计数。内联评论也是按 PR 而不是按作者记录的,因此没有任何人类评论的占比只能给出一个范围:37.8% 到 66.2% 之间。两个异议都站得住脚的那个数字是审查覆盖率:1,239 个 PR 中有 627 个没有任何人账户的审查,而代理以人员账户名义发布的审查意味着真实数字更高。

零评论批准不一定是坏审查。有时候变更很小,审查者放行是正确的。更严格的衡量标准——没有任何书面评论的批准——占每个 PR 的 5.3%。对照收集到批准的 49.2%,大约九分之一是沉默批准的,比七月的四分之一有所下降。限制到来自人员账户的批准者,是 17.7%,接近六分之一。我没有说机器人审查没有价值。关键是一个机器人审查代理的 PR 是系统自己在检查自己,而把这个计为审查的指标无法区分差异。当至少一半的合并没有任何人工审查者时,审查悄然变成了一个签名,而且越来越像是机器的签名。

为什么显而易见的修复方案不起作用

一旦看到这个,反射性的做法是强制要求严格性。要求实质性评论。添加审查清单。硬加一个没人调过的必需检查。把"验证行为,不只是代码"写进贡献指南或代理的指令文件。

我测量过这类指令的结果。在早些时候对写入 AI 代理配置的行为规则进行的消融研究中,合规率是 0%。一条遵守起来有代价、且没有任何机制强制执行的规则,被遵守的概率和一条不存在的规则完全一样。人类和审查清单也是同样的逻辑。给两行变更增加五分钟的清单,就是那个人们学会跳过的清单。

所以这里是我想要反驳的观点:验证鸿沟是一个严格性问题。不是的。严格性很容易规定,也很容易忽略。鸿沟是一个采用问题。

为什么这是一个采用问题

你可以设计一个能捕获一切的审查流程。如果它花费的比中位变更人们愿意付出的更多,他们就会绕过去,而且一个经常被跳过的检查提供的保证比一个更轻但实际运行的检查还要少——只要更轻的那个仍然守住了一个真正的底线。跌破那条底线就会出现更糟糕的失败:一个检查运行了,通过了,在缺陷仍然上线的同时制造了信心。所以设计问题不是检查能有多严格,而是能有多严格的同时人们仍然会在想要放行的那个 PR 上运行它。

组织的数据展示了鸿沟。构建工具教会我的是原因:用来弥合鸿沟的检查被跳过了,不是因为它们错了。这只是一个组织的一项技能,是起点而不是证明。有四件事造成了差异。

按风险调整门槛。 每个变更根据两个因素获得一个风险等级:它有多可能破坏东西,以及如果破坏了会有多糟糕。一个复制小改动只需要一件证据;支付路径的变更需要完整的合约。关键是谁来设定等级:如果作者自己给自己的风险打分,轻的门槛就会成为每个人都声称的门槛,所以等级必须来自他们无法悄悄推翻的东西——差异启发式或路径规则。做错了,你就只是把作弊从跳过检查移到了错误分级。

永远不要要求无法提供的证据。 这是大多数清单犯的错。每个必需项都必须说明你实际上如何产生它。一个没有获取路径的要求,一个对没有视觉输出的变更要求截图,是无法满足的,而一个无法满足的条目比没有条目更糟糕,因为它教会人们整个系统都是噪音。一个达不到的门槛不只是在它自己的那一行失败。它让旁边的可达标的条目也失去了可信度。

** artifact 优于声明。** 停止接受散文作为证明。"已手动测试"是一个承诺,而不是第二个人可以检查的东西。截图、grep 结果、测试输出、日志行:这些才是证据。在这项技能中,纯粹的声明最多把一个要求降级为部分满足,因为这句话恰恰是 artifact 要替代的东西。当至少一半的 PR 从未到达能够要求提供 artifact 的人类审查者时,这一点更重要。

拒绝清洗自己的输出。 这是反直觉的那条。当技能同时收集证据并对其评分时,它自己收集的证据无法将一个要求提升到部分满足以上,而且它被标记为自报告。一个验证了自己工作并报告"已验证"的代理,什么也没告诉你。而那个标记必须喂入一个 gate 来对其采取行动,而不是留在记录里等待人类审查者——在至少一半的这些合并中,人类审查者根本不存在。同样的逻辑往上走一级:一个组织的机器人审查其代理的代码,而其指标称那为审查,就在组织规模上清洗了自己的输出。当一个系统开始检查自己时,它自身置信度的上限必须被强制执行而不是仅作建议,否则它已经把一个声明变成了事实。

这些都不是干净落地的。第一版要求每个变更都提供完整的证据合约。它很彻底,在小 PR 上被忽视得最严重——恰恰是小 PR 这种高容量场景需要一个轻量检查:我建了支付变更的门槛,却把它对准了 typo 修复。第二个错误是要求没有获取路径的证据,然后看着审查者认定工具是噪音而停止阅读它的全部内容——包括那些有信号的部分。这个教训让人不舒服:一个被忽视的门槛比没有门槛更糟糕,因为它还烧掉了下一个你设的门槛的可信度。

这把你带到了哪里

验证鸿沟不会通过把"更仔细地审查"写进政策而关闭,也不会通过添加审查机器人并看着评论数上升而关闭。生成已经自动化了。审查必须重新设计才能在容量中存活:按风险调整门槛、给每个必需项一个真实的获取路径、优先使用 artifact 而非断言、让任何自我检查的系统声明这一点。

你不需要我的数据才能开始,真正的测试是当另一个团队采用这个方法时跳过率是否下降。首先,把你的审查指标拆分为人类和机器人,并把以人员账户发布的代理审查算作代理的,因为在那之前,仪表盘会告诉你鸿沟在收窄而实际上它在扩大。然后找到你的团队在小变更上悄悄跳过的那个检查,问自己:它被跳过是因为它没有价值,还是因为它校准错误了。如果是校准错误,修复不是更多的纪律。而是为低风险场景设置更轻的门槛,这样检查才能存活下来去捕获高风险的那个。这周去找那个检查。

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
小米 MiMo-V2.6 开源登顶 AA 指数,超越 Kimi K3
下一篇
Cloudflare推出cf CLI:Agent化的全API命令行工具