使用 OpenCode 搭配 OpenRouter 串接 時,在後台發現了一筆預期之外的扣費,錢不是走自己的 Key,而是悄悄從 OpenRouter 帳戶餘額扣掉的。
問題根源:獨立的 Small Model 機制
查看 OpenRouter 的 Generation Log 後發現,OpenCode 在背景會自動發送額外的 API 請求,用來處理「生成 Session 標題」、「壓縮摘要 Context」這類輕量級任務。
問題在於,這個 small_model 機制不繼承使用者的主模型設定與 BYOK 配置,而是自行在 OpenRouter 可用的 Provider 列表中挑選便宜模型,這次挑中了 anthropic/claude-haiku-4.5,走的是 Amazon Bedrock,直接扣除帳戶餘額。
解法:在設定檔中明確指定 small_model
經過多次試誤,找到有效的設定方案:
Windows 設定檔位置(注意不是安裝目錄):%USERPROFILE%\.config\opencode\opencode.jsonc
有效的設定格式:
jsonc{
"$schema": "https://opencode.ai/config.json",
"model": "google/gemini-3.1-pro-preview",
"small_model": "google/gemini-3-flash-preview"
}
三個常見的設定地雷
路徑找錯:設定檔不在安裝目錄,在使用者目錄下的 .config/opencode/。
格式錯誤:模型設定必須是頂層字串,用巢狀物件(nested objects)描述模型屬性會導致解析錯誤。
漏掉 model 宣告:只設定 small_model 而沒有同時宣告 model,會觸發 ConfigInvalidError 導致 Session 無法載入,兩者必須同時存在。
使用聚合 API 工具時,背景任務走的模型不一定是你設定的那個,建議上線後優先確認 Generation Log,避免帳戶餘額默默流失。
感謝閱讀,為了方便日後系統化檢索,我將技術筆記同步收錄在個人知識基地愷的大冒險 Kai's Adventure