backgroundbackground

用 GitHub Copilot 驱动 Claude Code、OpenCode 和 Codex

GitHub Copilot / @jeffreycao/copilot-api / Claude Code / OpenCode / Codex

教程

2026-03-28 10:44

GitHub Copilot 最大的问题,不是模型不够,而是入口太少。@jeffreycao/copilot-api 把 Copilot 包成一个本地代理,直接暴露 OpenAI / Anthropic 兼容接口。结果就是:你可以继续按月付 Copilot,但真正拿它去喂 Claude Code、OpenCode、Codex 这些更顺手的客户端。

开源地址:caozhiyuan/copilot-api

一、先把代理跑起来

只要本机有 Node.js,就可以直接起服务:

npx @jeffreycao/copilot-api@latest start

第一次运行会拉起 GitHub OAuth 授权。登录完成后,终端会打印出本地代理地址,默认是 http://localhost:4141,同时还会给出一个 Usage Dashboard 链接。

如果你还想记录更完整的 token usage 历史,最好用 Node.js >= 22.13.0。低版本 Node 也能跑,但不会启用基于 node:sqlite 的 usage 存储。想绕开这个限制,也可以直接用 Bun:

bunx --bun @jeffreycao/copilot-api@latest start

二、先记住这几个接入规则

这一步搞清楚,后面接什么客户端都不容易踩坑。

一条规则:先分清它在模拟谁。

  • 面向 OpenAI 风格客户端时,走 http://localhost:4141/v1
  • 面向 Anthropic 风格客户端时,通常填 http://localhost:4141

当前支持的主要端点:

  • OpenAI 兼容:/v1/responses/v1/chat/completions/v1/models/v1/embeddings
  • Anthropic 兼容:/v1/messages/v1/messages/count_tokens

认证也很简单:

  • 如果你没有在代理里配置 auth.apiKeys,那大多数客户端里填个 dummy 就行
  • 如果你自己开启了 auth.apiKeys,那就填你配置的 key,支持 x-api-keyAuthorization: Bearer

三、接入 Claude Code

最快的方式,是直接让代理帮你生成启动配置:

npx @jeffreycao/copilot-api@latest start --claude-code

它会让你选主模型和小模型,然后把 Claude Code 需要的环境变量命令直接复制到剪贴板。这个方式适合第一次上手。

如果你想长期固定配置,在项目根目录放一个 .claude/settings.json 即可:

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://localhost:4141",
    "ANTHROPIC_AUTH_TOKEN": "dummy",
    "ANTHROPIC_MODEL": "gpt-5.4",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "gpt-5.4",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "gpt-5-mini",
    "DISABLE_NON_ESSENTIAL_MODEL_CALLS": "1",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
    "CLAUDE_CODE_ATTRIBUTION_HEADER": "0",
    "CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION": "false",
    "CLAUDE_CODE_ENABLE_AWAY_SUMMARY": "0"
  },
  "permissions": {
    "deny": ["WebSearch", "mcp__ide__executeCode"]
  }
}

这一套配置的核心就两件事:

  • 把 Claude Code 的 Anthropic 流量改指向本地代理
  • 关掉一部分不必要的探测和额外流量,少浪费 Copilot 配额

四、接入 OpenCode

如果你打算用 OpenCode,作者的建议是直接让代理以 opencode 的 OAuth app 身份启动:

npx @jeffreycao/copilot-api@latest --oauth-app=opencode start

然后把 OpenCode 指到这个代理。一个够用的 ~/.config/opencode/opencode.json 可以写成这样:

{
  "$schema": "https://opencode.ai/config.json",
  "model": "local/gpt-5.4",
  "small_model": "local/gpt-5-mini",
  "agent": {
    "build": { "model": "local/gpt-5.4" },
    "plan": { "model": "local/gpt-5.4" },
    "explore": { "model": "local/gpt-5-mini" }
  },
  "provider": {
    "local": {
      "npm": "@ai-sdk/anthropic",
      "name": "Copilot API Proxy",
      "options": {
        "baseURL": "http://localhost:4141/v1",
        "apiKey": "dummy"
      },
      "models": {
        "gpt-5.4": {
          "name": "gpt-5.4",
          "modalities": {
            "input": ["text", "image"],
            "output": ["text"]
          },
          "limit": {
            "context": 272000,
            "output": 128000
          }
        },
        "gpt-5-mini": {
          "name": "gpt-5-mini",
          "limit": {
            "context": 128000,
            "output": 64000
          }
        }
      }
    }
  }
}

这里最关键的一项其实不是模型名,而是这句:

"npm": "@ai-sdk/anthropic"

这意味着 OpenCode 会按 Anthropic Messages 的语义去跟代理通信,而不是把一切都压扁成传统的 Chat Completions。对于 Claude 风格模型和工具流来说,这条链路通常更顺。

五、接入 Codex

这部分最有意思,因为 Codex 走的是 OpenAI 风格配置,但一样能接到这层代理上。

先装 Codex CLI:

npm i -g @openai/codex

然后给当前 shell 一个占位 API Key。Codex 这边需要的是一个 非空OPENAI_API_KEY,只要你的代理没启用 auth.apiKeys,填 dummy 就够了:

# macOS / Linux
export OPENAI_API_KEY=dummy

# PowerShell
$env:OPENAI_API_KEY = "dummy"

接着在 ~/.codex/config.toml 里加上这几行:

model = "gpt-5.4"
openai_base_url = "http://localhost:4141/v1"
approval_policy = "on-request"
sandbox_mode = "workspace-write"

[features]
multi_agent = false

然后直接启动:

codex

这套配置背后的逻辑是:

  • openai_base_url 把 Codex 的内置 OpenAI provider 改指向本地代理
  • model = "gpt-5.4" 让它直接使用 Copilot 侧暴露出来的模型
  • features.multi_agent = false 是刻意的,@jeffreycao/copilot-api 的 README 里明确建议 Codex 场景下关闭 multi-agent,因为当前 GitHub Copilot 的计费逻辑对这类流量还不够友好,容易多吃额度

如果你不想手改 config.toml,也可以直接让 Codex 持久化关闭这个特性:

codex features disable multi_agent

六、查看用量和控制风险

查看 Copilot 用量最直接的方式有两个。

终端里看:

npx @jeffreycao/copilot-api@latest check-usage

浏览器里看:

  • 直接打开启动代理时打印出来的 Usage Dashboard 链接
  • 默认会走本地 /usage-viewer 页面,读的是真实 /usage 数据

真正需要上心的不是“能不能跑”,而是“别跑太猛”。

推荐至少带上频率控制:

npx @jeffreycao/copilot-api@latest start --rate-limit 10 --wait

这两个参数很实用:

  • --rate-limit 10:把请求最小间隔限制在 10 秒
  • --wait:撞到限速时先等,不要立刻把 429 扔给上层客户端

最后还有几句必须说的人话:

  • 这是逆向工程项目,不是 GitHub 官方产品
  • GitHub Copilot 的高频自动化调用,确实可能触发滥用检测
  • 最安全的使用方式是 个人、本地、低频
  • 不要把它挂公网,不要多人共用,也不要拿去跑批处理
  • 如果你是 Business / Enterprise 账户,记得带上 --account-type business--account-type enterprise

同样一份 Copilot 订阅,能不能值回票价,很多时候差的就只是这一层代理。