Claude Code + OpenRouter 怎麼搭配?個人開發者如何降低模型呼叫成本

 ·  約19分鐘閱讀  ·  AI 開發

四檔目錄價示意:同樣一筆 100 萬進加 100 萬出,柱高從 Fable 到 Haiku

一句話導讀:大家都在問 Claude Code 能不能接到 OpenRouter,但很少有人先算清,接上之後帳單到底按哪一檔模型走。 下文先寫請求離開本機之後的路徑和官方要求的環境變數,再把四個檔位、同一筆假設用量、訂閱和按量放在一起,最後才是個人開發者真正擰得動的旋鈕。

請求離開本機之後走哪條路

Claude Code 對上游說的是 Anthropic Messages API。OpenRouter 提供一層相容這套介面的入口,官方文件把它叫做 Anthropic skin:思考區塊和工具呼叫會原樣轉過去,費用記在你的 OpenRouter 額度上。不需要在本機再跑一個轉發行程。

基址是 https://openrouter.ai/api,結尾不要加 /v1。Claude Code 自己會接後面的路徑。寫成帶 /v1 的位址,是這套接法裡最常見的「變數都寫了、請求卻打到錯誤主機」的原因之一。

官方文件把相容範圍寫得很窄:Claude Code 經 OpenRouter 只保證走 Anthropic 第一方供應商。模型選擇器裡可以出現別家的 id,文件同時寫明 Claude Code 是按 Anthropic 模型最佳化的,換到其他供應商可能不正常。所以「接上 OpenRouter」不等於「把預設模型換成目錄裡最便宜的那一個」。便宜模型和能跑完工具呼叫,是兩件要分開驗證的事。

額度購買和 token 單價也是兩筆帳。OpenRouter 自己的 Claude Code 說明寫的是:推理不加價,你付的是目錄上的單價;買額度時另收 5.5% 手續費,最低 $0.80。手續費相對檔位差是小頭,後面的表會把這個比例算出來。

四行環境變數,空著的那一行不能省

官方快速開始要求把鑰匙放在 ANTHROPIC_AUTH_TOKEN,並且把 ANTHROPIC_API_KEY 明確設成空字串。前者會進 Authorization: Bearer,這是閘道要的;後者會進 x-api-key,Claude Code 把它當成直連 Anthropic 的憑證。空字串是為了阻止它退回直連。只刪掉舊鑰匙、不寫成 ="",互動模式下仍可能沿用本機保存的登入。

export OPENROUTER_API_KEY="<your-openrouter-api-key>"
export ANTHROPIC_BASE_URL="https://openrouter.ai/api"
export ANTHROPIC_AUTH_TOKEN="$OPENROUTER_API_KEY"
export ANTHROPIC_API_KEY=""

順序有一個容易踩空的點:ANTHROPIC_AUTH_TOKEN="$OPENROUTER_API_KEY" 在 shell 讀到這一行時就展開。鑰匙如果寫在它後面,或者由稍後才注入的密鑰管理器提供,令牌會變成空字串,每個請求都是認證失敗。寫進 ~/.zshrc 時,先定義 OPENROUTER_API_KEY。

以前用 Anthropic 帳號登入過 Claude Code 的,進會話執行一次 /logout,退出再開。官方說明快取登入和閘道憑證同時存在時,啟動期會報認證衝突,表面症狀常常是模型找不到,包括 openrouter/auto 這種只有 OpenRouter 才有的 id。macOS 上這份快取在鑰匙圈裡,名字是 Claude Code-credentials,原生安裝不一定寫 ~/.claude/.credentials.json。

核對用會話裡的 /status。認證行應是 ANTHROPIC_AUTH_TOKEN,基址行應是 https://openrouter.ai/api。若認證行仍是 ANTHROPIC_API_KEY,或登入方式仍是 Claude 帳號,變數沒有進到這個行程。OpenRouter 的 Activity 頁應能看到同一條請求。

專案級可以寫在倉庫裡的 .claude/settings.local.json,不要寫進 Claude Code 不讀的 .env,也不要把鑰匙提交進 git。這個檔案進了版本庫,就等於把額度鑰匙交給每一個克隆。只想本機長期使用時,官方更建議放在 shell 設定裡,並用系統鑰匙圈取出明文,而不是把 sk-or- 開頭的字串直接貼進點檔案。

空鑰匙和登出是兩件事

/logout 只清掉快取的 OAuth 會話。shell 裡如果還留著真正的 ANTHROPIC_API_KEY,登出不會把它清掉,請求仍可能按直連 Anthropic 計費。

