# 用 Router One Key 运行 GitHub Copilot CLI（BYOK）

> https://router.one/zh/integrations/copilot-cli 的 Markdown 镜像，供 AI 助手与爬虫使用。Router One 是 OpenAI 兼容的统一 LLM API 网关。
> 最后更新：2026-09-29

GitHub Copilot CLI（copilot 命令，npm 包 @github/copilot）可以把模型请求发到你自己配置的 provider，而不是 GitHub 托管的模型：启动前设置几个 COPILOT_PROVIDER_* 环境变量，就能指向 OpenAI 兼容、Azure OpenAI 或 Anthropic 端点。把 Router One 配置为 openai 类型、走 Chat Completions 的 provider，一把 Key 就能让 CLI 的 agent 及其内置 subagent 用上目录中的 Claude、GPT、Gemini、Grok 和 DeepSeek 对话模型，每一轮调用都是控制台 → 日志里的一条计费请求。按 GitHub 更新日志（2026-04-07），使用自己的模型 provider 时不需要 GitHub 登录。按 Copilot CLI 1.0.89（2026-09-28 发布）与 GitHub 的 BYOK 文档核对（2026-09-29）。

## 安装 Copilot CLI 1.0.89，并创建专用 Key

用 npm 安装（需要 Node.js 22 或更高版本）：npm install -g @github/copilot。GitHub 文档还给出了 Homebrew（brew install --cask copilot-cli）、WinGet（winget install GitHub.Copilot）以及 macOS 与 Linux 的安装脚本（curl -fsSL https://gh.io/copilot-install | bash）。1.0.89 于 2026-09-28 发布。然后在控制台 → API 密钥点「创建密钥」，为 CLI 单独建一把 Key 并设置 maxSpend 上限。CLI 以 agent 方式工作，每一轮模型调用都是一次请求，内置的 subagent（explore、task 与 code-review）也沿用同一套 provider 配置，所以一个任务可能产生很多次计费请求；这个上限就是硬性止损，专用 Key 也便于在日志里集中查看。

## 把 GitHub Copilot CLI 配置到 Router One base URL

在启动 CLI 的 shell 中设置 provider 变量，然后运行 copilot。COPILOT_PROVIDER_BASE_URL 填 https://api.router.one/v1，与 GitHub 自己的 OpenAI 示例写法一致。COPILOT_PROVIDER_TYPE 可以不设，或设为 openai——GitHub 文档说明这一类型适用于任何兼容 OpenAI Chat Completions 的端点。请显式设置 COPILOT_PROVIDER_WIRE_API=completions：GitHub 文档介绍了这个变量，但没有写明它在这一类型下的默认值，第三方的说法也不一致；显式指定后，每个请求都走 POST /v1/chat/completions，这个端点覆盖全部对话模型。Key 填在 COPILOT_PROVIDER_API_KEY，COPILOT_MODEL 填精确的目录 ID，也可以用 --model 传入。按 GitHub 文档，模型必须支持工具调用和流式输出，上下文窗口最好不少于 128k tokens。provider 配置无效时 CLI 会报错；按 GitHub 更新日志，它不会悄悄退回 GitHub 托管的模型。bash 或 zsh 的写法如下：

`terminal`

```bash
# GitHub Copilot CLI → Router One (bash / zsh)
export COPILOT_PROVIDER_BASE_URL=https://api.router.one/v1
export COPILOT_PROVIDER_TYPE=openai
export COPILOT_PROVIDER_WIRE_API=completions
export COPILOT_PROVIDER_API_KEY=sk-your-router-one-key
export COPILOT_MODEL=anthropic/claude-sonnet-5
copilot
```

## 每个 Router One 模型 ID 该用哪种 provider 类型与 wire API

