承續上篇 OpenCode 搭配 OpenRouter 的踩坑紀錄:意外的模型扣費之謎,在今日反覆測試之後,終於找到了初步的解決之道。


今日行動:馴服 OpenCode 的設定檔

為了拿回控制權,嘗試透過設定檔明確指定 small_model,在摸索過程中排除了幾個關鍵障礙:

  • 路徑迷蹤:在 Windows 系統上,OpenCode 的設定檔位置並非在安裝目錄,而是位於 %USERPROFILE%\.config\opencode\opencode.jsonc
  • 格式陷阱:模型設定必須是頂層字串格式;我曾嘗試使用巢狀物件(nested objects)來描述模型屬性,但這會導致解析錯誤。
  • 聯動依賴(關鍵):這是過程中遇到的最大阻礙,如果只單獨設定 small_model 而忽略了 model 的宣告,OpenCode 會噴出 ConfigInvalidError 並導致 Session 無法載入;兩者必須同時存在於設定檔中。
  • Model ID 命名:Model ID 格式不需要額外加上 openrouter/ 前綴,直接使用原廠定義的 ID 即可。

最終有效的設定方案

經過多次失敗與修正,整理出這份能讓 OpenCode 穩定啟動的 opencode.jsonc 範例:

1{
2    "$schema": "https://opencode.ai/config.json",
3    "model": "google/gemini-3.1-pro-preview",  // 主模型設定
4    "small_model": "google/gemini-3-flash-preview"  // 強制指定背景任務使用的模型,避免自動選取導致額外扣費
5}

目前設定檔已能成功讓 OpenCode 運行,不再發生啟動失敗的問題。

不過,這項修正是否能完美杜絕「意外扣費」,仍需觀察 OpenRouter 的 Generation Data;目前正在等待後台出現 Gemini 3 Flash Preview 的請求紀錄,以便驗證 OpenCode 是否確實將背景任務轉發到指定的 BYOK 模型上。


如果不幸遇到類似的背景扣費問題,建議優先檢查設定檔中的 small_model 指向,以免帳戶餘額在不知不覺中流失。