# Research Model Router：繁體中文參考

## 角色

這個 Skill 為程式開發、除錯、架構、驗證、研究及分析等實質工作階段建議模型與推理強度。保留原名稱以維持相容性。它只決定模型設定，不選擇或建立 Context，也不提前執行主要工作。

## 必須遵守的共同規範

每次路由前必須讀取 Plugin 的 `shared/runtime-routing-policy.md` 與 `shared/defaults.yaml`。使用者希望的自動程度與目前環境實際能力要分開判斷；第一次先讀取能力快照，再偵測缺少或過期的項目，後續 Routing Gate 只做新鮮度檢查。未知能力視為只能由使用者操作，只有觀察到宿主完成操作才能宣稱 `applied`。

## 被宿主直接選中時

先判斷載入原因。只有使用者明確要求「僅模型／推理路由」、查詢／切換 Model 模式、`adaptive-task-routing` 已傳入確定的 Context 並標記為協調委派，或先前完整 Gate 已完成、現在只是模型需求改變時，才由本 Skill 直接輸出。模式指令依共用政策立即處理，只確認實際值與作用範圍，不探測或推薦模型。若宿主在一般實質任務中直接選到本 Skill，而且 Context 與 Model 尚未一併判定，立即停止子流程，讀取 `../adaptive-task-routing/SKILL.md` 並只轉交一次；轉交前不得先輸出單獨的模型建議。傳遞內部 `delegated_from: research-model-router` 標記；協調入口再次載入本 Skill 時會帶入已解析 Context 與協調委派標記，此時不得再次轉交。

## 觸發時機

在使用者要求的計畫或前置分析已呈現、實際工作 Context 也確定後，於下一階段開始前觸發。交付改善計畫且有具體實質下一階段時，在回覆結束前給該階段建議，即使實作要等批准；只要求計畫不等於授權實作。直接使用此 Skill 時可沿用目前 Context，不強制先跑另一個 Router。

在試行擴大、執行轉為解釋、開始驗證、工作難度實質改變或困難證據綜合之前重新執行。回答完整且沒有實質下一階段時，不為了 Routing 增加工作；不因每次工具呼叫或普通聊天重新評估。

## 核心判斷

先輸出與型號無關的 `task_requirements`：下一階段需要哪些能力、相對推理需求、品質／驗證及時間／用量限制。在內部分別產生「最低足夠設定」與「任務適配設定」，依精簡／詳細偏好顯示。前者是預期能達到品質及驗證要求、成本最低的組合；後者是綜合模糊度、錯誤代價、驗證深度、延遲與用量後的最佳價值組合。兩者可以相同。在結構化證據中用低／中／高記錄「升級價值」，並指出建議設定相較最低設定能增加什麼；兩組相同時升級價值為低。讀不到目前模型，不代表不能交付具體的任務型建議。

資料缺少或過期時，按[宿主探測指引](../../../shared/host-discovery.md)只讀取適用的平台。從本參考檔所在目錄往上三層才是 Plugin 根目錄；共用檔位於 `<plugin-root>/shared`，不是 `skills/shared`。先用宿主資訊或使用者明確說明辨識介面；Codex CLI 呼叫 helper 時傳入 `--surface codex-cli`，Codex App 則使用 `--surface codex-app`。兩者都未明確辨識時使用 `--surface auto`，不能猜成 App，也不能只因有本地 shell 就推斷介面。自動辨識可使用獨立 Codex CLI 父程序；工具隔離看不到父程序時，也可用精確 thread 的穩定 `source: cli` 辨識 CLI，但不能因此把保存的模型／強度當成即時值。Codex 的選用唯讀 helper 不代表 Claude／Gemini 或 ChatGPT 沙箱也能使用。

