极狐 GitLab

极狐GitLab Duo CLI (`duo`)

Tier: 专业版,旗舰版

Offering: JihuLab.com,私有化部署

Status: Beta

Model information
版本历史
  • 在 极狐GitLab 18.9 中作为 实验 引入。
  • 在 极狐GitLab 18.9 发布期间,作为实验功能 添加 到 极狐GitLab CLI 的 glab 1.87.0 中。
  • 在 极狐GitLab 18.10 发布期间,引入 模型选择选项和环境变量,对应 极狐GitLab Duo CLI 8.68.0。
  • 在 极狐GitLab 18.10 发布期间,引入 模型选择斜杠命令,对应 极狐GitLab Duo CLI 8.76.0。
  • 在 极狐GitLab 18.11 中 变更 为 Beta 状态。
  • 在 极狐GitLab 19.0 发布期间,引入 环境变量和选项以启用用户级 Agent 技能,作为 实验功能 在 极狐GitLab Duo CLI 8.83.0 中提供。

极狐GitLab Duo CLI 是一个命令行界面工具,它将 极狐GitLab Duo Agentic Chat 带到您的终端。该 CLI 适用于任何操作系统和编辑器,可以用来询问有关代码库的复杂问题,并自主代表您执行操作。

极狐GitLab Duo CLI 可以帮助您:

  • 理解代码库结构、跨文件功能以及单独的代码片段。
  • 构建、修改、重构和现代化代码。
  • 排查错误并修复代码问题。
  • 自动化 CI/CD 配置,排查流水线错误并优化流水线。
  • 自主执行多步骤开发任务。

极狐GitLab Duo CLI 提供两种模式:

  • 交互模式:提供类似于 极狐GitLab UI 或编辑器扩展中 极狐GitLab Duo Chat 的聊天体验。支持构建和计划模式。
  • 无头模式:支持在运行器、脚本和其他自动化工作流中进行非交互式使用。

它还支持为 极狐GitLab Duo Agent 平台设置的 自定义指令,包括 chat-rules.mdAGENTS.mdSKILL.md 文件。

前提条件#

设置 极狐GitLab Duo CLI#

您可以通过 极狐GitLab CLI (glab) 使用 极狐GitLab Duo CLI。使用 极狐GitLab CLI,您可以访问其他极狐GitLab 功能,并且只需要使用 OAuth 和个人访问令牌认证一次。

或者,您可以将 极狐GitLab Duo CLI (duo) 作为独立的 AI 工具安装并使用,通过个人访问令牌单独认证。

两种设置都支持交互模式和无头模式,以及所有 极狐GitLab Duo CLI 选项、命令和功能。

通过 极狐GitLab CLI 使用#

前提条件:

要通过 极狐GitLab CLI 设置并使用 极狐GitLab Duo CLI:

  1. 运行 极狐GitLab Duo CLI 的 glab 命令:

    shell
    glab duo cli
  2. 按照提示安装 极狐GitLab Duo CLI 二进制文件。

极狐GitLab CLI 会自动处理认证,因此您可以立即开始使用 极狐GitLab Duo CLI。

不通过 极狐GitLab CLI 使用#

要将 极狐GitLab Duo CLI 作为独立工具使用,请安装它,然后进行认证。

安装#

将 极狐GitLab Duo CLI 安装为 npm 包或编译后的二进制文件。

前提条件:

  • Node.js 22 或更高版本。
  • 对于使用自签名证书的私有化部署实例,需要:
    • Node.js LTS 22.20.0 或更高版本
    • 或者 Node.js 23.8.0 或更高版本

要将 极狐GitLab Duo CLI 安装为 npm 包,请运行:

shell
npm install --global @gitlab/duo-cli

认证#

如果您首次运行 `duo` 时系统上已安装并认证了 `glab`,`duo` 会自动将 `glab` 作为凭据助手。您不需要单独认证。这需要 `glab` 1.85.2 或更高版本,以及 `duo` 8.68.0 或更高版本。 如果您在此功能可用之前已经为 `duo` 进行了认证,并且希望改用 `glab` 作为 凭据助手,请从 `~/.gitlab/storage.json` 中删除您的认证设置。

前提条件:

要进行认证:

  1. 在终端中运行 duo。首次运行 极狐GitLab Duo CLI 时,会出现一个配置页面。
  2. 输入 极狐GitLab 实例 URL,然后按 Enter
    • 对于 JihuLab.com,请输入 https://jihulab.com
    • 对于私有化部署,请输入您的实例 URL。
  3. 对于 极狐GitLab Token,请输入您的个人访问令牌。
  4. 要保存并退出 CLI,请按 Enter
  5. 要重新启动 CLI,请在终端中运行 duo

要在初始设置后修改配置,请使用 duo config edit

使用环境变量认证#

前提条件:

要使用环境变量进行认证:

  1. GITLAB_TOKENGITLAB_OAUTH_TOKEN 设置为您的个人访问令牌。

    shell
    export GITLAB_TOKEN="<your-personal-access-token>"
  2. 可选。将 GITLAB_BASE_URLGITLAB_URL 设置为您的自定义 极狐GitLab 实例 URL,例如 https://gitlab.example.com。默认值为 https://jihulab.com

    shell
    export GITLAB_BASE_URL="<your-instance-url>"

