我明明設定好 glm-4.7-fresh 為預設模型
可到 telegram 跑的又是另外一個,
改來改去,一直摸不清楚
乾脆叫 Claude 教我😅
底下就是他教的 :
OpenClaw 的模型覆蓋邏輯是由上至下(數字越大優先權越高):
| 優先序 | 層級名稱 | 影響範圍 | 關鍵檔案位置 |
| P4 | Session Override | 最高優先:只影響該次對話 (例如特定的 TG 私訊) | sessions.json 中的 modelOverride |
| P3 | Agent Models | 影響特定 Agent 的可用清單 (白名單) | ~/.openclaw/agents/main/agent/models.json |
| P2 | Agent Defaults | 全域預設:沒被指定時,大家通用的模型 | openclaw.json → agents.defaults.model |
| P1 | Global Providers | 最底層:所有可用的連線資訊 (電話簿) | openclaw.json → models.providers |
💡 白話概念對照表
如果用「打電話」來比喻,邏輯會非常清楚:
| 層級 | 作用描述 | 生活比喻 |
| Global Providers | 定義「我有哪些模型可用」 | 電話簿:存了所有人的號碼 |
| Agent Defaults | 設定「平常優先打給誰」 | 快速撥號:沒想太多就撥這支 |
| Agent Models | 規定「這個 Agent 准許打給誰」 | 白名單:這支分機只能打某些號碼 |
| Session Override | 指令「這通電話我要改撥另一支」 | 手動撥號:這次強行指定號碼 |
🔍 實戰場景分析(老漁的 .94 案例)
為什麼你設定了 glm-4.7-fresh 為預設,TG 跑的卻是另一個?
- 全域設定 (P2):你確實把 primary 設成了 73-glm。
- 群組對話 (龍蝦指揮所):正常跟隨 P2,所以使用的是 glm-4.7-flash。
- TG 私訊 (P4):你的 TG DM 因為之前可能下過指令或紀錄,被 Override 鎖定在了 74-lfm2/lfm2:24b。
解決方法:在 TG 對話中輸入 /model 指令重新切換,或是直接去 sessions.json 把該 Session 的 modelOverride 刪掉。
🚀 疑難排解:我想改模型,該動哪裡?
| 你的目標 | 修改路徑 |
| 改所有人的預設模型 | 修改 openclaw.json → agents.defaults.model.primary |
| 改某個特定對話的模型 | 在 TG 中下指令,或修改 sessions.json 的 override 欄位 |
| 新增/移除可用模型 | 兩處都要改:
1. openclaw.json (連線資訊) 2. agent/models.json (權限清單) |
老漁碎碎念筆記:
以前踩過的坑就是「只改了 openclaw.json 但沒改 agent/models.json」。
記住: 沒進 Agent 的白名單,全域設定再怎麼改,Agent 也看不到那個模型!