极狐 GitLab

配置极狐GitLab Duo

Offering: 私有化部署

极狐GitLab Duo 是一款 AI 原生助手,可在整个软件开发生命周期中为您提供帮助。

您可以将极狐GitLab Duo 配置为使用:

  • 基于云的 AI 网关(默认):由极狐GitLab 托管的 AI 网关,搭配厂商语言模型。
  • 自部署模型:您自己的 AI 网关和语言模型, 可完全掌控您的数据和安全。
  • 混合配置:部分功能使用自部署模型, 其他功能使用基于云的模型。

先决条件#

允许从极狐GitLab 实例到极狐GitLab Duo 的出站连接#

  • 极狐GitLab 应用节点必须通过 HTTP/2 连接到位于 https://duo-workflow-svc.runway.gitlab.net的极狐GitLab Duo Workflow。应用与服务之间通过 gRPC 通信。
  • 对于极狐GitLab Duo Agent Platform 功能,您的防火墙和 HTTP/S 代理服务器必须允许通过 https:// 出站连接到 duo-workflow-svc.runway.gitlab.net的 443 端口,并支持 HTTP/2 流量。
  • 如果您的实例通过 HTTP/S 代理服务器连接,该主机仍必须能够 通过 DNS 解析公共主机名。如果只能通过代理服务器解析主机名, 极狐GitLab Duo 功能(如极狐GitLab Duo 健康检查、 极狐GitLab Credits 仪表板和极狐GitLab Duo Agent Platform)可能会超时或失败。 更多信息,请参见议题 602538。
  • AI 功能通过长连接 HTTP 连接流式传输响应。如果 HTTP/S 代理服务器 或防火墙强制执行最大请求时长或空闲超时,可能会在没有错误的情况下 中断长响应。请将代理的超时时间配置为比路径中其他组件更长。

允许从客户端到极狐GitLab 实例的入站连接#

您的极狐GitLab 实例必须允许来自 IDE 客户端的入站连接。

  1. 允许带有以下请求头的 WebSocket 协议升级请求:
    • Connection: upgrade
    • Upgrade: websocket
    • HTTP/2 协议支持
    • 标准 WebSocket 安全请求头:Sec-WebSocket-*
  2. 启用 wss://(WebSocket Secure)协议支持。
  3. 添加要允许的特定端点:
    • 主端点:wss://<customer-instance>/-/cable
    • 确保 HTTP/2 协议不会降级为 HTTP/1.1。
    • 端口:443(HTTPS/WSS)

如果您遇到问题:

  • 检查对 wss://gitlab.example.com/-/cable 和其他 .com 域名的 WebSocket 流量限制。
  • 如果您使用 Apache 等反向代理,可能会在日志中看到极狐GitLab Duo Chat 连接问题, 例如 WebSocket connection to .... failures。

要解决此问题,请编辑您的代理设置:

apache
# Enable WebSocket reverse Proxy # Needs proxy_wstunnel enabled RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteCond %{HTTP:Connection} upgrade [NC] RewriteRule ^/?(.*) "ws://127.0.0.1:8181/$1" [P,L]

允许来自 Runner 的连接#

对于使用 Runner 的极狐GitLab Duo Agent Platform 功能(如任务流), Runner 必须能够连接到极狐GitLab 实例。

必须允许与从客户端到极狐GitLab 实例的入站连接相同的连接,作为从 Runner 到极狐GitLab 实例的出站连接。

此外,Runner 必须能够连接到:

目标端口用途
gitlab.com443在运行时从软件包仓库下载极狐GitLab Duo CLI 二进制文件
registry.gitlab.com443下载默认 Docker 镜像(除非使用自定义镜像)

如果您的组织无法允许访问 gitlab.com,您可以使用 自定义 Docker 镜像, 其中已安装极狐GitLab Duo CLI。

Runner 与极狐GitLab Duo Agent Platform 服务的连接通过 极狐GitLab 实例路由。Runner 不会直接连接到 duo-workflow-svc.runway.gitlab.net。 对 duo-workflow-svc.runway.gitlab.net的 443 端口的防火墙要求适用于 极狐GitLab 实例,而不是 Runner。您的 Runner 网络配置必须允许到极狐GitLab 实例的 出站 HTTPS 流量。

