对 GitHub Copilot API 进行逆向代理为一个与 OpenAI 和 Anthropic 兼容的服务

对 GitHub Copilot API 进行逆向代理为一个与 OpenAI 和 Anthropic 兼容的服务
三水番前言
本文演示如何将 GitHub Copilot API 通过一个反向工程代理转换为兼容 OpenAI Chat Completions 与 Anthropic Messages 的统一接口。完成部署后,您可以在 IDE 插件、OpenAI 兼容 SDK、Claude Code 等任意支持上述协议的工具中无缝调用 Copilot 模型。
快速概览
- 适用场景:需要统一 AI 接口、复用 Copilot 模型能力的个人或团队。
- 输出成果:一个监听
4141端口的 HTTP 服务,兼容 OpenAI / Anthropic API 语义。 - 核心依赖:Bun 运行时、GitHub Copilot 订阅、Linux 服务器、systemd 常驻。
- 安全建议:放置在受控网络中,结合反向代理的 Basic Auth、IP 白名单或 HTTPS。
准备工作
| 准备项 | 说明 |
|---|---|
| 服务器环境 | 推荐 Ubuntu / Debian 云服务器,具备稳定网络(魔法或外网)与 1GB+ 内存。 |
| GitHub Copilot 订阅 | 绑定的 GitHub 账号需具备 Copilot 权限(我是学生申请的 GitHub Pro),否则无法交换设备码。 |
| 域名(可选) | 例如 copilot.yourdomain.com,配合反向代理暴露统一入口。 |
| DNS & SSL(可选) | 将域名解析到服务器并申请证书,保障公网访问的加密需求。 |
| 反向代理(可选) | 准备 Nginx / Caddy,方便做限流、鉴权、日志审计。 |
克隆仓库与安装依赖
1. 克隆项目代码
建议在 ~/claude 目录中(自己创建)完成全部操作,便于后续维护:
1 | mkdir -p ~/claude && cd ~/claude |
2. 安装 Bun 并拉取依赖
若系统尚未安装 Bun,可使用官方一键脚本:
1 | curl -fsSL https://bun.sh/install | bash |
随后在项目目录执行:
1 | bun install |
终端会输出 Bun 版本、git hooks 配置及依赖清单,确认 455 packages installed(或类似字样)即代表安装完成。
提示:如服务器无法直接访问外网,可提前配置 HTTP(S) 代理或替换为离线镜像源。
首次启动与设备码登录
在项目根目录执行:
1 | bun run ./src/main.ts start |
首次运行会提示访问 https://github.com/login/device 并输入形如 071B-EF53 的设备码。浏览器授权完成后,终端会输出登录状态、模型清单与监听端口信息,并附带 Usage Viewer 入口:
1 | ℹ Logged in as loveashui |
提示:首次授权后凭据会写入
~/.local/share/copilot-api。若需要更换账号,删除该目录即可重新登录。
此时服务处于前台运行,关闭终端会话后进程即终止。下一节将其改造成 systemd 常驻服务。
配置 systemd 实现常驻
systemd 能够在服务器重启后自动拉起进程,并在异常退出时自愈。建议按照以下步骤完成部署。
1. 完成一次认证
- 交互式:执行
bun run ./src/main.ts auth,系统会将凭据写入/root/.local/share/copilot-api。 - 非交互式:准备
GH_TOKEN并在 systemd 服务中以环境变量方式注入,适合无头环境。
2. 创建 service 文件
1 | cat > /etc/systemd/system/copilot-api.service <<'EOF' |
3. 设置权限并验证语法
1 | chmod 644 /etc/systemd/system/copilot-api.service |
4. 重新加载并启动
1 | systemctl daemon-reload |
systemctl status 会显示实时进程信息、内存占用及当前监听状态,便于确认服务是否成功拉起。
5. 跟踪实时日志
1 | journalctl -u copilot-api -f |
日志中同样会输出 Usage Viewer 链接与模型列表,可作为健康检查的参考指标。
排障建议:如
systemd-analyze verify或systemctl status出现报错,优先检查 Bun 绝对路径、WorkingDirectory 是否准确,以及GH_TOKEN是否具备 Copilot 权限。
常见问题排查
- 端口占用:修改 service 中的
--port,并同步更新反向代理或安全组策略。 - 认证失效:删除
~/.local/share/copilot-api后重新执行bun run ./src/main.ts auth;或刷新GH_TOKEN。 - 无法联网:为 systemd 服务注入
HTTP_PROXY / HTTPS_PROXY环境变量或在服务器层面放行网络。 - 客户端 401/403:确认反向代理未剥离
Authorization头,并保证请求路径与 OpenAI/Anthropic 规范一致。
结语与下一步
- 通过上述步骤,Copilot Proxy 已以 OpenAI / Anthropic 兼容格式稳定运行,可直接在 SDK、IDE、应用后台中复用。
- 建议在前端反向代理中增加 Basic Auth、IP 白名单,并启用 HTTPS,防止 Token 泄露。
- 可结合官方 Usage Viewer
https://ericc-ch.github.io/copilot-api?endpoint=http://localhost:4141/usage观察实时用量。 - 若计划暴露公网,请配套审计、限流与凭据信息脱敏策略,降低账号风险。







.png)