Claude Code 自定义 API 与 Codex、OpenCode 接口地址配置

博客 / 开发工具

Claude Code 自定义 API 与 Codex、OpenCode 接口地址配置

Claude Code 自定义 API 地址靠两个环境变量:ANTHROPIC_BASE_URL 和 ANTHROPIC_AUTH_TOKEN。Codex 和 OpenCode 则是在各自的配置文件里声明一个“供应商”,写上 base url 和密钥来源。改完如果报错,多半是地址路径写错、密钥类型不对或者网络不通,后文的排错表可以逐项对照。

下面只写官方文档里有记载的配置项。这几个工具更新快,字段名可能变化,标了“以官方文档为准”的地方,动手前先核对当前版本的文档。

填进去的接口地址要满足什么条件?

先确认你要接的服务和工具用的是同一种接口格式。

工具默认使用的接口格式你填的地址需要兼容
Claude CodeAnthropic Messages 接口Anthropic 格式
CodexOpenAI 接口OpenAI 格式(具体走 Chat Completions 还是 Responses,以 Codex 官方文档为准)
OpenCode按供应商配置决定你在配置里声明的那种格式

只兼容 OpenAI 格式的地址填进 Claude Code 跑不通,反过来也一样,这是 404 的常见来源。

另外两点:

  • base url 一般只写到根路径或 /v1,工具会自己拼后面的 /messages、/chat/completions。要不要带 /v1,看服务方的接入说明。
  • 密钥不要写进项目仓库,放在 shell 配置、用户目录下的配置文件或系统的密钥管理里。

Claude Code 怎么设置自定义 API 地址?

Claude Code 官方文档里与此相关的环境变量有三个:

变量作用
ANTHROPIC_BASE_URL覆盖默认的 API 地址
ANTHROPIC_AUTH_TOKEN作为 Authorization: Bearer 头发送的令牌,常用于网关或代理
ANTHROPIC_API_KEY作为 X-Api-Key 头发送的密钥

ANTHROPIC_AUTH_TOKEN 和 ANTHROPIC_API_KEY 走的是不同的请求头。服务方要哪一种就设哪一种,不要两个都填。

方式一:在终端里临时设置

export ANTHROPIC_BASE_URL="https://your-endpoint.example.com"
export ANTHROPIC_AUTH_TOKEN="sk-xxxxxxxx"
claude

适合先试通不通,关掉终端就失效。

方式二:写进 settings.json

settings.json 支持 env 字段,里面的变量在每次会话启动时生效。用户级配置在 ~/.claude/settings.json:

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://your-endpoint.example.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-xxxxxxxx"
  }
}

项目目录下也可以放 .claude/settings.json,但这个文件通常会提交到仓库,密钥别写在里面。项目级的私有配置用 .claude/settings.local.json,并确认它在 .gitignore 里。

怎么确认生效了

启动后在 Claude Code 里执行 /status,查看当前的 API 地址和认证来源。如果显示的还是默认地址,检查 shell 里是不是另有同名变量。

Codex 怎么配置自定义 base url?

Codex 的配置文件是 ~/.codex/config.toml。官方文档的做法是用 model_providers 声明一个自定义供应商,再用 model_provider 指向它。示例:

model_provider = "mygateway"

[model_providers.mygateway]
name = "My Gateway"
base_url = "https://your-endpoint.example.com/v1"
env_key = "MYGATEWAY_API_KEY"

密钥放在环境变量里:

export MYGATEWAY_API_KEY="sk-xxxxxxxx"
codex

几点说明:

  • env_key 填的是环境变量的名字,不是密钥本身,Codex 启动时去读这个变量。
  • 供应商段落里还有 wire_api 等字段,用来指定走哪种 OpenAI 接口。可选值和默认值在不同版本里调整过,以 Codex 官方文档为准。
  • 模型名用 model = "..." 指定,填服务方支持的名称。

OpenCode 怎么添加自定义 provider?

OpenCode 的全局配置一般在 ~/.config/opencode/opencode.json,项目根目录也可以放一份。接入兼容 OpenAI 格式的服务用 provider 字段,官方文档的写法大致如下:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "mygateway": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "My Gateway",
      "options": {
        "baseURL": "https://your-endpoint.example.com/v1"
      },
      "models": {
        "your-model-id": {}
      }
    }
  }
}

密钥可以用 opencode auth login 交互录入,也可以在 options 里引用环境变量。具体字段名,以及 Anthropic 格式供应商的写法,以 OpenCode 官方文档为准。

接聚合网关时有什么不同?以 AGI Plan 为例