接不上、行程起不來、記憶體被打滿,和這條計費路徑不是同一類故障。安裝和報錯可以對照 Claude Code 部署報錯修復。

四個檔位才是單價

Claude Code 把任務分成 Fable、Opus、Sonnet、Haiku 四檔,各看一個環境變數;子代理另有 CLAUDE_CODE_SUBAGENT_MODEL。OpenRouter 文件給的示例把這幾檔都指到 ~anthropic/claude-…-latest,子代理示例指到 Opus。那是「能選到最新別名」的寫法,不是個人預算的寫法。別稱會跟著目錄走,今天的 ~anthropic/claude-opus-latest 標價和 anthropic/claude-opus-5.5 一致,明天不必仍是這個 id。

下面這張表是 2026-10-20 從 OpenRouter 公開模型目錄讀到的單價,單位是美元 / 100 萬 token。快取讀取是目錄裡的 cache read 價,只有服務商真的命中前綴快取時才按這個數計,不是每一條輸入都打折。

檔位 本文釘住的 id 輸入 輸出 快取讀取 100 萬進 + 100 萬出
Fable anthropic/claude-fable-5.1 $10 $50 $0.25 $60
Opus anthropic/claude-opus-5.5 $4 $20 $0.20 $24
Sonnet anthropic/claude-sonnet-5.5 $2 $10 $0.10 $12
Haiku anthropic/claude-haiku-5.5 $0.10 $0.50 $0.01 $0.60

同一天目錄裡,anthropic/claude-fable-5 的輸入輸出和 5.1 相同,都是 $10 / $50,但快取讀取是 $1,而不是 $0.25。anthropic/claude-opus-5 是另一行:$5 進、$25 出。anthropic/claude-sonnet-5 的輸入輸出和 5.5 相同,快取讀取是 $0.20,比 5.5 的 $0.10 貴一倍。名字裡都有 Opus 或 Sonnet,帳單不是同一個數。要按這篇文章的帳來管預算,就把 id 釘死,不要只寫 latest。

export ANTHROPIC_DEFAULT_FABLE_MODEL="anthropic/claude-fable-5.1"
export ANTHROPIC_DEFAULT_OPUS_MODEL="anthropic/claude-opus-5.5"
export ANTHROPIC_DEFAULT_SONNET_MODEL="anthropic/claude-sonnet-5.5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="anthropic/claude-haiku-5.5"
export CLAUDE_CODE_SUBAGENT_MODEL="anthropic/claude-haiku-5.5"

最後一行是預算選擇,不是官方示例。官方示例把子代理放在 Opus 上。子代理如果主要是搜檔案、跑測試、寫摘要,跟會話釘在同一檔 Opus,等於每一條支線都按 $4 / $20 計。改到 Haiku 之前,先在 /model 裡確認四檔都列出來了,再看 Activity 裡的模型欄是不是你釘的 id。

100×
Fable 對 Haiku,同一筆 100 萬進 + 100 萬出
5.5%
買 OpenRouter 額度時的手續費,最低 $0.80
4
Claude Code 分開計價的模型檔

$60 除以 $0.60 是 100 倍。這是目錄價的比值,不是某一次會話的實測。token 怎麼從字元折成計費單位,見 token 與單價對照。目錄裡其他家族這週的用量和標價,見 OpenRouter 週榜。

同一筆假設用量,檔位差多少

下面不是從日誌裡量出來的「平均一天」。它只回答一個問題:同一筆 token,檔位一換,目錄價差多少。假設一個工作日送出 800 萬 input token、80 萬 output token,大約 10 比 1,用來表示 Agent 會反覆帶上上下文、真正寫出來的字少得多。這一節先假設快取讀取為零。

整天釘在這一檔 這一天 22 個這樣的工作日
Fable 5.1 $120 $2,640
Opus 5.5 $48 $1,056
Sonnet 5.5 $24 $528
Haiku 5.5 $1.20 $26.40
五成 Haiku、四成 Sonnet、一成 Opus $15 $330

算法可以覆核。Opus 5.5 這一天是 8 × $4 + 0.8 × $20 = $48。混合那一行按同樣 800 萬 / 80 萬拆開:Haiku 佔一半 token,是 $0.60;Sonnet 占四成,是 $9.60;Opus 占一成,是 $4.80;合計 $15。22 是大約一個月裡的工作日,不是折扣,也不是套餐。

