极狐GitLab Duo 代码评审(非 Agentic)
Tier: 专业版,旗舰版
Add-on: 极狐GitLab Duo Enterprise
Offering: JihuLab.com,私有化部署
模型信息
- 默认 LLM
- 使用 Non-Agentic Code Review 设置选择其他模型。
- 适用于自部署模型的极狐GitLab Duo
根据您的附加组件和群组设置,极狐GitLab 会运行两种代码评审功能之一:
- 代码评审任务流:Agentic 版本,属于极狐GitLab Duo Agent Platform。
- 极狐GitLab Duo 代码评审:非 Agentic 版本,仅适用于拥有极狐GitLab Duo Enterprise 附加组件的用户。 本页介绍非 Agentic 版本。 了解这两种功能的对比。
极狐GitLab Duo 代码评审可帮助您简化项目中的代码评审。
使用极狐GitLab Duo 代码评审
当您的合并请求可以接受评审时,使用极狐GitLab Duo 代码评审执行初始评审:
- 在顶部栏中,选择搜索或跳转到,然后找到您的项目。
- 在左侧边栏中,选择代码 > 合并请求,然后找到您的合并请求。
- 在评论框中,输入快速操作/assign_reviewer @GitLabDuo,或将极狐GitLab Duo 指派为审核人。
在议题 517386中提供有关此功能的反馈。
上下文感知
当您使用极狐GitLab Duo 代码评审时,以下数据会发送到大型语言模型:
- 合并请求标题
- 合并请求描述
- 应用更改前的文件内容(用于提供上下文)
- 合并请求差异
- 文件名
- 自定义指令
要指定要排除的内容,请参阅从代码评审中排除上下文。
大型合并请求中的行为
极狐GitLab Duo 代码评审会将合并请求差异和已更改文件的原始内容发送到模型。合并后的提示词受所选模型的上下文窗口限制。
对于大型合并请求,极狐GitLab Duo 代码评审会使用回退机制来提高成功评审的几率:
- 初始请求包含合并请求差异和原始文件内容。
- 如果该请求失败,极狐GitLab Duo 代码评审会自动重试,但不包含原始文件 内容。
- 如果重试也失败,极狐GitLab Duo 代码评审会返回一条通用错误消息。
不包含文件内容的重试会减小提示词大小,但也会减少模型在评审您的更改时可用的上下文。评论可能不如包含原始文件内容的评审那样具体。
极狐GitLab Duo 代码评审使用实例的 AI 网关请求超时。在此时间窗口内未完成的评审也会显示为通用错误。
要降低大型合并请求评审失败的风险:
- 将大型合并请求拆分为较小的合并请求。
- 对与评审无关的文件排除上下文。
- 请群组所有者或实例管理员使用 Non-Agentic Code Review 设置选择其他模型。 请参阅 JihuLab.com 或 极狐GitLab 私有化部署。
在评审中与极狐GitLab Duo 交互
您可以在评论中提及@GitLabDuo,以便在您的合并请求上与极狐GitLab Duo 交互。您可以就其评审评论提出后续问题,也可以就合并请求中的任何讨论串提出问题。
与极狐GitLab Duo 的交互有助于在您改进合并请求的过程中改善建议和反馈。
提供给极狐GitLab Duo 的反馈不会影响之后对其他合并请求的评审。有一项功能请求希望添加此功能,请参阅议题 560116。
自定义代码评审指令
您可以创建自定义合并请求审查指令,以确保项目中一致且具体的代码评审标准。
有关更多信息,请参阅为极狐GitLab Duo 自定义审查指令。
自动评审
极狐GitLab Duo 的自动评审可确保您的项目、群组或实例中的所有合并请求都获得初始评审。
当用户创建合并请求时,极狐GitLab Duo 会自动评审它,除非:
- 它被标记为草稿。要让极狐GitLab Duo 评审该合并请求,请将其标记为就绪。
- 它不包含任何更改。要让极狐GitLab Duo 评审该合并请求,请向其添加更改。
- 它匹配您设置的一条或多条排除规则。要让极狐GitLab Duo 评审该合并请求, 请手动请求评审。
先决条件:
- 项目的维护者或所有者角色。
要为项目开启自动评审:
- 在顶部栏中,选择搜索或跳转到,然后找到您的项目。
- 在左侧边栏中,选择设置 > 合并请求。
- 在极狐GitLab Duo 代码评审部分,选择启用极狐GitLab Duo 自动评审。
- 选择保存更改。
启用自动评审后,您可以指定规则来排除特定合并请求。
为项目排除合并请求
为项目开启自动评审后,极狐GitLab Duo 会评审每个符合条件的合并请求。要排除特定合并请求,请在 .gitlab/duo/mr-review-automated-rules.yaml 文件中定义排除规则。
排除规则只会阻止自动评审。您仍然可以为任何被排除的合并请求手动请求评审。
要定义排除规则:
-
在代码仓库的根目录中,创建.gitlab/duo 目录(如果尚不存在)。
-
在.gitlab/duo 目录中,创建名为 mr-review-automated-rules.yaml的文件。
-
使用以下格式添加排除规则:
yaml1exclude: 2 target_branches: 3 - <pattern> 4 source_branches: 5 - <pattern> 6 authors: 7 - <pattern>每个键都是可选的。 当合并请求匹配任何类别中的任何模式时,极狐GitLab Duo 会跳过自动评审:
- target_branches:匹配合并请求的目标分支名称。
- source_branches:匹配合并请求的源分支名称。
- authors:匹配合并请求作者的用户名。
模式支持通配符(glob)匹配。 例如,dependabot/*匹配任何以 dependabot/开头的源分支。
例如,要跳过针对发布分支的合并请求 或由机器人账号创建的合并请求的自动评审:
yamlexclude: target_branches: - "release/*" authors: - "*-bot" -
将该文件提交到代码仓库的默认分支。
极狐GitLab Duo 会从代码仓库的默认分支读取排除规则。极狐GitLab Duo 不会在其他分支上应用规则。
为群组排除合并请求
要为群组及其子群组中的所有项目定义排除规则,请指定一个用作模板的项目。该模板项目必须包含.gitlab/duo/mr-review-automated-rules.yaml 文件。
极狐GitLab Duo 会将群组模板项目中的排除规则与各个项目中定义的规则合并。如果同一类别在两个层级都有定义,则项目的规则优先。当群组及其子群组各自设置模板项目时,极狐GitLab Duo 会合并每个层级的规则。
如果您已配置某个项目来为群组存储自定义审查指令,请将您的 mr-review-automated-rules.yaml 存储在同一项目中。 您只能指定单个项目来自定义群组的代码评审,因此极狐GitLab 也会自动 在该项目中检查排除规则。您无需再次执行以下步骤。
先决条件:
- 群组的所有者角色。
- 群组中的某个项目包含您要设置的排除规则。
要为群组配置排除规则:
对于顶级群组:
- 在顶部栏中,选择搜索或跳转到,然后找到您的顶级群组。
- 在左侧边栏中,选择设置 > 极狐GitLab Duo。
- 选择更改配置。
- 在极狐GitLab Duo 功能 > 自定义代码评审下,选择包含 .gitlab/duo/mr-review-automated-rules.yaml 文件的项目。
- 选择保存更改。
对于群组或子群组:
- 在顶部栏中,选择搜索或跳转到,然后找到您的群组或子群组。
- 在左侧边栏中,选择设置 > 通用。
- 展开极狐GitLab Duo 功能。
- 在自定义代码评审下,选择包含 .gitlab/duo/mr-review-automated-rules.yaml 文件的项目。
- 选择保存更改。
故障排除
大型合并请求评审失败
对于包含许多大型已更改文件的合并请求,极狐GitLab Duo 代码评审可能无法发布评审。常见原因包括:
- 差异和原始文件内容的总大小超出了模型的上下文窗口。
- AI 网关请求耗时超过 120 秒。
有关重试和超时行为的详细信息,请参阅大型合并请求中的行为。
要变通解决此失败:
- 将合并请求拆分为较小的合并请求。
- 对与评审无关的文件排除上下文。
- 请群组所有者或实例管理员使用 Non-Agentic Code Review 设置选择其他模型。 请参阅 JihuLab.com 或 极狐GitLab 私有化部署。
有关更多信息,请参阅议题 596794。