helper 成功時，使用完整模型清單與它能建立的相符即時目前設定。helper 回報 `codex_state_unwritable` 或 `permission_denied` 時，該次嘗試後就停止，不另行要求讀取權限；改讀取 `<plugin-root>/shared/model-catalogs/openai-codex-cli.json`。在 Registry 的 `reference_surfaces` 所列 OpenAI 介面且未超過 `expires_at` 時，直接把官方跨介面能力資料用於建議，不先要求使用者提供選單。清單本身是在 CLI 觀察，因此只證明該次 CLI 的可用性；其他介面的帳號可用性只記為未驗證，不顯示在精簡結果，也不可冒充即時 App 資料。忽略無法確認的目前設定，直接從 Registry 的模型說明與受支援強度產生兩組具體建議。讀取清單不代表能切換；只有 `auto` 且模型／強度操作可呼叫、已授權又可驗證時才套用。否則依已確認介面把選單或 CLI 的 `/model` 列為可選操作；依 UX 契約只為變更或關鍵阻礙詢問；retain／非阻礙 defer 只繼續已授權工作。保存的 thread 設定與磁碟預設值只是提示，不冒充即時設定。

Runtime 描述不足時才按需查閱精確產品／型號的官方能力說明，標示來源及日期；官網不能證明帳號可用性。若有相關任務實測則用來校正，沒有實測時標示推論，不將描述變成精確分數，也不宣稱最優。Reasoning 必須使用該宿主實際支援的控制，不把 Gemini thinking budget 當成 Codex effort。

Gemini CLI 無法取得即時選單時，讀取 `<plugin-root>/shared/model-catalogs/gemini-cli.json`。檔案未過期時，只能從其中的 `auto`、`pro`、`flash`、`flash-lite` 別名產生建議；別名解析與帳號資格仍屬未驗證，不能自行改寫成某個後端型號，也不能推薦清單中沒有的 Gemini 1.5。Gemini 的相對任務難度不是設定值；只有目前 Session 確認可設定 `thinkingBudget` 或 `thinkingLevel` 時才顯示實際值，否則 Reasoning 固定顯示「使用模型預設」。

依宿主指引判斷清單適用範圍，不直接照抄 helper 初始的 `applicability: unverified`。已辨識為 Codex CLI 時，在目前任務以 `--surface codex-cli`、已解析的 helper 路徑及目前專案 cwd 探測；成功且標為 `applicability: verified` 的清單可支援推薦。只有實際發現目前 CLI 使用不同 remote、OSS provider、profile、model catalog、驗證環境或其他會影響可用性的啟動覆寫時，才降低適用性；不要求證明不存在隱藏覆寫。helper 是另一個 process、目前值未知、沒有 App bridge，或其他 metadata 讀取失敗使整體狀態為 `partial`，都不能單獨推翻成功的 CLI 清單。Runtime 描述及受支援強度足以做能力型推薦，不強制要求 benchmark。Codex App 使用 `--surface codex-app` 時，獨立 CLI 清單不能證明 App 帳號可用性，但 Registry 的官方跨介面能力資料仍可用來產生兩組具名建議。磁碟與已保存的設定即使一致，也仍不是即時值。

使用者在另一個 Terminal 開 CLI 測試時，以執行該工作的 CLI Session 為準，不要求它與安裝或修改 Plugin 的對話相同。另一個對話取得的清單若要轉用，仍需確認範圍；Terminal 或 process 不同本身不是清單不適用的證據。

只能建議目前環境支援的模型與推理強度。考量技術難度、模糊程度、多步推理、證據規模、驗證需求、錯誤代價、綜合與批判需求，以及時間和運算成本。

- 明確的擷取、格式處理與確定性轉換：偏向快速經濟設定。
- 一般多步研究：偏向平衡設定。
- 困難方法判斷、證據綜合、穩健性審查或高風險結論：偏向較強模型與較高推理強度。
- 高難度階段結束後：重新評估，只有剩餘階段的預期收益足以抵銷切換成本時才降低設定。
- 缺少資料、歷史不可得、定義未定或外部瓶頸：降低升級價值，因為更強模型無法補出證據。