Router One 在 Chat Completions 上提供全部对话模型，所以上面的配置可以填 Claude、GPT、Gemini、Grok 与 DeepSeek 的 ID。另外还有两种组合。设置 COPILOT_PROVIDER_WIRE_API=responses 时，CLI 调用 POST /v1/responses，Router One 在这个端点上原生提供 GPT 系列、DeepSeek V4 与 Grok 对话模型；Claude ID 发到这里会在调用任何模型之前被 HTTP 400 拒绝（model '<id>' must be called via /v1/messages or /v1/chat/completions）。设置 COPILOT_PROVIDER_TYPE=anthropic 时，Base URL 填主机根地址 https://api.router.one（与 GitHub 的 Anthropic 示例使用 Anthropic API 主机根的写法一致），CLI 改用 Anthropic Messages，Router One 在这个端点上提供 Claude 系列与 DeepSeek V4 的 ID；其他对话模型会收到提示 must be called via /v1/chat/completions 的 400。无论哪种组合，都请优先选模型页标明支持工具调用的 ID，并在开始长任务之前先试一次工具调用。

| provider 类型与 wire API | COPILOT_PROVIDER_BASE_URL | 适用的 Router One 模型 ID |
| --- | --- | --- |
| openai + completions（推荐） | https://api.router.one/v1 | 目录中的全部对话模型：Claude、GPT、Gemini、Grok 与 DeepSeek 的 ID |
| openai + responses | https://api.router.one/v1 | GPT 系列 ID（含 azure/gpt-… 渠道 ID），以及 deepseek-v4.1-flash、deepseek-v4-flash 与 Grok 对话模型 ID |
| anthropic | https://api.router.one | Claude 系列 ID（含 aws/claude-… 与 vertex/claude-… 渠道 ID），以及 deepseek-v4.1-flash、deepseek-v4-flash |

## Token 上限：MODEL_ID、MAX_PROMPT_TOKENS 与 MAX_OUTPUT_TOKENS

按 GitHub 文档，CLI 通过一个「well-known」模型名识别模型能力和 Token 上限，这个名字可以由 COPILOT_PROVIDER_MODEL_ID 提供；实际发给 provider 的模型名则来自 COPILOT_MODEL，设置了 COPILOT_PROVIDER_WIRE_MODEL 时以它为准。文档没有列出哪些名字算 well-known，也没有说明 anthropic/claude-sonnet-5 这类带厂商前缀的 Router One ID 能否被识别，所以本指南不去猜 COPILOT_PROVIDER_MODEL_ID，而是直接设置上限。GitHub 文档把 COPILOT_PROVIDER_MAX_PROMPT_TOKENS 说明为单次请求允许的最大 prompt Token 数：请让它不超过该模型在 Router One 详情页上的上下文窗口（anthropic/claude-sonnet-5 为 1048576，deepseek-v4.1-flash 为 1000000），并记住每个输入 Token 都计费。对于模型页列出长上下文价格（整次请求按该价格计费）的 ID，例如输入超过 272,000 Token 的 openai/gpt-5.6-sol，按 GitHub 的说明，把它设在门槛以下应能让 prompt 保持在门槛之内；CLI 如何执行这个上限，文档没有说明。COPILOT_PROVIDER_MAX_OUTPUT_TOKENS 是你为每次回复自定的上限；CLI 在 completions wire 上用哪个字段发送它，文档没有说明，而 Router One 的 Chat Completions 参考文档写的输出上限字段是 max_tokens。除非想要更低的上限，否则不必设置。

`terminal`

```bash
# 可选：自定 prompt 上限，不超过模型页上的上下文窗口
export COPILOT_PROVIDER_MAX_PROMPT_TOKENS=200000
```

## 为什么本指南保持使用 completions wire

Copilot CLI 1.0.64 为 BYOK 的 OpenAI 兼容 provider 加入了 WebSocket Responses 支持。Router One 的 /v1/responses 通过 HTTP 流式返回，没有 WebSocket 模式；GitHub 文档也没有说明 CLI 何时在 responses wire 上使用 WebSocket、是否会退回 HTTP，所以推荐配置保持 COPILOT_PROVIDER_WIRE_API=completions。如果你用 GPT ID 试了 responses wire，而请求在任何输出之前就失败，请改回 completions。CLI 的更新日志说，从 1.0.13 起它的推理强度设置也适用于自带模型的 provider。请求带有 reasoning_effort 时，对 Claude 系列 ID，Router One 不会把它转换为 thinking 设置；Claude Opus 5.5 例外，会映射到 output_config.effort。其他模型可能忽略它，也可能以 400 拒绝请求，所以修改后请到日志里看下一次请求的状态。

## 哪些请求会走你的 Key，以及如何看日志

