# TypeSafe Dispatcher（beta）

以工作類型挑選模型、不經 LLM 判斷的 beta 分類器。

v1.0.18 新增第二套路由後端。開啟 `dispatcher_beta` 後，路由改為向 TypeSafe（`https://api.typesafe.ai/v1/systemone`，模型 `jev-latest`）發一次分類呼叫，不再對自己註冊的模型下 prompt，因此路由不消耗任何註冊模型。需要 keychain 中的 `TYPESAFE_API_KEY`——TUI 在開啟開關時會要求輸入，`POST /v1/model` 在缺少時回 400 並帶 `missing_key`。金鑰於 TypeSafe Console（`https://console.typesafe.ai/keys`）建立。

該呼叫最多問三個問題：這是哪一類工作、請求是否指名特定的非 `pass` 模型、以及 session 已有前文時，這次請求是否延續上一個主題。回應時限 3 秒。工作類別決定 tier 順序與 reasoning 等級：

| 工作類別 | Tier 順序 | Reasoning |
|---|---|---|
| `code` | S > A > B > C | `xhigh` |
| `research` | S > A > B > C | `high` |
| `work`（其餘情形的預設） | A > S > B > C | `medium` |
| `chat` | B > C > A > S | `none` |
| `fetch` | C > B > A > S | `low` |

請求中指名的模型排第一；未指名且主題未變時，由 session 上一次使用的模型佔此位置，以重用其 prompt cache。上一次的模型居首時 reasoning 等級沿用上一次 —— v1.1.1 起只要是合法等級即沿用，不再限於較高者；且 v1.1.1 起這些居首的選擇不再被供應商優先序重排，只有其後依等級排序的候選會。上一次的模型在每次成功回覆後記錄，`openai` / `codex` 30 分鐘、`gemini` 60 分鐘、其他供應商 5 分鐘後失效。其餘候選依 tier 排序，先讀 `model_tag`，未設定則套用上述命名規則；同 tier 內 `claude-code`、其次 `codex` 的模型排前，其餘依命名規則列出的模型家族順序決定先後。`research` 工作中，`copilot@` 模型因 Copilot context window 較小而排在同等級其他模型之後（v1.0.26 起）。`pass` 模型不參與此排序。送出的 context 為最後 4 則 user 與 assistant 訊息，每則截至 2,048 字元（v1.0.19 之前為 6 則、2,000 字元）。呼叫失敗或逾時則退回 LLM dispatcher。

在 TUI 以 `/model` → `dispatch` → **TypeSafe/Jev(beta)** 開啟，或 `POST /v1/model` `{dispatcher_beta: true}`。把一般模型選為 dispatcher 會將其關閉。
