当前位置: 首页 > article >正文

技术速递|6000 万次 Copilot 代码审查 且仍在持续增长

作者Ria Gopu David Apirian排版Alan WangCopilot 代码审查如何帮助团队跟上 AI 加速带来的代码变更。自去年 4 月我们首次推出 Copilot 代码审查CCR以来其使用量已增长了 10 倍目前已占 GitHub 上超过五分之一的代码审查。在幕后我们持续进行实验以提升评论质量。同时我们也迁移到了基于智能体的架构能够检索代码仓库上下文并对变更进行推理。在整个过程中我们始终倾听你的反馈无论是问卷调查还是你对评论简单的点赞或点踩都帮助我们识别关键问题并不断优化用户体验从而提供更全面的审查体验。Copilot 代码审查可以处理 Pull Request 的审查和摘要使团队能够专注于更复杂的任务。——Suvarna RaneGeneral Motors 软件开发经理重新定义“好的”代码审查随着 Copilot 代码审查的不断演进我们对“好的代码审查”的定义也在变化。2024 年刚开始构建时我们的目标只是做到足够全面。此后我们发现开发者真正看重的是高信号的反馈——能够帮助他们快速推进 Pull Request。如今Copilot 代码审查结合了最先进的模型、记忆能力以及智能体工具调用能力来执行全面的审查。为了实现这一点我们通过持续评估循环来优化智能体的判断能力重点关注三个关键特性准确性、信号价值和速度。准确性我们的目标是让 Copilot 代码审查具备可靠的判断能力优先关注关键的逻辑问题和可维护性问题。我们通过两种方式评估其表现一是基于已知代码问题进行内部测试二是利用来自真实 Pull Request 的生产环境信号。在生产环境中我们重点跟踪两个关键指标开发者反馈通过对评论的点赞或点踩帮助我们判断这些建议是否真正有用。生产信号衡量被标记的问题是否在合并之前得到解决。这些信号共同确保 Copilot 代码审查能够识别真正重要的问题同时也保证更快的合并来自于有信心的修复而不是降低审查标准。信号价值在代码审查中评论越多并不一定代表审查越好。我们的目标并不是最大化评论数量而是突出那些真正重要的问题。高信号的评论能够帮助开发者同时理解问题所在以及如何修复沉默优于噪音。在 71% 的代码审查中Copilot 代码审查会提供可执行的反馈而在剩余的 29% 中智能体则完全不做评论。随着我们识别高信号问题能力的提升我们也能够更加自信地进行评论。目前每次审查平均约产生 5.1 条评论同时并未增加审查反复修改的情况也没有降低我们的质量标准。速度在代码审查中速度很重要但信号价值更重要。Copilot 代码审查旨在在 Pull Request 打开后不久提供一次可靠的初步审查。当然有意义的审查仍然需要分析。随着推理能力的提升为了发现更深层问题所需的计算量也随之增加。我们将其视为一种有意识的权衡。在最近的一次改进中引入更先进的推理模型使正向反馈率提升了 6%尽管审查延迟增加了 16%。对我们来说这是值得的取舍。相比即时但充满噪音的反馈稍微慢一点但能发现真正问题的审查更有价值。我们会在可能的情况下持续降低延迟但绝不会以牺牲开发者可以信赖的高信号反馈为代价。试用 Copilot 代码审查理解你代码库的 AI 审查智能体Copilot 代码审查可以帮助你发现缺陷、提升代码可读性并通过 AI 建议加快 Pull Request 的反馈速度——所有这些都直接发生在你使用 GitHub 的工作环境中。它无缝融入现有的 Pull Request 工作流让你的团队更高效、更有信心地交付代码。 在 GitHub 上开始使用 Copilot 代码审查 https://docs.github.com/en/copilot/get-started/quickstart/?wt.mc_id3reg_webpage_reactor关于智能体架构基于我们对“优秀代码审查”的新定义我们重新构建了代码审查系统。如今的智能体架构能够智能检索上下文并探索代码仓库从而理解逻辑、架构以及特定约束条件。仅这一转变就带来了 8.1% 的正向反馈提升。原因如下边读边发现问题而不是事后总结此前智能体通常在审查结束时才汇总结果这很容易“遗忘”早期发现的问题。跨审查保留记忆现在每个 Pull Request 不再是孤立事件。如果在代码库某处识别出模式它可以在后续审查中复用这些上下文。通过明确计划处理长 PR它可以提前规划审查策略在面对长且复杂的 Pull Request 时显著提升表现这些场景中上下文往往容易丢失。读取关联的 Issue 和 Pull Request额外的上下文帮助发现细微问题包括那些在局部看似合理、但与项目整体需求不一致的情况。让审查更易理解和导航通过不断优化智能体与 Pull Request 的交互方式我们减少了噪音并让反馈更具可操作性。对你来说这意味着通过多行评论快速理解问题以及修复方式我们不再将评论固定在单行代码上而是将反馈附加到逻辑代码片段范围中让你更容易理解其指向并应用建议的修改。保持 Pull Request 时间线清晰易读对于同一类模式错误智能体不会生成多个分散的评论这往往让人不堪重负而是将它们聚合为一个统一、连贯的反馈从而降低认知负担。通过批量自动修复一次性解决整类问题你可以批量应用建议的修复一次性解决一整类逻辑缺陷或代码风格问题而无需在多个零散建议之间频繁切换。带走这些要点随着 AI 持续加速软件开发帮助团队在大规模场景下高效审查并信任代码变得比以往任何时候都更重要。Copilot 代码审查通过在 Pull Request 中直接提供高信号反馈帮助团队跟上节奏让开发者更早发现问题并以更高信心完成合并。目前已有超过 12,000 家组织在每个 Pull Request 上自动运行 Copilot 代码审查。在 WEX这种默认启用 AI 辅助审查的转变推动了 Copilot 在整个工程组织中的规模化应用如今三分之二的开发者都在使用 Copilot——包括组织中最活跃的贡献者。此后WEX 通过在所有代码仓库中默认启用 Copilot 代码审查进一步扩大了采用范围。开发者也在大量使用智能体模式和编码智能体来提升自主性帮助 WEX 实现了显著的部署增长代码交付量提升约 30%。——WEX 客户案例WEX 客户案例https://github.com/customer-stories/wex/?wt.mc_id3reg_webpage_reactor展望未来我们将专注于更深度的个性化和高保真的交互体验让智能体学习你团队那些未明说的偏好同时支持双向对话使你能够在合并前不断优化修复方案并探索不同实现路径。随着 Copilot 能力不断演进——从编码、规划到审查与自动化——目标始终很简单在保证软件质量与信任的前提下帮助开发者更快前进。立即开始Copilot 代码审查是一项高级功能包含在 Copilot Pro、Copilot Pro、Copilot Business 和 Copilot Enterprise 订阅中。你可以参考以下资源选择适合的订阅方案https://docs.github.com/en/copilot/get-started/plans#ready-to-choose-a-plan/?wt.mc_id3reg_webpage_reactor在没有 Copilot 许可证的情况下启用代码审查功能https://docs.github.com/en/copilot/concepts/agents/code-review#copilot-code-review-without-a-copilot-license/?wt.mc_id3reg_webpage_reactor观看演示视频https://youtu.be/HDEGFNAUkX8?sis9DauqsFZCdtpCtI/?wt.mc_id3reg_webpage_reactor如果你已经启用了 Copilot 代码审查可以查阅相关文档在你的代码仓库或组织中为每个 Pull Request 设置自动代码审查。有任何想法或反馈欢迎在我们的社区讨论帖中告诉我们。为每个 Pull Request 设置自动代码审查https://docs.github.com/en/copilot/how-tos/use-copilot-agents/request-a-code-review/configure-automatic-review/?wt.mc_id3reg_webpage_reactor社区讨论帖https://github.com/orgs/community/discussions/186303/?wt.mc_id3reg_webpage_reactor