最低足夠設定使用預期能完成任務的最低推理強度。只有工作確實涉及多來源、多步驟、取捨或困難核對時才提高到 `high`／`xhigh`；`max` 用於最困難且深度優先的單一問題，`ultra` 只在大型工作可拆成有意義的平行子任務時使用。不要把最高強度當成預設。

目前執行設定與可選模型清單要分別查證。清單不代表目前正使用哪個模型。模型清單優先取自 Runtime，可在 Session 或宿主定義的短期限內快取；其次使用已標記來源的使用者清單，最後才是具版本且未過期的備援 Registry。新 Session、清單改變、操作錯誤或過期時更新。評分以任務需求對應目前能力資料，不永久綁定模型名稱。

讀不到的目前欄位標記 `unknown`；只有宿主確認不支援推理強度設定時才能標記 `unsupported`。分開決定建議、與現況比較，以及實際套用：

| 已有證據 | 判斷 |
| --- | --- |
| 適用清單、強度選項及能力依據足夠，但目前組合未知 | 必須依任務給出兩組具體且受支援的模型與強度。目前值及是否需要切換仍未知；不能只因讀不到即時設定就改答 `CURRENT / CURRENT`。 |
| 已知目前組合，且有能力依據 | 仍列出兩組具名設定，再與觀察到的目前組合比較；有理由時沿用目前設定。替代組合須有充分依據。 |
| 能推薦模型，但該模型的強度選項未知 | 給出模型，強度保留 `CURRENT` 並明示選項未知。相對推理需求不是捏造的選單值。 |
| 已辨識為 OpenAI 介面、Runtime 探測無法完成，但有未過期的內建資料 | 該次讀取後停止，不另行要求權限；直接依官方跨介面能力資料給出兩組具體設定，不先要求使用者抄寫選單。帳號可用性與目前值只在結構化證據標為未驗證。只有 `auto` 且切換操作可呼叫、已授權、可驗證時套用；否則把 App 選單或 CLI `/model` 等實際控制列為可選操作，依 UX 契約只為變更或關鍵阻礙詢問；retain／非阻礙 defer 只繼續已授權工作。 |
| Gemini CLI 即時選單不可得，但 Gemini 專用備援未過期 | 只使用備援記錄的穩定別名產生兩組建議，不猜後端型號。沒有觀察到獨立思考控制時，Reasoning 顯示「使用模型預設」，不得把任務難度的低／中／高當成 Gemini 設定。先給建議，不先要求使用者抄寫 `/model`。 |
| 有界探索後，清單或能力依據仍不足 | 列出任務需求、探測來源與結果或具體存取限制、缺少的證據。暫留 `CURRENT / CURRENT` 並標記 `unverified`；必要時詢問一次實際選項，不能宣稱現況適合。 |

沒有自動切換工具不妨礙有依據的任務適配建議；目前模型未知時只暫時保留，不宣稱適合。控制只在值得切換或使用者明確要求时提供，依 UX 契約決定是否有真正需要詢問的問題。

## 使用者質疑建議時

一般備援流程不要求擴大讀取權限。只有使用者表示推薦的模型或強度不合理、詢問選擇原因，或明確要求按目前帳號重新確認時，才說明有用的診斷資訊：本次使用 Runtime 或內建參考資料、參考資料的觀察與到期時間、必要時帳號可用性尚未驗證，以及產生兩組設定的任務因素。

說明後，只有目前宿主確實存在一條可由額外權限解鎖、而且能查詢同一個 App／Session `model/list` 或同等資料的具體唯讀途徑時，才詢問一次最小必要權限，並說明要讀取什麼及為何能改善判斷。若一般檔案、網路、CLI 或核准權限只能看到另一個程序，或仍碰不到目前選單，就不得詢問。沒有相符讀取途徑時直接說明；使用者仍要求帳號專屬比較時，才請他提供選單。使用者拒絕後沿用參考建議，在介面、權限狀態或明確要求改變前不再詢問。

