极狐GitLab

极狐GitLab Duo代码评审实战,AI守住Merge Request质量门禁

极狐GitLab
2026年10月16日
12680
分享:

极狐GitLab Duo代码评审实战,AI守住Merge Request质量门禁

定义框:极狐GitLab Duo代码评审是基于大模型的合并请求智能审查功能,自动分析MR差异与上下文,在人工介入前指出缺陷、安全漏洞与代码质量问题。

评审积压不是加班能解决的

先问一个扎心的问题:你们团队MR的首次评审等待时间,是按小时算,还是按天算?

大多数研发团队的真实情况是——评审积压严重,资深工程师被日常评审淹没,真正复杂的架构决策反而没人有精力深想。于是要么降低评审标准,要么绕过评审直接合码。两条路,一条通向质量滑坡,一条通向线上事故。

极狐GitLab在18.1版本中将Duo代码评审正式GA,可用于生产环境。它的定位很明确:让AI承担第一轮初始评审,在人工审核人介入之前,先把潜在缺陷、安全漏洞和代码质量问题筛一遍。人工评审从"找低级问题"中解放出来,聚焦架构与业务逻辑判断——这才是质量门禁该有的分工。

两种形态,先分清再用对

根据官方文档,极狐GitLab的AI代码评审有两种运行形态,选型前必须分清:

维度

代码评审任务流(Agentic)

Duo代码评审(非Agentic)

归属

极狐GitLab Duo Agent Platform

Duo Enterprise 附加组件

分析方式

多步Agentic推理

单次扫描

会话创建

是,可在项目会话中跟踪

否

自动审查

支持

支持

自定义指令/评论

支持

支持

Agentic形态会启动一个评审会话,多步推理逐步深化分析;非Agentic形态则是对MR差异的一次性扫描,适合拥有Duo Enterprise附加组件的团队快速上手。具体运行哪个,取决于发起评审用户所持的席位,两者可以在同一项目中并存。

三种触发方式,把AI变成"编外审核人"

按官方文档,触发一次AI初始评审有三种路径:

  1. 手动指派:在MR评论框输入快速操作 /assign_reviewer @GitLabDuo,或直接将极狐GitLab Duo指派为审核人;

  2. 评论交互:在评论中提及 @GitLabDuo,可就评审结论追问,也能在任意讨论串中请求针对性反馈;

  3. 自动评审:项目、群组乃至实例级开启后,所有新建MR自动获得初始评审。

它不是黑盒扫描。官方文档明确列出发送给大模型的上下文:MR标题、描述、变更前文件内容、MR差异、文件名、自定义指令。正因为它"读过"变更前的原始文件,评审意见才能区分"新增的坑"和"历史遗留",这一点是只看diff的静态扫描工具给不了的。

落地第一步,开启自动评审

手动触发适合尝鲜,但要成为质量门禁,必须走自动评审。项目维护者或所有者的操作路径:

  1. 找到项目,进入左侧边栏 设置 > 合并请求;

  2. 在 极狐GitLab Duo代码评审 部分,勾选 启用极狐GitLab Duo自动评审;

  3. 点击 保存更改。

开启后有三类MR会被自动跳过:草稿MR(标记为就绪后评审)、无任何更改的MR、命中排除规则的MR。第三类是关键——比如机器人账号批量提交的依赖升级MR、发版分支的例行MR,都值得排除,避免消耗无意义的评审资源。

排除规则通过仓库中的 .gitlab/duo/mr-review-automated-rules.yaml 定义,支持glob通配符:

exclude:
  target_branches:
    - "release/*"
  source_branches:
    - "dependabot/*"
  authors:
    - "*-bot"

一个必须记住的细节:极狐GitLab Duo只从默认分支读取排除规则,提交到其他分支不生效。群组级治理则通过指定模板项目实现,群组模板与项目规则会自动合并,同类别冲突时项目规则优先。

大MR怎么办,官方给了回退机制

任何AI评审都绕不开上下文窗口的物理限制。官方文档给出了明确的回退设计:

  1. 初始请求包含MR差异和变更文件的原始内容;

  2. 若失败,自动重试但不包含原始文件内容(提示词更小,评审具体度下降);

  3. 重试仍失败,返回通用错误消息。

此外AI网关请求有120秒超时限制。所以工程纪律依然重要:大MR拆小、排除与评审无关文件的上下文、必要时由群组所有者通过 Non-Agentic Code Review 设置更换模型。AI门禁不是让流程纪律退役,而是让纪律有兜底。

什么时候别指望它

把丑话说在前面,这三个场景AI评审只能辅助、不能替代:

  • 架构与业务语义判断:模型理解的是代码变更与上下文,不是你的业务边界,跨域设计合理性仍需人来把关;

  • 安全合规的最终裁定:它能在人工介入前发现可疑模式,但漏洞定级与处置决策必须走安全团队流程;

  • 零信任直接合码:自动评审的价值是"首轮过滤",把它的意见当最终结论、跳过人工审核,等于把质量门禁的钥匙交给概率。

常见问题

FAQ 1:触发评审后 @GitLabDuo 没有任何响应?

大概率是席位问题。请群组所有者检查群组的极狐GitLab Duo席位分配,确认发起评审的用户持有对应附加组件席位。非Agentic代码评审要求极狐GitLab Duo Enterprise附加组件。

FAQ 2:草稿MR会被自动评审吗?

不会。草稿状态被自动跳过,将MR标记为就绪后即可获得评审。如果MR命中了排除规则,仍可通过手动指派 @GitLabDuo 触发评审——排除规则只拦截自动评审,不拦截手动请求。

FAQ 3:大型MR评审总是失败怎么处理?

三个官方建议:把大MR拆分为较小的MR;对与评审无关的文件排除上下文;请群组所有者或实例管理员通过 Non-Agentic Code Review 设置选择上下文窗口更大的模型。

写在最后

代码评审的矛盾从来不是"要不要审",而是"谁来承担第一轮的体力活"。AI承担初始评审、人聚焦高价值判断,这个分工在18.1 GA之后已经是可落地的现实。与其继续让资深工程师在积压列表里消耗,不如先在一个试点项目上跑两周,看评审等待时间的变化。