高階平台 / AI 工程
釘死 agent 實際跑的模型——plan 用一個、執行用另一個
先消掉客戶端側的模型選擇權,再把 plan 模式與執行階段分開:強模型規劃、便宜模型執行。
社群真正在抱怨什麼
「開發把 Claude Code 切到 Opus 去總結一份 changelog」「每個人的設定裡模型都不一樣,我們根本看不清誰花了多少錢」「我們試過客戶端側策略,可誰都能隨手改回去」。
模型選擇是一筆成本決策,不是開發的個人偏好——它必須在閘道器、在請求真正落地的地方強制執行。
GateLLM 怎麼做
三層疊加、一層都不可省:key 組的 models 白名單(入口閘)對未授權模型名直接 403;from 為 "*" 的全面模型映射把客戶端請求的任何名字重寫為指定模型;before-slot 指令碼讓 plan 態留在強模型、退出後切到執行模型。
Claude Code 的繞過請求(比如會話標題生成)不帶 plan 標記,自然落到便宜的執行模型——這正是你要的「別拿 Opus 做總結」。
落地的 5 個手段
- 入口閘:key 組的 models 白名單在路由前就拒絕任何未授權模型名
- 全面映射:from "*" → to 指定模型,把任何請求名正規化為一個模型
- plan/exec 分流:before-slot 指令碼讀 plan 模式標記,僅在退出 plan 後切換路由
- 可觀測:被切走的請求在日誌裡帶 SW 標籤,每條請求的真實落點可稽核
- 熱生效:映射與規則即時生效——不用重啟,不用逐開發派發