Claude Code 切换为 OpenAI 格式 API 接入说明

一、适用场景与前提

  • 已安装 Claude Code(claude 命令可正常运行,无论当前走官方登录还是 Anthropic 直连)。
  • 手里有第三方中转站提供的 OpenAI 格式 API:一个 base URL(形如 https://xxx/v1/chat/completions)、一个模型名、一个 API Key。
  • 目标:让 Claude Code 不再走 Anthropic 格式端点(/v1/messages),改为走 OpenAI 格式端点/v1/chat/completions)。

本文以 cloudrouter 中转 + GLM5.2 为示例,但流程对任意 OpenAI 格式中转通用——把 URL / 模型名 / Key 换成你自己的即可。

二、原理(为什么不能直连)

Claude Code 只会发 Anthropic 格式请求;OpenAI 格式端点听不懂。解决办法是在本地加一层翻译代理 claude-code-router(CCR)

Claude Code ──(Anthropic格式)──► CCR(本地 127.0.0.1:3456) ──(OpenAI格式)──► 中转站 ──► 模型

CCR 负责两种格式互译。配好后,Claude Code 以为自己在跟 Anthropic 端点对话,实际请求被翻译成 OpenAI 格式转发给你指定的中转站。

三、涉及的两个配置文件(目标状态预览)

Key 位用 <占位符> 表示——真实 Key 由 Claude 在执行时写入,不写进本文档

1. ~/.claude-code-router/config.json(翻译路由)

{
  "LOG": true,
  "Providers": [
    {
      "name": "relay",
      "api_base_url": "https://<你的中转站>/v1/chat/completions",
      "api_key": "<你的API Key>",
      "models": ["<模型名>"],
      "transformer": { "use": ["openai"] }
    }
  ],
  "Router": {
    "default": "relay,<模型名>",
    "background": "relay,<模型名>",
    "think": "relay,<模型名>",
    "longContext": "relay,<模型名>",
    "webSearch": "relay,<模型名>"
  }
}

2. ~/.claude/settings.json(让 Claude Code 指向本地 CCR)

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://127.0.0.1:3456",
    "ANTHROPIC_AUTH_TOKEN": "test",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "<模型名>",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "<模型名>",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "<模型名>"
  },
  "model": "opus",
  "theme": "dark"
}

说明:ANTHROPIC_AUTH_TOKEN: "test" 是给本地 CCR 的占位鉴权,不是真实 Key;真实 Key 只在 config.json 里。model: "opus" 配合 ANTHROPIC_DEFAULT_OPUS_MODEL 让 Claude Code 的 opus 档实际落到你的目标模型。

四、一键部署(把下面整段提示词粘进 Claude Code)

复制下方代码块全部内容,粘进 Claude Code 对话框,回车。Claude 会向你索取 Key 并完成全部配置,Key 不会被打印回显

帮我把 Claude Code 的 API 从 Anthropic 格式切换为 OpenAI 格式(经本地 claude-code-router 翻译)。请按下面步骤执行,全程不要在对话里回显、打印或记录我的 API Key 明文:

1. 安装 claude-code-router(CCR):先检查 ccr 是否存在,没有就执行 npm install -g @musistudio/claude-code-router,装完跑 ccr -v 确认版本。若全局安装报权限错误,提示我配置 npm prefix 到用户目录或改用 sudo,不要擅自用 sudo。