用聚合网关的流程和上面一样,只是地址和密钥换成网关给的。以 AGI Plan 为例(AGI Plan 是 cdnping 的商业合作方):它同时兼容 OpenAI 和 Anthropic 两种接口格式,Claude Code、Codex、OpenCode 都能接。接入分三步:邮箱验证码注册、选套餐并建密钥、改一处配置。各工具的地址和分步教程见 agiplan.dev。AGI Plan 站方说明自己不是官方授权渠道,部分模型标注为“仅境外”,具体以 模型页 为准。使用前看清说明,并遵守各服务的条款和当地法规。

报 401、404、超时怎么查?

改完配置报错,按下表从上往下查。

现象常见原因怎么查
401 / 403密钥错误、过期或额度用完;请求头类型不对(Claude Code 里 AUTH_TOKEN 和 API_KEY 用反)用 curl 带同一个密钥直接请求一次;在 Claude Code 里用 /status 看认证来源
404base url 多写或少写了 /v1;接口格式不匹配(OpenAI 格式地址填进了 Claude Code);模型名服务方不支持对照服务方文档核对完整路径和模型名
连接超时 / 一直转圈本机到接口地址的网络不通;代理没覆盖到终端;DNS 解析异常先看对方是否故障,再查本机网络,见下一节
偶发 5xx、429服务端故障或限流看 /status 和 /down 上同一时段有没有异常
改了配置不生效shell 里有同名环境变量覆盖;改的是项目级而不是用户级配置env | grep -i anthropic 或 env | grep -i base_url

通用的 curl 自检命令(Anthropic 格式,按服务方要求换成对应的请求头):

curl -sS -o /dev/null -w "HTTP %{http_code}  连接 %{time_connect}s  总计 %{time_total}s\n" \
  "$ANTHROPIC_BASE_URL/v1/messages" \
  -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"your-model-id","max_tokens":16,"messages":[{"role":"user","content":"hi"}]}'

返回 200 说明地址和密钥都对,问题在工具配置;返回 401 或 404 对照上表;命令卡住不返回,就是网络问题。

超时是服务端的问题还是本机网络的问题?

超时有两种可能:对方服务故障,或者你这边到对方的路不通。分开查会快很多。

第一步,看服务方是否正常。打开 API 状态页,它从 Cloudflare 边缘每 5 分钟探测一次各家官方 API 入口,并同步部分官方状态页。用 AGI Plan 的可以直接看 /status/agiplan;用 Claude Code 也可以看 /down/claude-code,那里汇总了官方状态页、API 探测和用户报告。

作为参照:cdnping 在 2026 年 10 月 17 日从 Cloudflare 丹佛节点(DEN)做的边缘探测中(统计窗口约 85 分钟,共 242 次探测,来源 cdnping /status),api.anthropic.com 的 p50 为 73 ms,api.openai.com 为 96 ms,窗口内都没有失败。cdnping 从这一天才开始采集,这只是一小段窗口的机房到机房数据,不代表你本机的体验,只能说明当时服务端在正常响应。如果状态页正常而你这边超时,问题多半在本地网络。

第二步,查本机网络。打开 IP 与环境检测,重点看三项:

  1. 出口 IP 与类型:确认终端实际走的出口在哪里,是机房、家宽还是移动网络。
  2. 大陆分流检测:判断当前是“大陆分流 / 全局代理 / 国内直连”。浏览器走了代理而终端没走,是常见情况。
  3. 多出口检测与 DNS 泄漏:看访问不同服务时出口是否一致,DNS 是否走了预期的解析器。

检测完可以生成带水印的结果图,并可选择隐藏 IP 地址。发给同事或在群里求助时,把这张图附上,不会把自己的出口 IP 暴露出去。指纹在本地计算,不上传。

第三步,测延迟。首页的在线测速在浏览器里测到 15 个 AI 模型 API 的“首次连接”(含 DNS 和 TLS 握手)和“往返”时间。首次连接明显偏高而往返正常,通常是 DNS 或握手阶段的问题;两者都高,就是链路本身慢。延迟的成因可以参考 AI API 延迟为什么高。

浏览器和终端不一定走同一条网络路径。浏览器里测得通、终端里不通,先检查终端有没有设置 HTTPS_PROXY 等变量,以及分流规则是否覆盖了接口域名,原理见分流原理。

照着做:从配置到自检

  1. 选一个工具,先用环境变量临时配好,跑一次上面的 curl 自检。
  2. 通了再写进配置文件,确认密钥文件不在仓库里。
  3. 下次报错,先看 /status 确认服务端,再打开 /ip 查本机;求助时附上隐藏了 IP 的结果图。

相关文章

继续阅读