## 是否值得切換

選出兩組任務型設定後、套用模型或強度前，遵循[共同政策的階段延續與切換價值](../../../shared/runtime-routing-policy.zh-TW.md#階段延續與切換價值)。只在真正階段邊界評估，不因每個 Prompt 重選。使用協調入口傳入的實際 Context 與延續理由；拒絕交接或關閉 Context Router 不等於進入新對話。

已觀察的目前組合符合品質底線時，優先維持模型；綜合剩餘階段收益、切換成本、脈絡重用、設定、延遲、重試與返工。快取未知不等於零成本或必然失效；對話保留不證明快取可用，只調推理強度也要評估。品質缺口可優先於快取利益；新對話仍有設定成本，不強制換模型。

獨立產生 `switch_assessment`，比較目前組合與 `recommended_setting`，包含 `switch_value`（低／中／高／未知）、`decision`（retain／change／defer）與理由。`upgrade_value` 仍只比較建議與最低足夠組合；不為維持現況而覆寫兩組任務型設定。目前組合未知時切換價值未知、暫緩自動切換，仍交付兩組具體建議。未知成本可能扭轉判斷時保留或延後，不捏造節省。已符合建議組合時標低切換價值並維持。`auto` 只有 `decision: change` 才可由 Router 發起設定變更；使用者明確指定設定時優先遵循，但仍須確認可呼叫且可驗證。

依 UX 契約先顯示動作及任務理由，切換分數留在內部。retain／defer 不附切換邀請；非阻礙情況繼續已授權工作，真正的品質或目的地阻礙才詢問。切換評估延後不等於任務適配推薦未完成。

## 控制模式與輸出

讀取 [UX 契約](../../../shared/routing-ux.md)。`ask` 只在變更前或有關鍵阻礙時詢問；retain 與不影響工作的 defer 直接繼續已授權工作，不再詢問要不要保留。只要求分析或計畫時完成交付即可，不開始實作。`auto` 只套用有依據、已授權且能驗證的操作；無法套用就報告實際結果，有重大品質阻礙時不能假裝能繼續。`off` 不執行本 Router。

先交付使用者要求的分析／計畫，再於路由區塊先顯示動作與原因。內部仍計算 `minimum_sufficient_setting`、`recommended_setting`、`upgrade_value` 和獨立切換評估；外部把 recommended 稱為「任務適配設定」，不代表必須切換。預設 compact；detailed 額外顯示最低足夠設定、適配設定與升級理由，不重跑已完成 Gate。

資訊不足但可繼續時寫「暫時沿用設定」，不能宣稱已確認適合。只有有依據時才寫「維持目前設定」。無法讀取的目前設定省略，切換分數與來源只供診斷。不因缺少模型 metadata 就強迫詢問，也不掩蓋真正的品質或目的地阻礙。

retain／defer 不附切換選單或 `/model`。只有值得切換或使用者明確指定時才使用實際介面的控制：ChatGPT App／網頁的可見選單、Codex CLI 或 Gemini CLI 的 `/model`。Gemini 使用原生推理控制，未觀察到時寫「使用模型預設」。沒有可呼叫且可驗證操作時，不得說正在套用或已切換。

## 與 Context Router 的順序

```text
完成使用者要求的分析或計畫 → task-context-router → 確定 Context
→ research-model-router → 依授權與未決事項繼續或詢問
```

這個 Skill 決定「使用多少模型能力」；`task-context-router` 決定「在哪裡執行」。

整體順序由 `adaptive-task-routing` 協調 Skill 負責載入執行。本 Skill 只有在宿主誤將一般任務直接分派給子 Skill 時轉交協調入口，本身不做 Context 判斷；使用者明確要求模型專用路由時仍可單獨使用。後續僅模型需求改變且既有 Context 判斷仍有效時，只重跑本 Skill。
