文档

文档

GitHub Copilot CLI

Copilot CLI 的 BYOK 方式只需设置四个环境变量;根据 GitHub 自己的文档,完全不需要登录 GitHub。将它指向 Kunavo 后,代理会使用预付余额运行,而非 AI Credits;同时,/delegate、GitHub MCP 服务器和 GitHub Code Search 仍需通过该登录使用。

四个环境变量 — COPILOT_PROVIDER_BASE_URL、COPILOT_PROVIDER_TYPE、COPILOT_PROVIDER_API_KEY 和 COPILOT_MODEL — 将 Copilot CLI 切换到你自己的端点;GitHub 说明 BYOK 无需 GitHub 登录。

启动 copilot 时使用的 shell
# Set before you start Copilot CLI. Variable names and order are GitHub's;
# COPILOT_PROVIDER_BASE_URL and COPILOT_MODEL are the two marked Required.
export COPILOT_PROVIDER_BASE_URL=https://api.kunavo.com/v1   # see the note below
export COPILOT_PROVIDER_TYPE=openai                          # the default, shown for clarity
export COPILOT_PROVIDER_API_KEY=sk-kn-...
export COPILOT_MODEL=claude-sonnet-5

copilot
GitHub 没有说明 Copilot CLI 会附加哪个路径,因此上面的 /v1 是一个操作示例,而不是规则。 BYOK 页面仅将此字段定义为“模型提供商 API 端点的基础 URL”,其示例则指向两种不同格式:远程 OpenAI 兼容端点为 https://api.openai.com/v1,而 Ollama 和 Anthropic 使用不带路径的根地址。此页面采用远程 OpenAI 兼容格式,因为 Kunavo 属于这种情况。如果请求返回 404,说明后缀被重复添加了 — 请删除后缀并使用 https://api.kunavo.com。401 是密钥,而不是 URL;下文的 curl 会说明如何区分两者,然后再调试 CLI。
残留的 ~/.copilot/providers.json 会悄无声息地覆盖这些导出变量。 GitHub 的配置目录参考文档指出,如果该文件声明了任何 provider 或 model,它的优先级就高于 COPILOT_PROVIDER_* 环境变量,并将这些变量称为旧版配置;而 BYOK 操作指南从未提到这个文件。如果 CLI 忽略了你刚导出的基础 URL,请先检查该文件。同一参考文档仅将该文件描述为包含 providers 和 models 键的 JSON 对象,并未公布其架构,因此此处不提供示例;更多信息请参阅 GitHub 指向的 copilot help providers。
本配置依据 GitHub 自己的文档,于下方所示日期整理。Kunavo 尚未在其端点上运行过 Copilot CLI——没有会话、没有流式交互、没有工具往返调用;本文档系列中的其他客户端也都是如此。发布配置指南不等于进行过测试。GitHub 要求 BYOK 模型支持工具调用和流式传输,否则会返回错误,因此你交给它的第一个任务应当涉及文件操作,而不是只说声你好。
Kunavo 不提供嵌入、文本转语音或语音转文本模型,因此此端点只响应聊天轮次,其他功能均不支持。GitHub Code Search、GitHub MCP 服务器和 /delegate 是 BYOK 提供商无法替代的 GitHub 端功能——GitHub 文档说明,未登录时无法使用这些功能;你可以同时登录并配置提供商,以继续使用它们。
还没有密钥?创建 Kunavo 账户,创建一个密钥(以 sk-kn- 开头),并充值 $10 起——调用费用从该余额中扣除,失败的调用不会收费。随后,控制台会打开 GitHub Copilot CLI 设置页面。

分步操作

  1. 在 /app/keys 创建密钥并复制——它只会显示一次。
  2. 检查是否存在过时的 ~/.copilot/providers.json(或其 COPILOT_PROVIDERS_CONFIG 指向的文件)。如果其中声明了 provider 或 model,其优先级就高于第 3 步中的所有设置。
  3. 按上述方式导出 COPILOT_PROVIDER_BASE_URL、COPILOT_PROVIDER_API_KEY 和 COPILOT_MODEL。COPILOT_PROVIDER_TYPE 默认为 openai;GitHub 将其描述为适用于“任何其他兼容 OpenAI Chat Completions API 的端点”。
  4. 从同一个 shell 启动 copilot——这些变量会在启动时读取,因此较早打开的终端仍会使用旧值。
  5. 给它一个读取并编辑文件的任务。Copilot CLI 要求模型支持工具调用和流式传输,首次运行时同时验证这两项,比发送问候语更有参考价值。若要比较两个 id,可使用 --model 在单次运行中覆盖 COPILOT_MODEL。

已于 2026年9月21日 对照 GitHub 的《在 GitHub Copilot CLI 中使用自己的 LLM 模型》 检查。第三方设置会发生变化;如果这里的字段名称不再与你看到的内容一致,应以该页面为准,而不是本页。

这是简要版本。完整教程——包括模型选择、真实会话成本和失败模式——见 Copilot CLI 与 Claude Code——BYOK 的边界和两笔账单。

调试客户端前先验证

一个请求即可确定故障来自端点、密钥还是配置文件。如果返回 JSON,则相同的基础 URL 和密钥可以在 GitHub Copilot CLI 中使用。

# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
  -H "Authorization: Bearer sk-kn-..."