配置 Router One provider 后，CLI agent 的每一轮模型调用都是这把 Key 上的一次请求，内置的 explore、task 与 code-review subagent 的调用也包括在内。登录 GitHub 是可选的：登录后可以使用 /delegate、GitHub 代码搜索和 GitHub MCP server 等 GitHub 功能，而模型请求仍然发往 Router One。按 GitHub 更新日志，COPILOT_OFFLINE=true 会让 CLI 不再联系 GitHub 的服务器并关闭遥测；你的 prompt 和代码上下文仍会发到 Router One，它是一个远程 provider。在控制台 → 日志中按 CLI 专用的 Key 筛选：每条记录显示模型、Token、费用、状态、总耗时，以及产生过输出的流式请求的首字延迟（TTFT）。401 表示 Key 缺失或错误，402 表示钱包余额或该 Key 的 maxSpend 已用完，400 且提示 must be called via 说明当前的 provider 类型或 wire API 不服务这个 ID。

## GitHub Copilot CLI 该填哪个模型 ID？

从 /models 页复制精确的模型 ID，保留大小写、连字符和版本后缀，不要用展示名称代替。打开该模型的详情页，核对支持的 API 端点、上下文窗口和工具调用等能力，再与 GitHub Copilot CLI 当前选择的 provider 和功能对应。模型出现在目录里，不等于当前客户端能调用它的所有功能。建议为每个客户端或应用单独建 API Key，并设置 maxSpend 消费上限。

## GitHub Copilot CLI 用的是哪种 API 协议？

OpenAI 兼容描述的是接口格式，不能据此推断 Chat Completions（/v1/chat/completions）、Responses（/v1/responses）和 Anthropic Messages（/v1/messages）可以互换。先核对工具当前版本、provider 配置和实际请求路径，再查模型详情与 API 兼容性事实页。一次普通对话成功，也不能证明服务端工具、历史状态或文件编辑功能都受支持。

## 在请求日志里核对 GitHub Copilot CLI 的调用

先在 GitHub Copilot CLI 发出一次简单文本请求，再到控制台 → 日志按时间、模型和 request_id 找到这条记录，核对 Token、花费、总耗时和状态码。成功后再分别验证流式输出、工具调用和多轮历史。失败时保留实际请求路径、完整错误消息及 request_id；没有对应日志时，先查客户端配置和网络，不能仅凭客户端报错认定是网关或上游故障。

## 常见问题

### 用 BYOK 需要 GitHub 账号或 Copilot 订阅吗？

模型请求本身不需要。GitHub 更新日志（2026-04-07）写明，使用自己的模型 provider 时不需要 GitHub 认证，所以只设置 provider 变量就能启动 CLI，请求由 Router One 按你的 Key 计费。登录 GitHub 是可选的，登录后可以使用 /delegate、GitHub 代码搜索和 GitHub MCP server 等 GitHub 功能。

### 怎样让这些设置在新终端里也生效？

把 export 这几行写进 shell 配置文件（~/.zshrc 或 ~/.bashrc），再新开一个终端。在 Windows 上，用 [System.Environment]::SetEnvironmentVariable 逐个设置，例如 ("COPILOT_PROVIDER_BASE_URL", "https://api.router.one/v1", "User")，然后新开一个 PowerShell 窗口。CLI 在启动时读取这些变量，正在运行的会话会继续使用原来的 provider。不要把 Key 放进共享的 dotfile 仓库。

### 可以改用 anthropic provider 类型来跑 Claude 吗？

可以：设置 COPILOT_PROVIDER_TYPE=anthropic、COPILOT_PROVIDER_BASE_URL=https://api.router.one，并使用 Claude 系列或 DeepSeek V4 的 ID，CLI 就会改用 Anthropic Messages。它的 1.0.66 更新日志说，CLI 会按 Anthropic 模型选择 thinking 模式；对于它可能不认识的带厂商前缀的 ID 会怎样处理，文档没有说明。如果请求失败并返回提到 thinking 的 400，请改回 openai 类型：Router One 在 Chat Completions 上同样提供这些 Claude ID。

### CLI 提示模型不支持工具调用或流式输出，怎么办？