再加一個同樣標明為假設的快取:Opus 這一天若有一半 input 按快取讀取計,則 400 萬 × $4 + 400 萬 × $0.20 + 輸出 $16 = $32.80,而不是 $48。工具輸出一變,前綴就斷,下一次又回到原價。不能把 $32.80 寫成承諾。

買額度的 5.5% 加在這張表外面。$48 對應大約 $2.64,$330 對應大約 $18。它改變不了「整天 Fable」和「混合檔」之間那 $2,310 的差。先改檔位,再談手續費。

這張表不能拿去和 Pro 的月費比誰更便宜

$48 已經高於 Pro 的月費,但 Pro 不是無限量的 Opus。表上的數是目錄價乘假設 token。你的會話沒有送出 800 萬 input,這張表就不描述你的一天。

訂閱、直連和 OpenRouter 是三張帳單

Claude 定價頁在 2026-10-20 仍是這些標價,不含稅,並且寫明套餐可以改:Pro 月付 $20,年付折合 $17(一次付 $200);Max 5x 是 $100 / 月,Max 20x 是 $200 / 月。Pro 和 Max 都包含 Claude Code,和網頁、桌面、手機裡的 Claude 共用用量。說明中心寫的限制是五小時會話上限加每週上限;Max 另外有 Fable 的每週上限。Max 相對 Pro 的用量倍數,寫的是每個五小時會話裡 5 倍或 20 倍。

這和 OpenRouter 不是同一個計量器。說明中心寫明:環境裡如果設定了 ANTHROPIC_API_KEY,Claude Code 會按 API 計費,而不是扣訂閱裡包含的用量。接到 OpenRouter 時還要 /logout,並且把 API key 留空、改用 ANTHROPIC_AUTH_TOKEN。走通之後,請求從第一條就開始扣 OpenRouter 額度,不會去消耗 Pro 裡還沒用完的那一截。

因此個人開發者可以按自己卡在哪一面來選,而不是按「閘道更先進」來選:

  • 用量停在 Pro 或 Max 的上限裡面:訂閱是封頂價。$20 或 $100 花完,這個週期裡多出來的會話不會按 Opus 單價繼續往上加,而是觸發限額。限額夠用,就不必為了 OpenRouter 拆出按量。
  • 每週都撞上限額,而且撞上之後你本來就會改買 API 額度:先看撞上的是不是 Fable 或 Opus。把子代理和日常改動放到 Haiku、Sonnet,往往比先升一檔 Max 更直接。升檔買的是更多訂閱用量,不是更低的 token 單價。
  • 需要一把鑰匙的硬上限、按請求能看到模型欄:OpenRouter 的鑰匙限額和 Activity 頁提供的是訂閱用量條不提供的視圖。你為這個視圖支付目錄價,外加買額度時的 5.5%。直連 Anthropic Console 的 token 單價和目錄一致時,這 5.5% 就是閘道本身的價差,換來的是失敗轉移、一把鑰匙看全部請求。OpenRouter 寫明推理不加價,指的是這一層,不是指它比 Pro 便宜。

Claude Code 和編輯器裡的助手是不是同一筆帳,見 Claude Code 與 Cursor。那篇比的是產品形態,這篇比的是接上之後的計量器。

個人開發者先擰這五個旋鈕

第一,會話不要整天停在 Fable 或 Opus。 四檔變數就是這個旋鈕。艱難的長程推理留在 Fable,複雜修改留在 Opus,普通改動留在 Sonnet,檢索和短補全留在 Haiku。釘死 id 之後,別名改價不會悄悄換掉你算過的那一檔。

第二,子代理單獨降檔。 複製官方示例時,子代理會跟 Opus 走。一條主會話拆出三個子代理,如果每個都按 Opus 計,支線的 token 可以比你在主對話裡看到的回覆更貴。個人預算下,把 CLAUDE_CODE_SUBAGENT_MODEL 放到 Haiku;只有那條子任務本身就是難的推理時,再臨時升檔。

第三,/fast 是加價,不是省錢。 官方說明快模式最多大約 2.5 倍輸出速度,價格高於對應 Opus 的普通檔,而且只覆蓋 Opus 4.6、4.7、4.8 和 Opus 5,不覆蓋 Fable。要在 OpenRouter 上讓 Claude Code 的 /fast 真正帶上 speed: "fast",需要 Claude Code 2.1.96 或更新,並設定 CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1,還得把 Opus 變數釘在具體 id 上,例如 anthropic/claude-opus-5。釘在 ~anthropic/claude-opus-latest 時,/fast 可以顯示已開啟,請求卻不帶 speed。更需要記住的一條:會話若停在 Fable,打開 /fast 不會把 Fable 加速,Claude Code 會把會話換到你設定的 Opus 上,之後的請求按 Opus 計費。不想為速度付溢價,就不要開這個開關。

