Claude Code 自定義 API 與 Codex、OpenCode 介面地址配置
Claude Code 自定義 API 地址靠兩個環境變數:ANTHROPIC_BASE_URL 和 ANTHROPIC_AUTH_TOKEN。Codex 和 OpenCode 則是在各自的配置檔案裡宣告一個“供應商”,寫上 base url 和金鑰來源。改完如果報錯,多半是地址路徑寫錯、金鑰型別不對或者網路不通,後文的排錯表可以逐項對照。
下面只寫官方文件裡有記載的配置項。這幾個工具更新快,欄位名可能變化,標了“以官方文件為準”的地方,動手前先核對當前版本的文件。
填進去的介面地址要滿足什麼條件?
先確認你要接的服務和工具用的是同一種介面格式。
| 工具 | 預設使用的介面格式 | 你填的地址需要相容 |
|---|---|---|
| Claude Code | Anthropic Messages 介面 | Anthropic 格式 |
| Codex | OpenAI 介面 | 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 看認證來源 |
| 404 | base 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 與環境檢測,重點看三項:
- 出口 IP 與型別:確認終端實際走的出口在哪裡,是機房、家寬還是行動網路。
- 大陸分流檢測:判斷當前是“大陸分流 / 全域性代理 / 國內直連”。瀏覽器走了代理而終端沒走,是常見情況。
- 多出口檢測與 DNS 洩漏:看訪問不同服務時出口是否一致,DNS 是否走了預期的解析器。
檢測完可以生成帶水印的結果圖,並可選擇隱藏 IP 地址。發給同事或在群裡求助時,把這張圖附上,不會把自己的出口 IP 暴露出去。指紋在本地計算,不上傳。
第三步,測延遲。首頁的線上測速在瀏覽器裡測到 15 個 AI 模型 API 的“首次連線”(含 DNS 和 TLS 握手)和“往返”時間。首次連線明顯偏高而往返正常,通常是 DNS 或握手階段的問題;兩者都高,就是鏈路本身慢。延遲的成因可以參考 AI API 延遲為什麼高。
瀏覽器和終端不一定走同一條網路路徑。瀏覽器裡測得通、終端裡不通,先檢查終端有沒有設定 HTTPS_PROXY 等變數,以及分流規則是否覆蓋了介面域名,原理見分流原理。