OpenClaw Gateway 上線後,生產環境通常會問如何同時收斂成本與延遲。modelRouting 在上游呼叫之前依估計上下文規模分層流量,而不是永遠支付頂規模型價格。本文說明它解決什麼問題、在 openclaw.json 內如何與 agents.defaults 及後備路徑並列、如何把 SLO 對應到 maxTokens 階梯,並提供六步上線檢查清單與誤設定排查——補足本站安裝、systemd、Docker 各篇。
在生產環境,OpenClaw 請求常同時承載系統提示、對話紀錄、工具輸出與 RAG 片段。全部長期餵給單一旗艦模型會讓帳單與尾延遲爆掉;只依賴失敗後的後備路徑,則往往在燒掉巨大上下文後才發現走錯路。modelRouting 在上游推論之前估計上下文 token 規模並選擇層級,讓「小問題預設用小模型」——不是事後才補救。
團隊最常見的六種痛點訊號——若多項同時出現,請把路由納入設定審查議程,別只盯 Grafana:
尾延遲拉長: QPS 相同但 p95/p99 偏離平均值並隨對話長度上升——重上下文路徑被過度使用。
非線性支出: 流量升 30%、帳單升 100%——常是「每個工作階段預設最大模型」。
工具呼叫膨脹上下文: 單回合多段工具輸出讓 token 暴衝,造成靜默截斷或意外重試。
後備鏈太長: 使用者無感,但單一請求已串多個模型——延遲與成本疊加。
缺乏路由可觀測性: 只記最終模型名稱,不知為何選該層——排查變成猜測。
多租戶隔離薄弱: 共享 Gateway 上重工作階段拖累輕工作階段的 SLO——需依上下文形狀硬性分流。
讀完本站OpenClaw 安裝/部署系列後,你應已有「行程常駐、埠與通道健康」的前提。本文處理同一長壽行程內的模型選擇。它與遠端執行(自架 runner 或專屬遠端 Mac)正交:路由決定哪個大腦;執行層決定哪台機器做事。
常見誤解:modelRouting 是「另一個負載平衡器」。它更接近依上下文形狀路由——先估規模再選模型;若做輪詢,追蹤看起來聰明,帳單卻很誠實。
兩者不必互斥,但請分開職責:後備路徑對應失敗語意——模型不可用、錯誤、速率限制;modelRouting 對應成本/延遲語意——這一輪有多重。混在一起會出現「路由選了大模型,失敗又落到小模型」——為戲劇性付兩次錢。
| 面向 | primary + 後備路徑(經典) | modelRouting(上下文層級) |
|---|---|---|
| 觸發 | 錯誤碼、逾時、可重試失敗 | 估計上下文 token 閾值(例如上下文規模策略) |
| 主要收益 | 可用性:從差模型救出 | 效率:輕量對話不必付旗艦價 |
| 典型風險 | 長鏈拉長尾延遲並重複計費 | 錯誤閾值誤分重/輕 |
| 可觀測性 | 失敗率、重試、切換原因 | 路由命中分佈、閾值附近錯誤、token 百分位 |
| agents.defaults | 宣告 primary 與後備清單 | 在 defaults 下加路由區塊,於呼叫前分流 |
把「失敗時替換」與「失敗前選擇」寫在兩頁——值班同仁會感謝你。
請結構化記錄路由決策(層級命中、估計 token 區間、最終模型 ID);否則正式環境只見最終模型,無法審閾值。下方六步即為釋出門檻。
給已能交付設定變更的工程師——每一步都有產出,避免 modelRouting 變成一次性 JSON 塗鴉。
固定 SLO 用語: 目標 p95 延遲、每工作階段成本上限、假設的「重」工作階段占比。沒有 SLO 就沒有認真的閾值。
抽樣 token 分佈: 真實對話與工具輸出——含尾部,而非僅平均長度。
草擬三層: 輕/中/重模型 ID,以及絕不能落在輕層的任務(例如多段工具)。
接線 modelRouting 與遙測: 命中、估計 token、最終模型寫入結構化日誌與指標堆疊。
受控金絲雀: 在切片上雙跑新舊版,觀察成本與延遲百分位後再升級。
回滾開關: 保留快照,路由失準時可回到「defaults + 短後備鏈」。
{
"agents": {
"defaults": {
"model": { "primary": "anthropic/claude-sonnet-4-5" },
"modelRouting": {
"enabled": true,
"strategy": "context-size",
"thresholds": [
{ "maxTokens": 4000, "model": "anthropic/claude-haiku-4-5", "description": "light" },
{ "maxTokens": 100000, "model": "anthropic/claude-sonnet-4-5", "description": "medium" },
{ "maxTokens": null, "model": "anthropic/claude-opus-4-5", "description": "xlarge context" }
],
"fallbackOnOverflow": true
}
}
}
}
說明: 此處示範結構與語意;實際鍵與預設值須符合你的 OpenClaw 版本。比對設定並在升級 Gateway 前跑整合夾具。
可用的心智模型:defaults 宣告主模型與一般後備;modelRouting(依版本)與 defaults 協作做依上下文分流;後備路徑仍處理上游失敗。在測試環境驗證三件事:健康路徑上不應瘋狂切模型(若會,代表閾值過緊);路由後的後備仍正常;日誌區分路由命中與失敗替換。
遠端運算常見拓撲:Gateway 在 Linux VPS 或容器,重工具鏈或僅 macOS 步驟走佇列到專屬遠端 Mac 執行器。modelRouting 只在 Gateway 內分層推論——不取代跨機排程(仍是佇列/runner 問題)。
單一 Gateway 上有多租戶代理時,請給租戶不同路由設定檔或金鑰——否則重租戶的上下文估計會抬高所有人的水位。
警告: 將 fallbackOnOverflow 視為「上下文塞不進模型」,而非「省錢」旋鈕——誤用會導致靜默截斷或隱藏重試。
供值班快速路由;若估計 token 與供應商帳單嚴重背離,檢查工具輸出是否未納入估計或日誌被抽樣。
fallbackOnOverflow 語意。在拋棄式筆電或無容量保證的主機上跑 Gateway,即使路由完美也會摧毀 p95;沒有獨佔、常駐、可合約化的 macOS 執行平面,工具鏈與本機建置難以自動化。需要把 OpenClaw 與 iOS/macOS 建置、CI、代理放在同一長壽生產 SLO的團隊,通常更快穩定的做法是把重執行放在專屬遠端 Mac 節點,而非永久拋棄式環境。平衡路由政策與執行器經濟性時,NodeMini Mac Mini 雲端租賃可作為基底:在 Gateway 用 modelRouting 分層推論,重工具鏈放專屬節點,並把金鑰與容量寫進 runbook。