此方法适用于无头模式、CI/CD 流水线以及无法进行交互式认证的脚本化工作流。

使用 极狐GitLab Duo CLI#

前提条件:

交互模式#

要在交互模式下使用 极狐GitLab Duo CLI:

  1. 根据您的设置,输入命令以启动交互模式:

shell
glab duo cli
shell
duo
  1. 在终端窗口中会出现提示符 >。在提示符后输入您的问题或请求,然后按 Enter

    例如:

    plaintext
    1这个代码仓是关于什么的? 2 3哪些议题需要我关注? 4 5帮我实现议题 15。 6 7MR 23 中的流水线失败了。请帮我修复它们。

要在 极狐GitLab Duo CLI 正在工作时取消响应,请按 Escape。 极狐GitLab Duo CLI 会停止当前操作并返回提示符。

使用 键查看提示历史记录,或使用 Control+R 进行搜索。

在构建和计划模式之间切换#

在交互模式下,您可以在工作时将 极狐GitLab Duo CLI 在两种模式之间切换:

模式权限工作方式
构建模式(默认)读写极狐GitLab Duo 可以执行任务并对您的项目进行更改。
计划模式只读极狐GitLab Duo 可以分析您的项目并创建计划,而不会进行任何更改。

例如,先在计划模式下与 极狐GitLab Duo 讨论问题。当您准备好之后,切换到构建模式,并指示 极狐GitLab Duo 实施计划。

极狐GitLab Duo CLI 会在 > 提示符下方显示当前模式。要切换模式,请按 Tab

斜杠命令#

在交互模式下,使用斜杠命令来配置 极狐GitLab Duo CLI 并执行操作。在提示符处输入斜杠命令,然后按 Enter

可用的斜杠命令如下:

命令描述
/copy将上次 极狐GitLab Duo 的响应复制到剪贴板。
/feedback提交错误报告或功能请求。
/help显示可用斜杠命令的列表。
/model切换当前会话的 AI 模型。
/new开始一个新的聊天会话。
/sessions浏览、搜索和切换会话。

无头模式#