相关文章:

技术速递|6000 万次 Copilot 代码审查 且仍在持续增长

作者:Ria Gopu & David Apirian排版:Alan WangCopilot 代码审查如何帮助团队跟上 AI 加速带来的代码变更。自去年 4 月我们首次推出 Copilot 代码审查(CCR)以来,其使用量已增长了 10 倍,目前已占 GitHu…...

5步释放游戏潜能:面向玩家的原神帧率解锁完全指南

5步释放游戏潜能:面向玩家的原神帧率解锁完全指南 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 一、问题发现:为什么你的高端显卡在原神中无法全力奔跑&#xf…...

为什么Python社区推荐用pipx替代pip?以virtualenv安装为例演示工作流

为什么Python开发者应该用pipx替代pip?以virtualenv为例的完整隔离方案 当你在Ubuntu终端输入pip install virtualenv时,那个刺眼的externally-managed-environment错误提示就像一堵墙——这不是技术故障,而是Python生态进化的重要路标。传统…...

OpenClaw开源项目深度体验:对比其与星图GPU平台Qwen3-14B-Int4-AWQ部署差异

OpenClaw开源项目深度体验:对比其与星图GPU平台Qwen3-14B-Int4-AWQ部署差异 1. 项目概览与核心功能 OpenClaw是近期备受关注的开源大模型项目,主打轻量化和易部署特性。它采用混合专家架构(MoE),在保持模型性能的同时显著降低了计算资源需求…...

Kettle转换里‘阻塞数据’控件为啥不灵?我用这个真实ETL案例给你讲透