与极狐GitLab 共享使用数据#

为帮助提升服务质量,您可以将极狐GitLab Duo Agent Platform 功能的使用数据共享给极狐GitLab。

当您开启数据收集后,极狐GitLab 会记录极狐GitLab Duo 功能使用情况的相关信息。这些数据仅用于服务改进和调试,不会用于训练 AI 模型。

有关收集哪些数据的更多信息,请参见 Agent Platform 使用数据。

先决条件:

  • 使用极狐GitLab 18.9.1 或更高版本

要开启扩展日志记录:

  1. 在右上角,选择管理员。
  2. 在左侧边栏中,选择极狐GitLab Duo。
  3. 选择更改配置。
  4. 选中收集使用数据复选框。
  5. 选择保存更改。

自部署模型的数据使用#

如果您使用自部署 AI 网关和自部署模型,详细日志会存储在您自己的基础设施上,不会与极狐GitLab 共享。要与极狐GitLab 共享数据,您必须将自部署 AI 网关配置为将跟踪数据发送到外部可观测性服务。

您可以使用 Service Ping 将使用数据发送给极狐GitLab。此数据不同于遥测数据。

运行极狐GitLab Duo 健康检查#

Status: 测试版

您可以确定您的实例是否满足使用极狐GitLab Duo 的要求。健康检查完成后,会显示通过或失败结果以及问题类型。如果健康检查有任何测试失败,用户可能无法在您的实例中使用极狐GitLab Duo 功能。

这是一项测试版功能。

先决条件:

  • 您必须是管理员。

要运行健康检查:

  1. 在右上角,选择管理员。
  2. 在左侧边栏中,选择极狐GitLab Duo。
  3. 在右上角,选择运行健康检查。
  4. 可选。在极狐GitLab 17.5 及更高版本中,健康检查完成后,您可以选择下载报告以保存健康检查结果的详细报告。

将执行以下测试:

测试描述
AI 网关仅限极狐GitLab Duo 自部署版本模型。测试 AI 网关 URL 是否已配置为环境变量。使用 AI 网关的自部署模型部署需要此连接。
网络测试您的实例能否连接到 customers.jihulab.com 和 cloud.jihulab.com。

如果您的实例无法连接到任一目标,请确保您的防火墙或代理服务器设置允许连接。
同步测试您的订阅是否:
- 已使用激活码激活,并可与 customers.jihulab.com 同步。
- 具有正确的访问凭据。
- 最近已同步。如果尚未同步,或访问凭据缺失或已过期,您可以手动同步您的订阅数据。
代码建议仅限极狐GitLab Duo 自部署版本模型。测试代码建议是否可用:
- 您的许可证包含对代码建议的访问权限。
- 您具有使用该功能所需的权限。
极狐GitLab Duo Agent Platform测试后端服务是否正常运行且可访问。Agent Platform 和极狐GitLab Duo Agentic Chat 等 Agent 功能需要此服务。

对于极狐GitLab Duo 自部署版本,在您为极狐GitLab Duo Agent Platform 功能选择自部署模型之前,此测试不会通过。

还会验证以下内置任务流先决条件:
- 已启用实例级任务流执行设置。
- 已启用实例级内置任务流设置。
- 至少注册并连接了一个带有gitlab--duo 标签的活动实例 Runner,并使用与 Docker 兼容的执行器。
系统交换测试您的实例中是否可以使用代码建议。如果系统交换评估失败,用户可能无法使用极狐GitLab Duo 功能。
用量计费测试您的实例能否连接到用量计费端点,包括 Customers Portal、AI 网关和 Duo Workflow Service。

对于 17.10 之前的极狐GitLab 实例,如果您在健康检查中遇到任何问题,请参见故障排除页面。

其他托管选项#

默认情况下,极狐GitLab Duo 使用受支持的 AI 厂商语言模型,并通过由极狐GitLab 托管的基于云的 AI 网关发送数据。

如果您想托管自己的语言模型或 AI 网关: