Featured image of post Claude Code /model 選單怎麼加舊版 model?3 種方法實測與踩坑紀錄

Claude Code /model 選單怎麼加舊版 model?3 種方法實測與踩坑紀錄

Opus 4.7 自動升級後想切回 4.6,但 /model 選單沒選項。實測 availableModels、modelOverrides、ANTHROPIC_CUSTOM_MODEL_OPTION 三種設定,整理 GitHub 社群討論與推薦配置。

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 加:

1
2
3
4
5
6
7
{
  "availableModels": [
    "claude-opus-4-6",
    "claude-sonnet-4-6",
    "claude-haiku-4-5"
  ]
}

效果是 /model 選單只剩這三個。預設的 opus / sonnet / haiku alias 全部消失,被你列的清單取代。

這是最大的坑:很多人以為 availableModels 是「在預設清單上面再加幾個」,結果一設完發現原本的選項全不見了。

2. modelOverrides:給 Bedrock / Vertex 用的

1
2
3
4
5
{
  "modelOverrides": {
    "claude-opus-4-7": "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-opus-4-7-v1:0"
  }
}

它的用途是把 model ID 映射到其他 provider 的 endpoint。如果你直連 Anthropic API,這個設定沒用。

3. ANTHROPIC_CUSTOM_MODEL_OPTION:加一個,只能一個

v2.1.78 開始支援的環境變數,會在 /model 選單底部多一個自訂選項:

1
2
3
export ANTHROPIC_CUSTOM_MODEL_OPTION="claude-opus-4-6[1m]"
export ANTHROPIC_CUSTOM_MODEL_OPTION_NAME="Opus 4.6 (1M)"
export ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION="Opus 4.6 with 1M context window"

不會動到預設選單,但只能加一個。想同時加 Opus 4.6 和 Sonnet 4.6 1M?沒辦法,沒有 ANTHROPIC_CUSTOM_MODEL_OPTION_2 這種東西。

踩過的坑

aliases 在 availableModels 裡會被忽略

直覺上會想這樣寫:

1
2
3
{
  "availableModels": ["opus", "sonnet", "haiku", "claude-opus-4-6[1m]"]
}

結果 picker 只出現 4 個選項,而且 opussonnethaiku 跟內建的重複時行為不一致。aliases 不是合法的 model ID,放進去要看運氣。要放就放完整的 model ID。

同系列 model 只顯示一個

availableModels 如果放了 claude-opus-4-6claude-opus-4-7,同系列會被 dedup,可能只出現一個。這個行為沒有文件記載。

鎖版本要用 model,不是 availableModels

availableModels 控制的是選單裡有什麼,但啟動時用哪個 model 是 model 欄位決定的:

1
2
3
4
{
  "model": "claude-opus-4-6[1m]",
  "availableModels": ["claude-opus-4-6[1m]", "claude-sonnet-4-6", "claude-haiku-4-5"]
}

兩個要一起設。只設 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 也開始出現同樣問題
  • zerzerzerzPavelProdan 附截圖,確認「昨天還在,今天消失」

這個 pattern 在每次新 model 發布後都會重演:alias 指向新版,舊版從 picker 消失,沒有任何通知。

結果: 因長期不活躍被 bot 自動關閉。

#35630 — ANTHROPIC_CUSTOM_MODEL_OPTION 文件缺失

使用者 coygeek 發現 v2.1.78 的 changelog 提到這組環境變數,但官方文件完全沒寫。

結果: 已修復,env-vars 和 model-config 兩個文件頁面都補上了說明。

其他相關 open issues

Issue問題
#52310Bedrock 上 availableModels 被忽略,每個系列只顯示一個
#47164企業自訂 model ID 無法出現在互動式 picker
#40501settings.json 的 model 與內建選項重複時出現雙重項目
#49566ANTHROPIC_DEFAULT_*_MODEL 在 Bedrock 上導致重複的 “Custom” 項目
#53006VS Code extension 缺少 Sonnet 4.6
#38238WSL2 環境下 1M context model 不顯示

可以看出問題集中在兩個方向:alias 映射延遲沒有「擴充預設清單」的機制

推薦設定

試了一輪下來,availableModels 因為同系列 dedup 的問題,放了 4 個也不一定都能顯示。最務實的做法反而是:不動 availableModels,保留預設 picker,用 model 鎖版本,用 ANTHROPIC_CUSTOM_MODEL_OPTION 加一個額外選項。

~/.claude/settings.json(全域):

1
2
3
{
  "model": "claude-opus-4-6[1m]"
}

只加一行。預設 picker 不動(opus / sonnet / haiku 三個都在),但每次啟動固定用 Opus 4.6 1M。這裡的 opus alias 實際指向最新版(目前是 4.7),所以如果臨時想切新版,選單裡直接選就好。

~/.zshrc(用 ANTHROPIC_CUSTOM_MODEL_OPTION 加第 4 個選項):

1
2
3
export ANTHROPIC_CUSTOM_MODEL_OPTION="claude-sonnet-4-6[1m]"
export ANTHROPIC_CUSTOM_MODEL_OPTION_NAME="Sonnet 4.6 (1M)"
export ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION="Sonnet 4.6 with 1M context window"

這樣 /model 選單會有 4 個選項:預設的 opus / sonnet / haiku,加上一個 Sonnet 4.6 1M。涵蓋了日常需要的所有場景:

  • Opus 4.6 1M:透過 model 欄位鎖定,啟動即用
  • Opus 4.7:選單裡的 opus alias,需要時切過去
  • Sonnet 4.6:選單裡的 sonnet alias,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,目前沒有官方方案。

參考資源