第四,給這一把鑰匙設額度上限。 OpenRouter 的鑰匙可以單獨封頂。個人開發者至少把 Claude Code 用的鑰匙和別的實驗鑰匙分開,月上限按你能接受燒掉的數來寫。Activity 頁的模型欄用來抓「今天是不是又跑到 Fable 去了」。官方倉庫裡的 statusline 腳本可以在會話裡累加這一次的費用和快取折扣,它每次重新整理會再請求一次生成記錄,長會話是慢慢補齊的,不是發票。

第五,上下文變長是輸入側的帳單。 模型名結尾的 [1m] 只改變 Claude Code 對視窗的假設,避免過早壓縮;OpenRouter 會在路由前去掉這個標記。視窗假設變大之後,你能送進去的前綴也變大。壓縮、少讀整個倉庫、讓穩定的前綴有機會命中快取,省的是 input。快取讀價在表裡已經比輸入低一個數量級,但只有前綴沒被工具輸出打斷時才用得上。

模型費旁邊還有機器費。會話掛一整晚,編譯和模擬器還在同一台 Mac 上搶記憶體時,帳單不在 OpenRouter 裡。記憶體怎麼配,見 Claude Code 伺服器記憶體配置。兩張帳單分開看,才不會把 token 超支誤判成「機器太慢」。

別把非 Anthropic 模型當成預設省錢開關

選擇器在設定 CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 之後會出現,官方寫的是一份精選,不是整個目錄,而且其中一些條目會路由到非 Anthropic 供應商。文件要求把 Anthropic 第一方放在最高優先級,並寫明快模式只有第一方能提供。

一次失敗的工具呼叫會再跑一整輪上下文。單價只有 Opus 的幾十分之一,重試兩次,帳可以回到同一量級,結果還沒寫完。要把 DeepSeek 或其他家族放進編碼流程,把它當成另一個工具來測,而不是當成 Claude Code 四檔變數的靜默替換。能力差和價格差放在一起看,見 DeepSeek V4 Flash 與 Claude Opus。

個人開發者的順序

先確認自己還在不在訂閱用量池裡。還在,並且限額夠用,就停在 Pro 或 Max。已經按量付費,就先拆四檔和子代理,再給鑰匙加月上限。最後才考慮選擇器裡的其他模型。

常見問題

Claude Code 接 OpenRouter,官方保證的是哪一類模型? 官方文件寫的是只保證 Anthropic 第一方。選擇器裡的其他模型可以出現,但不在這句保證裡面。

OpenRouter 會不會在 token 單價上再加一層? 它的 Claude Code 說明寫的是推理不加價,單價以目錄為準。加價發生在買額度時:5.5%,最低 $0.80。

Pro 訂閱和按 token 哪個更便宜? 沒有脫離用量的答案。用量停在 Pro(月付 $20,或年付折合 $17)或 Max($100 / $200)的限額裡,訂閱是封頂。接到 OpenRouter 之後,請求改走額度,不再扣那份額度裡的用量。上面 $48 和 $15 是假設 token 的目錄價,不是你的發票。

/fast 能省錢嗎? 不能。它是更高單價換更快輸出,而且只覆蓋部分 Opus。停在 Fable 上打開它,會話會換到 Opus 計費。

鑰匙寫進 ~/.zshrc 安全嗎? 能用,但是明文。點檔案一旦進了倉庫或剪貼簿,鑰匙就外洩了。更穩的做法是從系統鑰匙圈讀取,外洩後在 OpenRouter 的鑰匙頁撤銷。專案設定用 settings.local.json,不要提交。

為什麼我改了基址,Activity 裡還是沒有請求? 先看 /status 的認證行是不是 ANTHROPIC_AUTH_TOKEN,基址是不是不帶 /v1 的 https://openrouter.ai/api。舊的帳號登入用 /logout 清掉。shell 裡殘留的 ANTHROPIC_API_KEY 要寫成空字串,只登出不夠。

ZavCloud Developer Infrastructure

模型按量計費之後,機器別和編譯搶

長會話、Xcode 和模擬器吃的是同一台 Mac 的記憶體,這筆帳不在 OpenRouter 裡。

獨享 Mac 節點按月租,和 token 分開。

立即配置您的獨享 Mac 節點
New Arrival 查看 M4 獨享方案