Claude Code 切换为 OpenAI 格式 API 接入说明
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 -g报EACCES,把 npm 全局目录指到用户目录(npm config set prefix ~/.npm-global并加入 PATH)或按提示用sudo,不要反复重试。 - 直连与 CCR 并存:
settings.json指向本地 3456 时,claude与ccr code都走 CCR;若想临时直连中转站,临时改ANTHROPIC_BASE_URL即可,互不破坏。 - 配置变更生效:改了
config.json后用ccr restart让新配置生效。
更多推荐




所有评论(0)