字段中应填写哪个模型 ID

每个文本模型都可通过模型 ID 访问——实时列表见 GET /v1/models,包含价格的目录见模型页面。费率单位为每 1M token 的美元,格式为输入 / 输出。

模型 IDKunavo 输入 / 输出它在 GitHub Copilot CLI 中的位置
claude-sonnet-5$1.40 / $7.00作为文件编辑会话默认工作模型
claude-opus-5$3.50 / $17.50规划一个出错代价高昂的变更
claude-haiku-4-5$0.70 / $3.50低成本调用——分诊、摘要,以及全天运行的循环
gpt-5-6-sol$2.00 / $12.00使用相同密钥和基础 URL,获得来自另一模型系列的第二种意见
计费方式是从预付余额中按 token 扣费,无月费——参见 计费。对于重复上下文——这正是编辑器或聊天客户端发送内容的大部分——提示缓存对账单的影响大于模型选择。

另一种方式:COPILOT_PROVIDER_TYPE=anthropic

GitHub 记录了三种提供商类型,Kunavo 支持其中两种线格式:/v1/chat/completions 对应 openai,/v1/messages 对应 anthropic。GitHub 页面上的 Anthropic 示例包含四条导出命令,其基础 URL 是不带路径的源站地址 https://api.anthropic.com:

  1. COPILOT_PROVIDER_TYPE=anthropic
  2. COPILOT_PROVIDER_BASE_URL——根据 GitHub 示例的形式,应使用不带后缀的 https://api.kunavo.com,因为 Anthropic 自身的路由位于该源站地址下的 /v1/messages,Kunavo 也与之保持一致。这里同样适用上文的说明:GitHub 展示的是示例,而非规则。
  3. COPILOT_PROVIDER_API_KEY——你的 sk-kn- 密钥。Kunavo 的 Messages 接口 接受 x-api-key 或 Authorization: Bearer 格式,因此 CLI 在此选择哪种请求头都可以读取。
  4. COPILOT_MODEL——提供商期望的 id。GitHub 示例使用了带连字符的 Anthropic 风格拼写,而其受支持模型列表则用点号书写相同系列;在 BYOK 模式下,id 会传递到你的端点,因此请使用上表中的拼写。

本页为何仍优先介绍 openai 类型:GitHub 文档没有说明 Anthropic BYOK 路径会转发 cache_control、anthropic-beta 还是特定的 anthropic-version。对于重复上下文而言,这会影响账单——参见提示缓存——本页不打算对文档未说明的答案作出假设。openai 类型没有这类未解之处,因此本页为其提供了完整的配置块。

常见问题

如何让 GitHub Copilot CLI 指向自定义 API 端点?

启动 CLI 前设置环境变量。GitHub 的 BYOK 页面将 COPILOT_PROVIDER_BASE_URL 和 COPILOT_MODEL 标记为必填项;对于需要身份验证的端点,还需设置 COPILOT_PROVIDER_API_KEY。COPILOT_PROVIDER_TYPE 默认为 openai;GitHub 将其描述为适用于 OpenAI、Ollama、vLLM、Foundry Local 以及任何其他兼容 OpenAI Chat Completions API 的端点。其他可选值为 azure 和 anthropic。GitHub 在别处记录了一项注意事项:如果 ~/.copilot/providers.json 声明了任何 provider 或 model,其优先级就高于所有这些环境变量。

Copilot CLI 的基础 URL 末尾需要加 /v1 吗?

GitHub 的文档没有明确这一点。该字段仅被定义为“模型提供商 API 端点的基础 URL”,而页面自身的示例指向两种可能:远程 OpenAI 兼容示例为 https://api.openai.com/v1,而 Ollama 和 Anthropic 示例使用不带路径的源站地址。对于 OpenAI 兼容端点,请先采用 GitHub 为该情况展示的形式——https://api.kunavo.com/v1;如果请求失败并返回 404 而不是 401,说明后缀被重复添加了,应将其去掉。404 表示 URL 有误,401 表示密钥有误;在排查 CLI 前,使用相同基础 URL 直接执行一次 curl 即可区分两者。

GitHub Copilot CLI 的 BYOK 是否需要 GitHub 账户?

不需要。GitHub 的身份验证文档指出,使用自有 LLM 提供商 API 密钥配置 Copilot CLI 后,无需 GitHub 身份验证,CLI 会直接连接到你配置的提供商。此时有三项功能不可用:/delegate、GitHub MCP 服务器和 GitHub Code Search。你也可以同时登录并配置提供商,以保留这两种使用方式。GitHub 还记录了 COPILOT_OFFLINE=true,可用于 CLI 完全不联系 GitHub 服务器的环境——不过只有在提供商为本地服务时才能实现网络隔离,因为远程基础 URL 仍会收到你的提示词和代码上下文。

Kunavo 是否已使用其端点测试过 GitHub Copilot CLI?

没有。本页的配置依据页面所示日期的 GitHub BYOK 官方文档整理,文中内容均不是运行时测试结果——没有会话、没有流式交互、没有工具往返调用;本文档系列中的其他客户端也都是如此。GitHub 要求 BYOK 模型支持工具调用和流式传输,否则会返回错误,因此最诚实的第一步是由你自己验证:运行一个读取并编辑文件的任务,并以记录的费用和 CLI 的行为作为证据,而不是以本页面为准。