Kettle转换中‘阻塞数据’控件的实战解析:从失效到精准控制 在ETL工具Kettle的实际应用中,数据流的精确控制往往是决定任务成败的关键。许多中高级用户在使用"阻塞数据直到步骤都完成"控件时,都曾遇到过看似配置正确却无法生效的困…...

Heritrix3源码深度解析:从CrawlURI到ProcessorChain的执行流程

Heritrix3源码深度解析:从CrawlURI到ProcessorChain的执行流程 【免费下载链接】heritrix3 Heritrix is the Internet Archives open-source, extensible, web-scale, archival-quality web crawler project. 项目地址: https://gitcode.com/gh_mirrors/he/herit…...

10分钟搞定 Nginx 安装:Linux/Windows 双平台实测(附避坑指南)

一、前言上一篇我们初识了Nginx——知道了它是高性能的HTTP和反向代理服务器,懂了它为什么被99%的互联网公司青睐,也明确了我们后续的学习路线。本篇文章将手把手教你在Linux和Windows系统上,完成Nginx的安装、部署、启动、停止 ,…...

Open UI5 源代码解析之735:DynamicPageAccessibleLandmarkInfo.js

源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.f\src\sap\f\DynamicPageAccessibleLandmarkInfo.js DynamicPageAccessibleLandmarkInfo 文件深度解析 文件定位与总体判断 当前分析对象位于 src/sap.f/src/sap/f/DynamicPageAccessibleLandmarkInfo.j…...

51单片机学习(五)数码管显示

如有大佬发现我文章里的错误,希望多多指出,或者有缺少的也欢迎告诉我,我会尽快补充上去的,感谢各位的支持,要互三的d我哦!一.数码管数码管显示屏和U4 74HC245U574H138译码器一位数码管引脚定义一个数码管由…...

保姆级教程:在OBBDetection项目中为DOTA数据集定制检测结果可视化(mmdetection 2.2)

深度定制OBBDetection检测结果可视化:DOTA数据集高级实践指南 在旋转目标检测领域,DOTA数据集因其复杂的航拍场景和多角度目标特性,对结果可视化提出了独特挑战。本文将带您从零构建一套完整的可视化解决方案,涵盖从基础配置到高级…...

Open UI5 源代码解析之736:CardBase.js

源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.f\src\sap\f\CardBase.js CardBase.js 深度解析:在 OpenUI5 中承上启下的卡片基座 文件定位与整体判断 CardBase.js 位于 sap.f 库下,它不是面向业务开发者直接频繁实例化的组件,而是一个被多种卡片实…...

从MATLAB验证到FPGA上板:双频信号叠加的完整开发闭环实战

从MATLAB验证到FPGA上板:双频信号叠加的完整开发闭环实战 在数字信号处理领域,实现双频信号的精确叠加是一个常见但极具挑战性的任务。无论是通信系统中的载波调制,还是音频处理中的音效合成,都需要工程师能够准确地在硬件层面实现…...

终极指南:如何用btcrecover找回你忘记的比特币钱包密码 [特殊字符]️

终极指南:如何用btcrecover找回你忘记的比特币钱包密码 🗝️ 【免费下载链接】btcrecover An open source Bitcoin wallet password and seed recovery tool designed for the case where you already know most of your password/seed, but need assist…...

实战指南:基于快马平台,快速构建可部署的unet卫星图像分割系统

今天想和大家分享一个实战项目:基于UNet的卫星图像建筑物分割系统。这个项目特别适合在InsCode(快马)平台上快速搭建,因为它涉及从数据处理到模型部署的完整流程,而平台的一键部署功能正好能省去繁琐的环境配置工作。 项目背景与需求分析 卫星…...

Kazumi WebDAV同步功能详解:实现跨设备番剧数据互通的无缝体验

Kazumi WebDAV同步功能详解:实现跨设备番剧数据互通的无缝体验 【免费下载链接】Kazumi 基于自定义规则的番剧采集APP,支持流媒体在线观看,支持弹幕,支持实时超分辨率。 项目地址: https://gitcode.com/gh_mirrors/ka/Kazumi …...

从安防摄像头到直播:手把手教你用ZLMediaKit搭建GB28181视频监控平台

从安防摄像头到直播:手把手教你用ZLMediaKit搭建GB28181视频监控平台 在智能安防和物联网快速发展的今天,视频监控系统的网络化和智能化已成为行业标配。GB28181作为国内视频监控领域的国家标准协议,实现了不同厂商设备间的互联互通。而ZLMed…...

Shiny框架终极指南:输入控件与输出渲染的完美交互原理

