# 客戶端只有一個模型:閘道器按對話狀態自動分檔

> 把模型選擇從使用者端拿掉:客戶端只暴露一個模型名,閘道器按對話狀態(plan / 執行)自動分檔,強模型規劃、價效比模型執行,使用者無需選模型、設定不逐臺漂移。

規範連結: https://www.gatellm.io/zh-TW/use-cases/automatic-model-tiering/

把模型選擇從使用者介面拿掉 —— 使用者端只暴露一個模型名,規劃走強模型、執行落價效比模型,分檔發生在請求本來就要經過的那一跳上。

## 社群真正在抱怨什麼
「每個人設定裡的模型都不一樣,同一份 prompt 在兩個人那裡跑出不同結果」「新人第一週問得最多的就是該選哪個模型」「我們要下線一個模型,得逐臺改開發機的環境變數」—— 模型選擇被推給了最沒有依據做這個判斷的人:使用者看不到自己的用量,更判斷不出這次請求值不值得上強模型。
一刀切降到便宜模型又會掉檔:規劃與架構判斷交給小模型,返工比省下的錢更貴。而真正該分的是「這次請求在做什麼」—— 規劃還是執行,這件事客戶端從來就沒告訴過閘道器。

## GateLLM 怎麼做
客戶端只保留一個模型名,閘道器側用 from "*" 的全面映射把客戶端請求的任何名字正規化 —— 使用者在自己設定裡改成別的也不改變落點。使用者端不再需要解釋「該選哪個」。
分檔依據是對話裡本來就有的標記:Claude Code 的 plan 模式會注入 Plan mode is active(進入)與 Exited Plan Mode(退出)。指令碼掛在入口模型的 before 槽,從末尾訊息向前掃描、取末次出現的標記判定目前狀態,再調 context.useModel() 切路由 —— 判定是字串位置比較,不另起一次分類模型呼叫,也不多加一跳網路。
自動分檔必須掛 before 槽:after 槽拿到的是翻譯後的上游 body,讀不到客戶端注入的標記,且 after 槽的 useModel 只能同協議,而 plan 到執行是跨模型路由切換。入口模型與執行模型的 request_payload 類規則(如 prompt_cache_key)要各配一份 —— plan 態不切走、用入口模型的規則,執行態切走後用目標模型的規則。

## 落地的 5 個手段
- 入口正規化:客戶端只暴露一個模型名,from "*" 全面映射把任何客戶端名正規化為指定落點
- 自動分檔:before 槽指令碼從末尾向前取末次標記切路由 —— 進入標記會永久留在對話歷史,用「是否包含」判斷會永遠誤判為 plan 態
- 多協議護欄:指令碼開頭先判 context.sourceProtocol,非 Anthropic 請求直接放過 —— 同一個入口模型服務多種客戶端時不會被誤切走
- 可觀測:日誌模型列 SW 標籤標記指令碼切路、MM 標籤標記身份映射;統計與計費按最終模型名歸集,每次分檔的落點可稽核
- 零客戶端配合:改設定不用逐臺改開發機、映射與規則熱生效(唯一例外:指令碼記憶體上限 SCRIPT_MEMORY_LIMIT_MB 改動需重啟)

## 常問問題
### 客戶端還能自己選模型嗎?
能選但選了不改變落點:全面映射把任何請求名正規化,指令碼 useModel 是管理員強制改路、不受客戶端權限約束。使用者端只暴露一個名字,就不用再解釋該選哪個。

### 為什麼不用專門的模型路由器或分類模型?
延遲與形態。獨立路由器要多一跳、通常還要多一次分類呼叫;而這裡的分檔訊號是對話裡本來就存在的標記文字,判定是從末尾向前取末次標記的位置比較,跑在請求本來就要經過的路徑上。協議翻譯、鑑權、計量本來就都在閘道器,分檔不必再引入第二個元件去重複這些。

### 指令碼切了但日誌沒報錯、路由也沒變?
多半是指令碼記憶體溢位:每個指令碼跑在獨立 QuickJS 沙箱裡(堆上限 SCRIPT_MEMORY_LIMIT_MB,預設 64MB),溢位時按 log-and-continue 靜默丟棄本次全部副作用(含 context.useModel)。Claude Code 的幾十個工具定義會先佔一份記憶體,這是指令碼層消除不掉的下限 —— 先把上限調高(改動需重啟)。是否切走看日誌模型列的 SW 標籤。

