文章目錄
這篇文章有三個主角:一個固執的排錯工程師、一個聽起來很有把握的 AI、以及一份他們都沒去讀的官方文件。
結局是:工程師手動挖對了一半,AI 說中了一半又說錯了一半,官方文件早就把答案寫好了——只是沒人第一步就去查。
一、故事的起點:Qwen 在哪裡?
環境是 Windows 11,Ollama 本地跑著 qwen3.5:9b-q8_0,OpenCode v1.14.40 剛裝好。按理說一切應該順暢——但 OpenCode 每次啟動,都自作主張地選回了一個叫做 minimax-m2.7:cloud 的雲端模型。
排錯的直覺是:設定檔的問題。但 哪個 設定檔?
XDG 規範遷移的陷阱
OpenCode 在某個版本之後,悄悄從 Windows 慣例路徑遷移到了符合 XDG 規範的新路徑。舊版使用者習慣去改的地方,新版根本不理。
# 舊版慣例(不再生效) %APPDATA%\opencode\opencode.json # 新版 XDG 規範路徑(這才是有效的) %USERPROFILE%\.config\opencode\opencode.json
在這個路徑下,把 model 欄位手動修正為 ollama/qwen3.5:9b-q8_0,重啟,終於有效。Qwen 3.5 開始正常接管工作,而且 tool calling 能力也確認正常——它主動調用 read 工具讀取了本地的 CONSTITUTION.md,完全符合 agentic 工作流的期待。
二、Google Search AI 進場:半真的答案
排錯告一段落後,拿去問了 Google Search AI 模式,想看看是否有更快的方法。它給出了這樣的回覆:
ollama launch opencode --model qwen3.5:9b
(此指令會自動將 OpenCode 介面與指定的本地模型進行掛載)
第一反應是:這個指令看起來不像真的。Ollama 的 CLI 哪有 launch 子指令?立刻斷言這是幻覺,語氣還相當篤定。
三、官方文件打臉:幻覺指令是真的
直到有人說「你要不要看一下官網?」
打開 https://docs.ollama.com/integrations/opencode,第一段就是:
# Quick setup ollama launch opencode # 不啟動,只寫設定 ollama launch opencode --config
更關鍵的是,實際執行 ollama launch opencode --model qwen3.5:9b-q8_0 之後,終端機出現了這樣的提示:
This will modify your OpenCode configuration: C:\Users\User\.local\state\opencode\model.json Backups will be saved to C:\Users\User\AppData\Local\Temp\ollama-backups/ Proceed? Yes No
等等——這個路徑是什麼?.local\state\opencode\model.json?這是一個我們從來沒改過的檔案。
四、第六個檔案的現身
查看 model.json 的內容:
{
"recent": [
{ "providerID": "ollama", "modelID": "qwen3.5:9b-q8_0" },
{ "providerID": "opencode", "modelID": "minimax-m2.5-free" },
{ "providerID": "ollama", "modelID": "minimax-m2.7:cloud" }
],
"favorite": [],
"variant": { ... }
}
這份檔案就是整個排錯故事的幕後黑手。recent 陣列紀錄使用過的模型,minimax-m2.7:cloud 就躺在裡面,每次 OpenCode 啟動時從這裡讀取最近使用的模型——而不只是從 opencode.json 讀。
我們修對了 opencode.json(Global Config),但 model.json(State)這一層沒動到。所以 minimax 陰魂不散,是因為它根本住在另一個地方。
五、原廠設計邏輯:五層 Config 優先權
查閱 OpenCode 官方文件後,完整的設計邏輯是這樣的——
重要設計原則:設定檔採用合併(merge)而非取代(replace)。後載入的層只覆蓋衝突的 key,不衝突的設定全部保留。你可以在 Global Config 設全域偏好,在 Project Config 只寫專案差異,兩者共存不互傷。
手動修對了一層(Global Config),
ollama launch補上了另一層(model.json State),兩層對齊,Qwen 才真正坐穩位子。
— 完整的故事結論
六、決策樹:我到底該改哪個檔案?
把五層 Config + model.json 的複雜關係,轉化成一個可操作的決策工具。點選你的情境,直接拿到對應的路徑與指令。
七、故事教訓的完整清單
在排錯快速迭代的 CLI 工具時,花三分鐘讀 docs,節省三小時繞路。
ollama --help 列出所有子指令,30 秒就知道 launch 在不在。不需要賭一把。
我用篤定語氣否定了一個真實存在的指令。和批評 AI 幻覺的姿態完全矛盾,而且我連查都沒查。
OpenCode 有五層 Config + 一個獨立的 State 檔,只改一層不代表問題解決。
ollama launch opencode --model 的價值不是「更方便」,而是它修改了 model.json——一個你用手動方式根本不知道要去改的地方。
如果你也在 Windows 環境用 OpenCode + Ollama,踩過類似的雷,希望這份地圖能替你省幾個小時。
而如果你也曾經用篤定的語氣否定了一個其實存在的東西——歡迎加入這個俱樂部。門很大,我們都進來過。
#Ollama
#Windows
#Qwen3.5
#排錯
#XDG規範
#AI工具鏈
#Mr.τ
Comments