承續上篇 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 範例:
{
"$schema": "https://opencode.ai/config.json",
"model": "google/gemini-3.1-pro-preview", // 主模型設定
"small_model": "google/gemini-3-flash-preview" // 強制指定背景任務使用的模型,避免自動選取導致額外扣費
}
目前設定檔已能成功讓 OpenCode 運行,不再發生啟動失敗的問題。
不過,這項修正是否能完美杜絕「意外扣費」,仍需觀察 OpenRouter 的 Generation Data。目前正在等待後台出現 Gemini 3 Flash Preview 的請求紀錄,以便驗證 OpenCode 是否確實將背景任務轉發到指定的 BYOK 模型上。
如果不幸遇到類似的背景扣費問題,建議優先檢查設定檔中的 small_model 指向,以免帳戶餘額在不知不覺中流失。
























