OpenClaw 模型設定優先權層級

openclaw:預設模型、Agent Defaults、Agent Models、Session Override.... 到底甚麼是甚麼?

我明明設定好 glm-4.7-fresh 為預設模型 

可到 TG 跑的又是另外一個, 

改來改去,一直摸不清楚 

乾脆叫 Claude 教我😅

底下就是他教的 :

OpenClaw 的模型覆蓋邏輯是由上至下(數字越大優先權越高):

優先序

層級名稱

影響範圍

關鍵檔案位置

P4

Session Override

最高優先:只影響該次對話 (例如特定的 TG 私訊)

sessions.json 中的 modelOverride

P3

Agent Models

影響特定 Agent 的可用清單 (白名單)

~/.openclaw/agents/main/agent/models.json

P2

Agent Defaults

全域預設:沒被指定時,大家通用的模型

openclaw.jsonagents.defaults.model

P1

Global Providers

最底層:所有可用的連線資訊 (電話簿)

openclaw.jsonmodels.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.jsonagents.defaults.model.primary

改某個特定對話的模型

在 TG 中下指令,或修改 sessions.jsonoverride 欄位

新增/移除可用模型

兩處都要改


1. openclaw.json (連線資訊)


2. agent/models.json (權限清單)


老漁碎碎念筆記

以前踩過的坑就是「只改了 openclaw.json 但沒改 agent/models.json」。

記住: 沒進 Agent 的白名單,全域設定再怎麼改,Agent 也看不到那個模型!

Subscribe to 1962的魚

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
訂閱