【实用工具】将 GitHub Copilot 额度转化为 OpenAI/Anthropic 兼容的 API
在服务器上直接使用 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 | 你的工具(Claude Code / OpenCode / Droid 等) |
① 认证:伪装成 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 | 请求方向:Anthropic 格式 → OpenAI 格式 → Copilot 内部格式 |
对于 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 两种格式。
安装与使用
前提条件
1 | # 验证 Node.js 是否安装成功 |
方式一:使用 npx(最简单,无需安装)
无需克隆项目,直接运行。首次启动会引导完成 GitHub OAuth 登录,代理默认监听 http://localhost:4141。
1 | # 直接启动代理服务(首次运行会引导 GitHub OAuth 登录) |
Windows PowerShell 用户注意:PowerShell 中
curl是Invoke-WebRequest的别名,测试接口时请使用curl.exe以调用真正的 curl。
方式二:源码安装(使用 Bun)
适合需要自定义修改或希望本地管理版本的场景。
1 | # 克隆项目 |
方式三:使用 Docker
适合部署在服务器上长期运行的场景,Token 数据通过挂载目录持久化。
1 | # 构建镜像 |
Docker Compose 示例:
1 | version: "3.8" |
配置 API Key(推荐)
默认无需认证,局域网内任何人都可以调用你的 Copilot 额度。建议配置 API Key 进行保护。
编辑配置文件:
- Linux / macOS:
~/.local/share/copilot-api/config.json - Windows:
C:\Users\<用户名>\.local\share\copilot-api\config.json
1 | { |
保存后重启服务生效。配置后所有请求需携带 Header:
1 | Authorization: Bearer your-secret-key |
测试是否正常工作
Linux / 内网其他机器:
1 | curl -X POST http://<your-ip>:4141/v1/chat/completions \ |
Windows PowerShell(先创建请求体文件 body.json):
1 | {"model":"claude-sonnet-4.6","messages":[{"role":"user","content":"你好"}],"stream":false} |
1 | curl.exe -X POST http://localhost:4141/v1/chat/completions ` |
在 Claude Code / OpenCode / Droid 中使用
将工具的 API 地址指向本机代理即可:
| 配置项 | 值 |
|---|---|
| Base URL | http://<your-ip>:4141/v1 |
| API Key | your-secret-key(未设置则填任意字符) |
| 模型 | claude-sonnet-4.6 / gpt-5.4 等 |
参考资料
- caozhiyuan/copilot-api GitHub 仓库: https://github.com/caozhiyuan/copilot-api
