在服务器上直接使用 GitHub Copilot 的 Claude 模型时,经常遇到各种不稳定的问题——VPN 断连、代理配置繁琐、网络超时等。如前文所述,在 VSCode Copilot 插件中使用 Claude 模型需要配置较为复杂的代理网络环境,且在网络不稳定时请求容易失败。

相反, Windows 工作站网络环境相对干净,Windows 上的 VSCode 可以直接使用 Claude 模型,因此选择在 Windows 上启动这个 API 网关,再让服务器上的各工具通过内网地址统一接入。

此外,我不习惯 copilot 的使用,如果能将其 token 用在 Claude Code/OpenCode/Droid 等 coding agent 中,将更加得心应手。
caozhiyuan/copilot-api 能够把 GitHub Copilot 的模型额度转化为标准的 OpenAI / Anthropic 兼容 API,统一用一个 base URL + API Key 的形式对外提供服务,让所有的 Agent 应用都能直接接入,非常的爽。本文介绍其安装和配置过程


原理

整体架构

1
2
3
4
5
6
7
8
9
你的工具(Claude Code / OpenCode / Droid 等)
↓ 发送 OpenAI 或 Anthropic 格式的请求
copilot-api 代理(localhost:4141)
↓ 伪装成 VSCode Copilot 插件,调用 GitHub Copilot 内部 API
GitHub Copilot 后端(api.githubcopilot.com)
↓ 返回真实模型响应(GPT-5、Claude Sonnet 等)
copilot-api 代理(格式转换)
↓ 翻译回 OpenAI / Anthropic 格式
你的工具收到结果

① 认证:伪装成 VSCode Copilot 插件

启动时,代理会模拟 VSCode + GitHub Copilot 插件的行为,向 GitHub 证明自己是一个合法的 VSCode 客户端:

身份信息 来源
VSCode 版本号 硬编码为 1.110.1
vscode-machineid 本机网卡 MAC 地址的 SHA256 哈希
Device ID 优先读取本机真实 VSCode 存储的 Device ID,否则生成新 UUID
vscode-sessionid 每次启动随机生成,每小时自动刷新
插件版本 硬编码为 copilot-chat/0.38.2

所有请求都会携带这些伪装 Header,让 GitHub 以为是正常的 VSCode 客户端在使用 Copilot。

② 格式翻译(双向)

1
2
请求方向:Anthropic 格式 → OpenAI 格式 → Copilot 内部格式
响应方向:Copilot 格式 → OpenAI 格式 → Anthropic 格式

对于 Claude 系列模型,代理会优先走 Copilot 原生的 /v1/messages 端点,保留 Anthropic 原生语义,而不是绕道 /chat/completions

③ 模型列表

代理启动后会从 GitHub Copilot 拉取模型列表,只保留 model_picker_enabled === true 的模型。Claude 模型是否出现,完全取决于你的 GitHub Copilot 订阅计划——需要 Copilot Pro+ 或 Business/Enterprise 才能访问 Claude 系列模型。

对外暴露的 API 端点

所有端点的 base URL 统一为 http://<your-ip>:<port>/v1,OpenAI SDK 和 Anthropic SDK 都用这一个地址。

格式 端点
OpenAI POST /v1/chat/completions
OpenAI POST /v1/responses
OpenAI GET /v1/models
OpenAI POST /v1/embeddings
Anthropic POST /v1/messages
监控 GET /usage

不支持 Gemini 格式,只支持 OpenAI 和 Anthropic 两种格式。


安装与使用

前提条件

  • 拥有 GitHub Copilot 订阅(个人/企业均可)
  • 安装 Bun(>= 1.2.x)或 Node.js(用于 npx
1
2
3
# 验证 Node.js 是否安装成功
node -v
npx -v

方式一:使用 npx(最简单,无需安装)

无需克隆项目,直接运行。首次启动会引导完成 GitHub OAuth 登录,代理默认监听 http://localhost:4141

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 直接启动代理服务(首次运行会引导 GitHub OAuth 登录)
npx @jeffreycao/copilot-api@latest start

# 指定端口启动
npx @jeffreycao/copilot-api@latest start --port 8080

# 直接传入 GitHub Token 启动
npx @jeffreycao/copilot-api@latest start --github-token ghp_YOUR_TOKEN_HERE

# 企业版账户
npx @jeffreycao/copilot-api@latest start --account-type enterprise

# 仅进行 GitHub 授权(不启动服务)
npx @jeffreycao/copilot-api@latest auth

# 查看 Copilot 用量/配额
npx @jeffreycao/copilot-api@latest check-usage

Windows PowerShell 用户注意:PowerShell 中 curlInvoke-WebRequest 的别名,测试接口时请使用 curl.exe 以调用真正的 curl。

方式二:源码安装(使用 Bun)

适合需要自定义修改或希望本地管理版本的场景。

1
2
3
4
5
6
7
8
9
# 克隆项目
git clone https://github.com/caozhiyuan/copilot-api.git
cd copilot-api

# 安装依赖
bun install

# 启动服务
bun start

方式三:使用 Docker

适合部署在服务器上长期运行的场景,Token 数据通过挂载目录持久化。

1
2
3
4
5
6
7
8
9
# 构建镜像
docker build -t copilot-api .

# 运行(挂载数据目录,保证 Token 持久化)
mkdir -p ./copilot-data
docker run -p 4141:4141 -v $(pwd)/copilot-data:/root/.local/share/copilot-api copilot-api

# 或直接传入 GitHub Token(适合 CI/CD 或无交互环境)
docker run -p 4141:4141 -e GH_TOKEN=your_github_token_here copilot-api

Docker Compose 示例:

1
2
3
4
5
6
7
8
9
version: "3.8"
services:
copilot-api:
build: .
ports:
- "4141:4141"
environment:
- GH_TOKEN=your_github_token_here
restart: unless-stopped

配置 API Key(推荐)

默认无需认证,局域网内任何人都可以调用你的 Copilot 额度。建议配置 API Key 进行保护。

编辑配置文件:

  • Linux / macOS:~/.local/share/copilot-api/config.json
  • Windows:C:\Users\<用户名>\.local\share\copilot-api\config.json
1
2
3
4
5
{
"auth": {
"apiKeys": ["your-secret-key"]
}
}

保存后重启服务生效。配置后所有请求需携带 Header:

1
Authorization: Bearer your-secret-key

测试是否正常工作

Linux / 内网其他机器:

1
2
3
4
curl -X POST http://<your-ip>:4141/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-secret-key" \
-d '{"model":"claude-sonnet-4.6","messages":[{"role":"user","content":"你好"}],"stream":false}'

Windows PowerShell(先创建请求体文件 body.json):

1
{"model":"claude-sonnet-4.6","messages":[{"role":"user","content":"你好"}],"stream":false}
1
2
3
4
curl.exe -X POST http://localhost:4141/v1/chat/completions `
-H "Content-Type: application/json" `
-H "Authorization: Bearer your-secret-key" `
-d "@C:\Users\<你的用户名>\Desktop\body.json"

在 Claude Code / OpenCode / Droid 中使用

将工具的 API 地址指向本机代理即可:

配置项
Base URL http://<your-ip>:4141/v1
API Key your-secret-key(未设置则填任意字符)
模型 claude-sonnet-4.6 / gpt-5.4

参考资料