请谨慎使用无头模式,并在受控的 [沙盒环境](../../editor_extensions/security_considerations.md#use-development-containers-for-isolation) 中使用。

要在非交互模式下运行工作流,请根据您的设置使用相应的命令:

使用 glab duo cli run

shell
glab duo cli run --goal "Your goal or prompt here"

例如,您可以运行 ESLint 命令并将错误通过管道传递给 极狐GitLab Duo CLI 来解决:

shell
glab duo cli run --goal "Fix these errors: $eslint_output"

当您使用无头模式时,极狐GitLab Duo CLI:

  • 会绕过手动工具批准,自动批准所有工具的使用。
  • 不会保留之前对话的上下文。 每次执行 run 命令时都会开始一个新的工作流。

选择模型#

您可以为交互模式或无头模式选择模型。

交互模式#

您选择的模型会在多个会话间保持,并且您可以在对话中途切换模型,而不会丢失上下文。

前提条件:

  • 极狐GitLab Duo CLI 8.76.0 或更高版本。

要为交互模式选择模型:

  1. 在交互模式下,输入 /model 并按 Enter
  2. 使用方向键浏览可用模型列表,或者输入模型名称来筛选列表。
  3. 选择一个模型并按 Enter 来切换。

无头模式#

您选择的模型不会在会话间保持。

前提条件:

  • 极狐GitLab Duo CLI 8.68.0 或更高版本。

要为无头模式选择模型:

  1. 查找模型的 gitlab_identifier

  2. 在运行 极狐GitLab Duo CLI 时,将 --model 选项或 GITLAB_DUO_MODEL 环境变量设置为 gitlab_identifier 的值。

使用 --model 选项:

shell
glab duo cli --model <gitlab_identifier_for_the_model>

使用 GITLAB_DUO_MODEL 环境变量:

shell
GITLAB_DUO_MODEL=<gitlab_identifier_for_the_model> glab duo cli

例如,使用国内 SOTA 模型:

shell
glab duo cli --model gpt_5_codex
shell
GITLAB_DUO_MODEL=gpt_5_codex glab duo cli

使用 --model 选项:

shell
duo --model <gitlab_identifier_for_the_model>

使用 GITLAB_DUO_MODEL 环境变量:

shell
GITLAB_DUO_MODEL=<gitlab_identifier_for_the_model> duo

例如,使用国内 SOTA 模型:

shell
duo --model gpt_5_codex
shell
GITLAB_DUO_MODEL=gpt_5_codex duo

切换会话#

极狐GitLab Duo Chat 会话会存储您的对话历史和工作流数据,并在 极狐GitLab Duo CLI、极狐GitLab UI 和编辑器扩展之间共享。

例如,您可以在浏览器中开始一个对话,然后在您的终端中继续。

要浏览并切换到一个会话:

  1. 在交互模式下,输入 /sessions 并按 Enter
  2. 使用方向键浏览可用会话列表,或者输入文本来筛选列表。
  3. 选择一个会话并按 Enter

要在无头模式下切换到某个会话,请使用 --existing-session-id 选项。

Model Context Protocol (MCP) 连接#

要将 极狐GitLab Duo CLI 连接到本地或远程 MCP 服务器,请使用与 极狐GitLab IDE 扩展相同的 MCP 配置。有关说明,请参阅 配置 MCP 服务器

选项#

极狐GitLab Duo CLI 支持以下选项:

  • -C, --cwd <path>: 更改工作目录。
  • -h, --help : 显示 极狐GitLab Duo CLI 或特定命令的帮助信息。例如 duo --helpduo run --help
  • --log-level <level>: 设置日志级别 (debuginfowarnerror)。
  • -v, --version: 显示版本信息。
  • --enable-global-skills: (实验性) 启用 用户级 Agent 技能
  • --model <model>: 选择要用于会话的 AI 模型。

无头模式的额外选项:

  • --ai-context-items <contextItems>: JSON 编码的数组,包含用于参考的额外上下文条目。
  • --existing-session-id <sessionId>: 要恢复到已有会话的 ID。
  • --gitlab-auth-token <token>: 极狐GitLab 实例的认证令牌。
  • --gitlab-base-url <url>: 极狐GitLab 实例的基础 URL(默认值:https://jihulab.com)。

命令#

每种设置可用的命令如下:

  • glab duo cli: 启动交互模式。
  • glab duo cli log: 查看和管理日志。
    • glab duo cli log last: 打开最后一个日志文件。
    • glab duo cli log list: 列出所有日志文件。
    • glab duo cli log tail <args...>: 显示最后一个日志文件的尾部内容。 支持标准的 tail 参数。
    • glab duo cli log clear: 清除所有现有的日志文件。
  • glab duo cli run: 启动无头模式。

环境变量#

您可以使用环境变量配置 极狐GitLab Duo CLI:

  • DUO_WORKFLOW_GIT_HTTP_PASSWORD: Git HTTP 认证密码。
  • DUO_WORKFLOW_GIT_HTTP_USER: Git HTTP 认证用户名。
  • GITLAB_BASE_URLGITLAB_URL: 极狐GitLab 实例 URL。
  • GITLAB_DUO_MODEL: 用于会话的 AI 模型。
  • GITLAB_ENABLE_GLOBAL_SKILLS: (实验性) 启用 用户级 Agent 技能
  • GITLAB_OAUTH_TOKENGITLAB_TOKEN: 认证令牌。
  • LOG_LEVEL: 日志级别。

代理和自定义证书配置#

如果您的网络使用 HTTPS 拦截代理或需要自定义 SSL 证书,您可能需要进行额外配置。

代理配置#

极狐GitLab Duo CLI 遵循标准的代理环境变量:

  • HTTP_PROXYhttp_proxy: HTTP 请求的代理 URL。
  • HTTPS_PROXYhttps_proxy: HTTPS 请求的代理 URL。
  • NO_PROXYno_proxy: 逗号分隔的主机列表,这些主机将不通过代理。

自定义 SSL 证书#

如果您的组织使用了自定义的证书颁发机构 (CA),用于 HTTPS 拦截代理或类似用途,您可能会遇到证书错误。

plaintext
错误:无法验证第一个证书 错误:证书链中存在自签名证书

要解决证书错误,请使用以下方法之一:

  • 使用系统证书存储(推荐):

    • 如果您的 CA 证书已安装在操作系统证书存储中,请配置 Node.js 使用它。需要 Node.js 22.15.0、23.9.0 或 24.0.0 及更高版本。
    • 如果您在容器中运行 极狐GitLab Duo CLI,请将 CA 证书安装在容器内的系统存储中,而不是主机系统存储中。
    shell
    export NODE_OPTIONS="--use-system-ca"
  • 指定 CA 证书文件:

    • 对于较旧的 Node.js 版本,或者当 CA 证书不在系统存储中时,请直接 将 Node.js 指向证书文件。该文件必须是 PEM 格式。
    • 如果您在容器中运行 极狐GitLab Duo CLI,请将路径设置为容器内的位置。 使用卷挂载来提供证书文件。
    shell
    export NODE_EXTRA_CA_CERTS=/path/to/custom-ca.pem

忽略证书错误#

如果您仍然遇到证书错误,您可以禁用证书验证。

禁用证书验证会带来安全风险。 您不应在生产环境中禁用验证。

证书错误会提醒您潜在的安全漏洞,因此只有当您确信这样做是安全的时候,才应禁用证书验证。

前提条件:

  • 您已在浏览器中验证了证书链,或者您的管理员已确认可以安全地忽略此错误。

要禁用证书验证:

shell
export NODE_TLS_REJECT_UNAUTHORIZED=0

更新 极狐GitLab Duo CLI#

要手动将 极狐GitLab Duo CLI 更新到最新版本,请根据您的设置运行相应的命令:

shell
glab duo cli --update

为 极狐GitLab Duo CLI 做贡献#

有关为 极狐GitLab Duo CLI 做贡献的信息,请参阅 开发指南

相关主题#