Opus 4.7 上線那天,Claude Code 的 opus alias 自動指向新版。沒有通知、沒有 changelog 提醒,打開 /model 選單一看——舊版 Opus 4.6 消失了。
之前寫過三個月帳單分析,結論是 4.7 的 quota burn 是 4.6 的 2.4 倍。想切回去,但 picker 裡就是沒有。花了一個下午把所有設定方式都試過,順便把 GitHub 上的相關討論整理起來。
三種設定機制
Claude Code 目前有三種方式可以動 /model 選單的內容。
1. availableModels:取代,不是擴充
在 ~/.claude/settings.json 加:
| |
效果是 /model 選單只剩這三個。預設的 opus / sonnet / haiku alias 全部消失,被你列的清單取代。
這是最大的坑:很多人以為 availableModels 是「在預設清單上面再加幾個」,結果一設完發現原本的選項全不見了。
2. modelOverrides:給 Bedrock / Vertex 用的
| |
它的用途是把 model ID 映射到其他 provider 的 endpoint。如果你直連 Anthropic API,這個設定沒用。
3. ANTHROPIC_CUSTOM_MODEL_OPTION:加一個,只能一個
v2.1.78 開始支援的環境變數,會在 /model 選單底部多一個自訂選項:
| |
不會動到預設選單,但只能加一個。想同時加 Opus 4.6 和 Sonnet 4.6 1M?沒辦法,沒有 ANTHROPIC_CUSTOM_MODEL_OPTION_2 這種東西。
踩過的坑
aliases 在 availableModels 裡會被忽略
直覺上會想這樣寫:
| |
結果 picker 只出現 4 個選項,而且 opus、sonnet、haiku 跟內建的重複時行為不一致。aliases 不是合法的 model ID,放進去要看運氣。要放就放完整的 model ID。
同系列 model 只顯示一個
availableModels 如果放了 claude-opus-4-6 和 claude-opus-4-7,同系列會被 dedup,可能只出現一個。這個行為沒有文件記載。
鎖版本要用 model,不是 availableModels
availableModels 控制的是選單裡有什麼,但啟動時用哪個 model 是 model 欄位決定的:
| |
兩個要一起設。只設 availableModels 不設 model,啟動時還是用預設 alias 指向的最新版。
GitHub 社群怎麼說
這不是只有我遇到的問題。GitHub 上一堆相關 issue,整理如下:
#14443 — 要求 picker 可配置多個自訂 model
使用者 joerivwijn 提出希望 /model picker 能透過 settings.json 自由配置。特別是 Bedrock 用戶,model ID 格式不同(需要 us. 前綴和 :0 後綴),預設 picker 完全對不上。
結果: 被 bot 標為 #12969 的 duplicate 後自動關閉。
#12738 — Opus 4.5 從 picker 消失
使用者 grigb 回報 Max plan 在 CLI 看不到 Opus 4.5,Web app 有但 CLI 沒有。後續多人跟進:
- cleanspin 指出
/model opus指向 Opus 4.1 而非 4.5,alias 映射過時。Workaround:打完整 model ID/model claude-opus-4-5-20251101 - todddrinkwater 回報 VS Code extension 也開始出現同樣問題
- zerzerzerz、PavelProdan 附截圖,確認「昨天還在,今天消失」
這個 pattern 在每次新 model 發布後都會重演:alias 指向新版,舊版從 picker 消失,沒有任何通知。
結果: 因長期不活躍被 bot 自動關閉。
#35630 — ANTHROPIC_CUSTOM_MODEL_OPTION 文件缺失
使用者 coygeek 發現 v2.1.78 的 changelog 提到這組環境變數,但官方文件完全沒寫。
結果: 已修復,env-vars 和 model-config 兩個文件頁面都補上了說明。
其他相關 open issues
| Issue | 問題 |
|---|---|
| #52310 | Bedrock 上 availableModels 被忽略,每個系列只顯示一個 |
| #47164 | 企業自訂 model ID 無法出現在互動式 picker |
| #40501 | settings.json 的 model 與內建選項重複時出現雙重項目 |
| #49566 | ANTHROPIC_DEFAULT_*_MODEL 在 Bedrock 上導致重複的 “Custom” 項目 |
| #53006 | VS Code extension 缺少 Sonnet 4.6 |
| #38238 | WSL2 環境下 1M context model 不顯示 |
可以看出問題集中在兩個方向:alias 映射延遲和沒有「擴充預設清單」的機制。
推薦設定
試了一輪下來,availableModels 因為同系列 dedup 的問題,放了 4 個也不一定都能顯示。最務實的做法反而是:不動 availableModels,保留預設 picker,用 model 鎖版本,用 ANTHROPIC_CUSTOM_MODEL_OPTION 加一個額外選項。
~/.claude/settings.json(全域):
| |
只加一行。預設 picker 不動(opus / sonnet / haiku 三個都在),但每次啟動固定用 Opus 4.6 1M。這裡的 opus alias 實際指向最新版(目前是 4.7),所以如果臨時想切新版,選單裡直接選就好。
~/.zshrc(用 ANTHROPIC_CUSTOM_MODEL_OPTION 加第 4 個選項):
| |
這樣 /model 選單會有 4 個選項:預設的 opus / sonnet / haiku,加上一個 Sonnet 4.6 1M。涵蓋了日常需要的所有場景:
- Opus 4.6 1M:透過
model欄位鎖定,啟動即用 - Opus 4.7:選單裡的
opusalias,需要時切過去 - Sonnet 4.6:選單裡的
sonnetalias,review / fix / test 用 - Sonnet 4.6 1M:透過環境變數加的第 4 個,大 context 場景用
為什麼不用
availableModels?因為它是取代式的,而且同系列 dedup 會吃掉你列的 model。不設它,預設 picker 反而最穩定。
結論
Claude Code 的 model picker 設計假設是「大家都想用最新版」,沒有考慮到版本鎖定和回退的需求。availableModels 是取代式且有 dedup 問題、ANTHROPIC_CUSTOM_MODEL_OPTION 只能加一個。
但實際上,model + ANTHROPIC_CUSTOM_MODEL_OPTION 這個組合已經能解決大部分需求:鎖版本靠 model,加一個額外選項靠環境變數,預設 picker 保持原樣不動。
GitHub 上相關 issue 開了不少,但大部分被 bot 標 duplicate 或 stale 關掉。如果你需要在 picker 裡放超過一個自訂 model,目前沒有官方方案。
