Jer-y/copilot-proxy
GitHub: Jer-y/copilot-proxy
将 GitHub Copilot 订阅转化为本地兼容 OpenAI/Anthropic 标准的 API 服务,供 Claude Code、Codex 及各类 SDK 直接调用。
Stars: 35 | Forks: 16
English | [简体中文](README.zh-CN.md)
# Copilot API 代理
一个本地、单用户的适配器,通过兼容 OpenAI 和 Anthropic 的 API 将一个 GitHub Copilot 身份提供给 Claude Code、Codex、SDK 和自定义工具使用。
## 快速开始
前置要求:拥有个人版、商业版或企业版 Copilot 订阅的 GitHub 账户;如果使用 registry 发布版本则需要 Node.js >= 22.19.0,如果使用当前源码检出则需要 Git 和 Bun >= 1.3.6。运行 `setup codex` 还要求在 `PATH` 中存在 >= 0.134.0 版本的 Codex。
在一个空目录中,选择使用已发布的包或是当前的源码检出。要全局安装 registry 发布版本或仅运行一次而不安装:
```
npm install --global @jer-y/copilot-proxy@latest
copilot-proxy --help
copilot-proxy start
# One-shot 替代方案
npx --yes @jer-y/copilot-proxy@latest --help
npx --yes @jer-y/copilot-proxy@latest start
```
registry 的 `latest` 发布版本可能会滞后于当前检出,并且可能尚未提供 `setup`、`models` 或 `doctor` 命令。请检查所选版本的 `--help`,而不是假设这些命令存在。要使用下面文档中介绍的工作流,请在一个空目录中运行:
```
git clone https://github.com/Jer-y/copilot-proxy.git
cd copilot-proxy
bun install --frozen-lockfile
```
1. 为您使用的客户端运行 setup。选择其中一项:
bun run ./src/main.ts setup claude
bun run ./src/main.ts setup codex
bun run ./src/main.ts setup openai-sdk
Setup 会进行身份验证,选择并探测直连路由,随后打印配置信息,但不会写入客户端配置文件。它可能会更新 copilot-proxy 自身的认证数据,但不会保存或启动生成的客户端配置。HTTP 资格校验会将非空的实时 `supported_endpoints` 列表视为权威依据,否则可能会使用内置的代理策略;而 WebSocket 始终需要明确的实时 `ws:/responses` 支持。这些资格校验输入并不是对路由或语义的实时证明——探测才是。Codex 还有额外的已安装版本和模型元数据检查;请参阅 [快速入门](docs/getting-started.md)。
2. 在另一个终端中使用 setup 打印的确切命令启动 proxy。对于默认的源码设置,等效的简写形式为:
bun run ./src/main.ts start --preset personal
3. 应用生成的配置。您可以使用以下命令检查当前的模型目录或诊断正在运行的服务:
bun run ./src/main.ts models --client codex
bun run ./src/main.ts doctor --client codex
在适用的情况下,将 `codex` 替换为 `claude` 或 `openai-sdk`。配置安全性、非交互式使用和故障排除详见 [快速入门](docs/getting-started.md)。
## 功能特性
| 领域 | 概述 |
| --- | --- |
| 兼容 OpenAI 的 API | Chat Completions、基于 HTTP/SSE 的 Responses、Models 和 Embeddings |
| 兼容 Anthropic 的 API | 消息和 token 计数,具备模型感知的直连路由 |
| Responses WebSocket | 由明确的实时 `ws:/responses` 元数据控制的 Native transport |
| 路由 | 优先使用直连路由;仅在能够保留意图的情况下使用有限的转换 |
| 运维 | 客户端设置、模型检查、健康诊断、服务管理以及诊断仪表板 |
功能可用性取决于当前的 Copilot 账户、模型、端点和传输方式。请阅读 [协议兼容性](docs/protocol-compatibility.md) 了解契约和限制,以及 [能力验证](docs/copilot-capability-validation.md) 了解需要验证的内容、如何运行验证以及如何解读结果。
## 产品边界
## 文档
使用[文档索引](docs/README.md)按任务继续操作。安全边界和私密漏洞报告记录在[安全策略](SECURITY.md)中。
## 开发说明
源码开发需要 Bun >= 1.3.6。
```
bun install --frozen-lockfile
bun run dev
bun run build
bun run typecheck
bun run lint
bun test
bun run test:coverage
bun run knip
bun run audit
```
在更改受上游限制的行为时,请使用 [能力验证](docs/copilot-capability-validation.md) 文档中记录的针对性实时验证命令。
## 致谢
最初基于 [ericc-ch/copilot-api](https://github.com/ericc-ch/copilot-api);此后代码库已进行了全面重构。
标签:MITM代理, 暗色界面, 自动化攻击