Shiny框架终极指南:输入控件与输出渲染的完美交互原理 【免费下载链接】shiny Easy interactive web applications with R 项目地址: https://gitcode.com/gh_mirrors/sh/shiny Shiny是R语言生态中一款强大的交互式Web应用框架,它让数据科学家和分…...

MedGemma-X精彩案例分享:自然语言提问触发的专业级影像分析报告

MedGemma-X精彩案例分享:自然语言提问触发的专业级影像分析报告 1. 重新定义智能影像诊断的新标杆 想象一下这样的场景:一位放射科医生面对堆积如山的X光片,只需要用自然语言问一句"这张胸片有没有肺炎迹象?"&#xf…...

cobalt数据库设计解析:如何平衡性能与数据完整性

cobalt数据库设计解析:如何平衡性能与数据完整性 【免费下载链接】cobalt best way to save what you love 项目地址: https://gitcode.com/GitHub_Trending/cob/cobalt 引言:数据库设计的永恒矛盾 在软件开发领域,数据库设计始终面临…...

Nunchaku-flux-1-dev生成效果对比:不同采样器与步数下的画质差异

Nunchaku-flux-1-dev生成效果对比:不同采样器与步数下的画质差异 最近在玩AI生图的朋友,估计都绕不开一个话题:怎么调参数才能让图更好看?是选个快的采样器,还是选个慢的但质量高的?采样步数到底调到多少才…...

Optick多线程性能分析:游戏引擎中的并发性能优化实战

Optick多线程性能分析:游戏引擎中的并发性能优化实战 【免费下载链接】optick C Profiler For Games 项目地址: https://gitcode.com/gh_mirrors/op/optick Optick是一款专为游戏开发打造的C性能分析工具,能够精准捕捉多线程应用中的性能瓶颈&…...

[特殊字符] Nano-Banana部署教程:Ubuntu/CentOS环境下的镜像拉取与启动

Nano-Banana部署教程:Ubuntu/CentOS环境下的镜像拉取与启动 1. 项目简介 Nano-Banana是一款专门为产品拆解和平铺展示风格设计的轻量级文本生成图像系统。这个项目的核心在于深度融合了Nano-Banana专属的Turbo LoRA微调权重,专门针对Knolling平铺、爆炸…...

仅限前500位开发者获取:20年MCP协议老兵手写《Python服务器模板源码认知地图》PDF+可执行调试镜像

第一章:MCP协议核心原理与Python服务器模板设计哲学MCP(Model Control Protocol)是一种轻量级、面向模型交互的双向通信协议,专为AI代理系统与外部工具服务之间的结构化指令交换而设计。其核心在于以JSON-RPC 2.0为传输语义基础&a…...

DynamicColor跨平台开发指南:iOS、macOS、watchOS的统一颜色解决方案

DynamicColor跨平台开发指南:iOS、macOS、watchOS的统一颜色解决方案 【免费下载链接】DynamicColor Yet another extension to manipulate colors easily in Swift and SwiftUI 项目地址: https://gitcode.com/gh_mirrors/dy/DynamicColor DynamicColor是一…...

LeetCode 11. Container With Most Water 题解

LeetCode 11. Container With Most Water 题解 题目描述 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条…...

深入解析C++中获取进程模块基址的高效实现方法

1. 为什么需要获取进程模块基址 在Windows系统编程中,获取进程模块基址是一个基础但极其重要的操作。简单来说,模块基址就是某个DLL或EXE文件被加载到内存中的起始地址。这个地址就像是模块在内存中的"门牌号",有了它我们才能找到模…...

初识Git,带你深入学习Git相关的知识

在之前的博客中,我都会在博客的开头放一个gitee的链接。Gitee是什么呢?它是一个远程的代码托管库。在我们学习和项目管理的时候起着非常重要的作用。 本期我就带领着大家一起学习Git相关的知识内容。学习它的操作,了解其在企业级开发中的作用…...

League-Toolkit:重新定义英雄联盟游戏体验的智能助手

League-Toolkit:重新定义英雄联盟游戏体验的智能助手 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit …...

【Python并发革命】:GIL解除后首个生产级无锁插件生态正式开放下载(限时72小时)

第一章:Python并发革命的里程碑意义 Python 并发模型的演进并非渐进式改良,而是一场深刻重塑编程范式的革命。从早期依赖线程与锁的阻塞式模型,到 asyncio 的异步 I/O 抽象、async/await 语法糖的引入,再到结构化并发(…...

从云端到指尖:巧用Aspose组件实现Office/PDF文档秒级HTML预览,攻克移动端大文件访问瓶颈

1. 移动端大文件预览的痛点与解决思路 最近接手一个企业级项目时,遇到了一个非常典型的场景:用户通过PC端上传各种办公文档(Word、Excel、PPT、PDF),需要在移动端随时查看。但当文件体积较大时(比如超过50M…...