2. 一次性向我索取三项信息:中转站 OpenAI 格式端点(形如 https://xxx/v1/chat/completions)、模型名、API Key。拿到 Key 后只能写入配置文件,禁止在后续任何输出、日志、记忆文件里出现 Key 明文。

3. 写 ~/.claude-code-router/config.json:Provider 名用 relay,api_base_url 填我给的端点,api_key 填我给的 Key,models 含我给的模型名,transformer 用 {"use":["openai"]};Router 的 default / background / think / longContext / webSearch 全部设为 "relay,<模型名>"。若文件已存在先备份为 config.json.bak 再覆盖。写完对文件 chmod 600。

4. 修改 ~/.claude/settings.json:保留已有键,仅设置/更新 env 下的 ANTHROPIC_BASE_URL=http://127.0.0.1:3456、ANTHROPIC_AUTH_TOKEN=test、ANTHROPIC_DEFAULT_SONNET_MODEL=<模型名>、ANTHROPIC_DEFAULT_OPUS_MODEL=<模型名>、ANTHROPIC_DEFAULT_HAIKU_MODEL=<模型名>,顶层 model 设为 opus。改前备份为 settings.json.bak。不要写入任何真实 Key。

5. 执行 ccr start,等待就绪,再 ccr status 确认监听在 127.0.0.1:3456 且状态 Running。

6. 端到端测试:用 curl 向 http://127.0.0.1:3456/v1/messages 发一个 POST,model 字段填 claude-sonnet-4-5-20250929、max_tokens 给小值、messages 问"你是什么模型",确认返回 HTTP 200 且响应里 model 字段是我的目标模型名。

7. 汇报测试结果,并告诉我日常启动方式(ccr start 后用 ccr code)和切回 Anthropic 直连的方法。全程不要回显 Key。

五、验证(可选,粘进 Claude Code)

部署后想复查链路是否正常,粘这段:

帮我核查 Claude Code 当前是否正确走 OpenAI 格式链路:1) ccr status 看服务状态与端口;2) curl 本地 127.0.0.1:3456 的 /v1/messages,model 字段填 claude-sonnet-4-5-20250929 发一个小请求,确认返回的 model 是我的目标模型、HTTP 200;3) 读 ~/.claude/settings.json 确认 ANTHROPIC_BASE_URL 指向 127.0.0.1:3456。给出"通过/未通过"结论与原因。不要回显 Key。

六、日常使用

部署完成后,每次开机后用 Claude Code 的标准动作:

  • ccr start —— 启动本地翻译代理(开机一次,常驻后台)。
  • ccr code —— 经代理启动 Claude Code(日常用这条)。

因为 ~/.claude/settings.json 已把 base_url 指向本地 3456,所以 ccr start 之后直接敲 claude 也会走 CCR;但务必先 ccr start,否则本地代理没起来 claude 会连不上。

七、回退到 Anthropic 格式直连(粘进 Claude Code)

想切回不走 CCR、直接用中转站的 Anthropic 端点时,粘这段:

帮我把 Claude Code 从 CCR/OpenAI 格式切回 Anthropic 格式直连:1) 把 ~/.claude/settings.json 里 env 的 ANTHROPIC_BASE_URL 改回我的中转站 Anthropic 端点(我会告诉你,形如 https://xxx)、ANTHROPIC_AUTH_TOKEN 改回我的 Anthropic Key;2) 视需要删除 ANTHROPIC_DEFAULT_*_MODEL 三个映射键或保留;3) ccr stop 停掉本地代理。改前备份 settings.json。全程不要回显 Key。

八、注意事项

  • Key 安全:CCR 不支持从环境变量读取上游 Key,Key 必须落在 ~/.claude-code-router/config.json 里。本流程由 Claude 写入,不会出现在本文档、对话或日志中;配置文件已设 chmod 600,仅属主可读。
  • effort / 思考档位:经 CCR→第三方模型这条链路,Claude Code 的 /effort 命令与 --effort 参数会失效(环境检测为非官方后端即锁定);多数第三方模型(如 GLM5.2)默认即深度思考,无需也无法配置 effort,不必折腾。
  • 模型名:用中转站 /v1/models 列出的准确 id;带方括号后缀的变体(如 glm-5.2[1m])通常不被识别,[1m] 只是"1M 上下文"的标注、并非合法模型名。
  • npm 权限:若 npm install -gEACCES,把 npm 全局目录指到用户目录(npm config set prefix ~/.npm-global 并加入 PATH)或按提示用 sudo,不要反复重试。
  • 直连与 CCR 并存settings.json 指向本地 3456 时,claudeccr code 都走 CCR;若想临时直连中转站,临时改 ANTHROPIC_BASE_URL 即可,互不破坏。
  • 配置变更生效:改了 config.json 后用 ccr restart 让新配置生效。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