- [完整教程:指令碼按 plan 模式切模型(docs 站)](https://docs.gatellm.io/zh-CN/howto/script-switch-model-by-plan-mode)

## 相關場景
- [強制模型使用策略:釘死 agent 實際跑的模型](https://www.gatellm.io/zh-TW/use-cases/enforce-model-policy.md)

## 相關頁面
- [首頁](https://www.gatellm.io/zh-TW/index.md)
- [定價](https://www.gatellm.io/zh-TW/pricing.md)
- [成本計算器](https://www.gatellm.io/zh-TW/calculator.md)
- [關於](https://www.gatellm.io/zh-TW/about.md)
- [預約示範](https://www.gatellm.io/zh-TW/demo.md)
- [常見問題](https://www.gatellm.io/zh-TW/faq.md)
- [比較 AI 閘道](https://www.gatellm.io/zh-TW/compare.md)
- [比較 LiteLLM](https://www.gatellm.io/zh-TW/compare/litellm.md)
- [比較 OpenRouter](https://www.gatellm.io/zh-TW/compare/openrouter.md)
- [比較 Alibaba Cloud AI Gateway](https://www.gatellm.io/zh-TW/compare/alibaba-cloud.md)
- [比較 Azure API Management](https://www.gatellm.io/zh-TW/compare/azure-apim.md)
- [比較 Apigee](https://www.gatellm.io/zh-TW/compare/apigee.md)
- [比較 Cloudflare AI Gateway](https://www.gatellm.io/zh-TW/compare/cloudflare.md)
- [比較 Kong AI Gateway](https://www.gatellm.io/zh-TW/compare/kong.md)
- [比較 Portkey](https://www.gatellm.io/zh-TW/compare/portkey.md)
- [LiteLLM vs Kong AI Gateway 比較](https://www.gatellm.io/zh-TW/compare/litellm-vs-kong.md)
- [LiteLLM vs OpenRouter 比較](https://www.gatellm.io/zh-TW/compare/litellm-vs-openrouter.md)
- [LiteLLM vs Portkey 比較](https://www.gatellm.io/zh-TW/compare/litellm-vs-portkey.md)
- [場景方案](https://www.gatellm.io/zh-TW/use-cases.md)
- [降低呼叫成本](https://www.gatellm.io/zh-TW/use-cases/reduce-cost.md)
- [達成高可用](https://www.gatellm.io/zh-TW/use-cases/high-availability.md)
- [多租戶隔離](https://www.gatellm.io/zh-TW/use-cases/multi-tenant.md)
- [合規與稽核](https://www.gatellm.io/zh-TW/use-cases/compliance-audit.md)
- [從症狀排障](https://www.gatellm.io/zh-TW/use-cases/troubleshooting.md)
- [混合多供應商模型堆疊](https://www.gatellm.io/zh-TW/use-cases/mixed-model-stack.md)
- [在 Office 內自架 AI](https://www.gatellm.io/zh-TW/use-cases/self-hosted-office-ai.md)
- [Token 用量可見性與歸因](https://www.gatellm.io/zh-TW/use-cases/token-ops.md)
- [Token FinOps: AI 支出分攤與管控](https://www.gatellm.io/zh-TW/use-cases/token-finops.md)
- [MCP 工具治理](https://www.gatellm.io/zh-TW/use-cases/mcp-tool-governance.md)
- [為所有模型統一加入網路搜尋](https://www.gatellm.io/zh-TW/use-cases/web-search-grounding.md)
- [多 Key 輪替與備援](https://www.gatellm.io/zh-TW/use-cases/multi-key-pooling.md)
- [限制接入的用戶端](https://www.gatellm.io/zh-TW/use-cases/client-admission-control.md)
- [強制模型使用政策](https://www.gatellm.io/zh-TW/use-cases/enforce-model-policy.md)
- [一種協定,任何模型](https://www.gatellm.io/zh-TW/use-cases/one-protocol-any-model.md)
- [Office / Microsoft 365 增益集](https://www.gatellm.io/zh-TW/office-addin.md)
- [術語表](https://www.gatellm.io/zh-TW/glossary.md)
- [模型目錄](https://www.gatellm.io/zh-TW/models.md)
- [SDK 與框架整合](https://www.gatellm.io/zh-TW/integrations.md)
- [AI Coding Agent 與 Harness](https://www.gatellm.io/zh-TW/coding-agents.md)
- [安全性與合規](https://www.gatellm.io/zh-TW/security.md)