Copilot CLI 两者都需要；按 GitHub 文档，模型缺少其中任何一项时 CLI 会报错。请选择 /models 详情页标明支持工具调用的对话 ID；截至 2026-09-29，目录中凡是列出工具调用的 ID 也都列出了流式输出。图像生成 ID 以及模型页没有列出任何能力的 ID，都不适合用在 CLI 里。

### 这与 VS Code 的 GitHub Copilot 接入指南有什么不同？

那份指南针对 VS Code 中的 Copilot Chat，Router One 以 Custom Endpoint provider 的形式添加。CLI 读取的是 COPILOT_PROVIDER_* 环境变量，两者不共享配置，需要分别设置；它们可以共用同一把 Router One Key，也可以各用一把，便于在日志里分开核对费用。

### GitHub Copilot CLI 能通过网关用哪些模型？

选用当前目录中同时支持 GitHub Copilot CLI 所用端点和所需功能的模型。精确 ID、当前单价与能力以 /models 及模型详情为准；不要仅按 GPT、Claude 等系列名判断兼容性。客户端能列出模型，只说明它从自身配置或 GET /v1/models 读到了这个 ID，仍需验证实际调用。

### 能列出模型，但调用报 400 或 404，怎么办？

先记录实际请求路径和错误消息，再核对精确模型 ID。400 可能是参数、工具类型或模型与端点不匹配；404 可能是请求路径或资源不存在，不能直接判定模型下线。若错误提示 must be called via，按它指明的端点调整客户端 provider，或换用支持当前端点的模型。不要在所有工具里统一增删 /v1 或 /chat/completions。

### 中国大陆能直连吗？

能。CLI 发往 Router One 的模型请求在中国大陆无需 VPN，配置与其他地区相同。安装 CLI 需要经由 npm、Homebrew、WinGet 或 GitHub 上的下载；除非设置了 COPILOT_OFFLINE=true，CLI 还会联系 GitHub 的服务器，这些环节取决于你的网络能否访问它们。

### 报 401/402/403/429 怎么排查？

先到控制台 → 日志核对这条请求及错误消息。401 查 Key 是否传入和有效；402 查钱包余额与 maxSpend；403 查 Key 权限和访问限制；429 查请求频率、token 限额及上游限流，按错误来源处理。保留 request_id，再按错误码速查页逐项排查。

## 相关页面

- 全部接入指南：https://router.one/zh/integrations
- GitHub Copilot CLI 的 API 错误排查：https://router.one/zh/llm-api-error-codes
- API 兼容性：端点与功能对照：https://router.one/zh/facts/api-compatibility.md
- Responses API 配置与限制：https://router.one/zh/codex-responses-api
- Cherry Studio 接入：https://router.one/zh/integrations/cherry-studio
- Chatbox 接入：https://router.one/zh/integrations/chatbox
- VS Code 中的 GitHub Copilot：Custom Endpoint：https://router.one/zh/integrations/github-copilot
- GitHub Copilot BYOK vs Continue vs Cline：VS Code 一把 Key 全接入：https://router.one/zh/blog/github-copilot-byok-vs-continue-vs-cline
- Hermes Agent：同一把 Key 的另一款终端 agent：https://router.one/zh/integrations/hermes-agent
- 所有编程工具走同一个网关：https://router.one/zh/use-cases/ai-coding-tools
- GitHub 文档：在 Copilot CLI 中使用自己的模型 provider：https://docs.github.com/zh/copilot/how-tos/copilot-cli/customize-copilot/use-byok-models
- GitHub Changelog：Copilot CLI 支持 BYOK 与本地模型：https://github.blog/changelog/2026-04-07-copilot-cli-now-supports-byok-and-local-models/
- Copilot CLI 更新日志：https://github.com/github/copilot-cli/blob/main/changelog.md
- 统一 LLM API 网关概览：https://router.one/zh/llm-api-gateway
- OpenAI 兼容 API：https://router.one/zh/openai-compatible-api
- API 文档：https://router.one/zh/docs
- 本页规范地址：https://router.one/zh/integrations/copilot-cli
- 模型与每模型 token 价格：https://router.one/zh/models （markdown：https://router.one/zh/models.md ）
- 定价：https://router.one/zh/pricing
- API 文档（markdown）：https://router.one/zh/docs.md
- 公司事实（markdown）：https://router.one/zh/facts/company.md
