dsh-auto-router:按輪次自動切換模型與推理檔位

前言

在 DeepSeek Harness(DSH)裏做智能體時,每一輪用戶問題對算力和推理深度的要求差很多:寒暄、查資料、多步排錯、大重構不該用同一套 model 和 reasoningEffort。手動在 Composer 裏來回切模型,既慢又容易忘;全程鎖在最強檔則成本和延遲都偏高。社區插件 dsh-auto-router(維護者 dakouchiya,分類:模型推理)按每一輪用戶請求的實際內容自動選檔,並在同一次回覆過程中根據工具報錯與進展再做升檔或降檔,同時在輸入框旁和回覆尾部展示當前檔位與開銷。

這是什麼

dsh-auto-router 是 DSH 的 Cordis 插件:在每輪開頭用小模型做任務分類(默認不依賴單純關鍵詞匹配),從五檔映射到 provider / model / reasoningEffort;通過 agent/pre-step 完成分類、通過 agent/request 以 waterfall 方式替換本次 LLM 調用的 LlmCallConfig。插件只讀判定,不向會話寫入額外內容,決策追加到 <DSH_HOME>/auto-router/decisions.jsonl。

五檔與落點模型

分類器在每輪開始時讀取本輪問題(可帶最近兩輪用戶消息作上下文),判斷需要多少「思考與驗證」,再在五檔中選一檔並說明原因。用戶可在消息開頭使用 #lite / #輕量 / #ultra / #極深 等指令直接指定檔位,不再調用分類器。

檔位 顯示名 典型場景 默認落點
lite 輕量 寒暄、確認、簡單事實、簡單換算 deepseek-flash / off
standard 中量 常規問答、信息查詢、簡單改寫/總結、小改動 deepseek-flash / high
deep 重量 多步推理、調試排錯、方案設計、代碼實現 deepseek-flash / max
max 較深 高難度、高可靠需求、大重構/遷移 deepseek-v4-pro / high
ultra 極深 明確要求「極限/不惜成本」或極端難題 deepseek-v4-pro / max

注入上下文(如 runtime-context、skill-catalog、子代理說明等)會在分類前過濾,避免長系統文案把每輪都頂到 deep。分類器超時(默認 6s)、報錯或輸出無法解析時,退回結構規則兜底,並在日誌中標明 reason。

升到 Pro 前的確認

當目標模型匹配 Pro(默認 modelPattern: pro)且當前基準不是 Pro 時,會先彈出確認(默認 15 秒窗口)。不點、超時或點「不切換」則保持原模型;點「切換」則本輪及後續步驟使用新配置。同輪只問一次;帶圖片/附件的回合跳過切模型確認。可在配置的 approval 塊調整 enabled、windowMs、modelPattern、skipWhenPinned。

一輪之內的改檔

首判只是起點。同一回覆裏,插件在兩個時機把「當前任務 + 剛發生的事 + 當前檔位」交給同一個便宴模型,輸出 up / down / hold 並附原因,據此最多升/降一檔:

  1. 工具報錯時:把錯誤原文交給監督模型,由它判斷是檔位不夠還是任務本身問題(例如文件不存在類錯誤不會誤觸發升檔)。
  2. 每 rejudgeEverySteps 步(默認 5):看進展是否順暢,卡頓則 up,明顯偏高則 down。

沒有「報錯 2 次必升」這類固定閾值;拿不準則 hold。同輪內有限流(3 秒冷卻、maxRejudgesPerTurn 上限)。一輪中途若用戶又發新消息,會對新內容重新判定並按新檔執行。

安裝與啓用

當前發佈包通過 GitHub Release 安裝(資料中的命令針對 v1.1.1;倉庫 package.json 版本爲 1.1.2,以你實際下載的 tgz 爲準)。尚未發佈到 npm;發佈後可直接 dsh plugin --profile <profile> add dsh-auto-router。

dsh plugin --profile <profile> add https://github.com/dakouchiya/dsh-auto-router/releases/download/v1.1.1/dsh-auto-router-1.1.1.tgz

也可下載同一 tgz,在插件管理裏從本地包安裝。裝完後在 設置 → 插件 可見常用開關(enabled / dryRun / mode / logDecisions);完整配置寫在 profile 的 cordis.patch.yml(用戶層,升級不丟)。隨包默認使用 DeepSeek 內置模型名;若使用其他 provider,把 provider 與各檔 model 改成宿主裏真實存在的 id 即可;解析不到的模型保持當前配置不變,不會發出非法請求。

環境要求(來自 package.json):Node >=20,DSH >=0.2.1-rc.1 <0.2.2-0 || >=0.2.2-0 <0.3.0-0。許可證 MIT。插件以當前 dsh 進程權限運行,安裝前宜自行查看源碼與許可證。

配置示例

在 profile 的 cordis.patch.yml 中增加或合併:

- id: auto-router
  config:
    enabled: true
    dryRun: false          # true = 只記錄決策,不改模型(演練模式)
    mode: balanced         # economy | balanced | quality,寫入分類器傾向
    provider: deepseek-account
    tiers:
      lite:     { model: deepseek-flash,    effort: 'off' }
      standard: { model: deepseek-flash,    effort: high }
      deep:     { model: deepseek-flash,    effort: max }
      max:      { model: deepseek-v4-pro,   effort: high }
      ultra:    { model: deepseek-v4-pro,   effort: max }
    classifier:
      enabled: true
      model: deepseek-flash
      effort: 'off'
      timeoutMs: 6000
      maxInputChars: 3000
    approval:
      enabled: true
      windowMs: 15000
      modelPattern: pro
      skipWhenPinned: false
    history:
      maxBytes: 2097152
    logDecisions: true

effort 僅接受 off / low / high / max(由當前模型能力決定)。若目標模型不支持某檔位,會按 off→low→high→max 階梯就近收斂。

/route 命令

命令 作用
/route 查看開關、模式、五檔映射、本會話最近一次判定
/route lite / standard / deep / max / ultra 本會話臨時固定檔位(中文檔名如輕量/中量亦認)
/route auto 恢復自動
/route catalog 列出當前 provider 下模型及各推理等級
/route history [n] 讀歸檔路由記錄(默認最近 10 條)

界面與本地記錄

輸入框左側徽章(conversation.input.left)顯示實際生效的檔位與模型;Pro 被拒或超時時顯示實際檔位並在懸停中註明目標。檔位變化時會短暫閃爍並用 ↑/↓ 標方向,數據來自只讀 API api/auto-router.state(約 1.5s 輪詢)。

每條完成回覆下方有可展開的回合標籤(conversation.chat.turnTail):五檔落點、本輪檔位與模型、首判來源、從初判到結束的 token/花費及改檔明細。裝完或更新客戶端代碼後需強制刷新頁面(如 Ctrl+F5)以加載新客戶端模塊。

持久化目錄爲 <DSH_HOME>/auto-router/:turns.jsonl 記錄活躍回合(單文件上限由 history.maxBytes 控制,默認 2MB,超限輪轉並歸檔);decisions.jsonl 記錄每次決策/改檔。側邊欄「路由歷史」入口僅在打開面板時讀取完整歷史;要看歸檔用 /route history [n]。

延遲與行爲邊界

每輪至少一次小模型調用(首判,默認 deepseek-flash / off),資料中估算約 0.0003–0.0006 元/次量級;中途報錯或檢查點會再加同類調用。升 Pro 的確認本身不調用模型。

本條消息帶圖片或文件時不切模型,只記錄決策。判定只讀本輪用戶批次;工具續步沿用本輪檔位。模型切換後,本輪後續步驟的基準配置會更新爲新配置。

卸載與測試

dsh plugin --profile <profile> remove dsh-auto-router

或在插件管理中移除對應 bundle。開發者可在插件目錄執行 node --test 跑自帶測試。

結尾

若你希望 DSH 在「模型推理」類任務裏自動平衡成本與深度,而不是每輪手工選模型,dsh-auto-router 提供了從分類、請求改寫、Pro 確認到一輪內改檔的完整鏈路,並配合 Composer 徽章與回合標籤把決策透明化。插件目錄頁:https://www.skillhub.cn/plugins/dakouchiya/dsh-auto-router;源碼與說明:https://github.com/dakouchiya/dsh-auto-router。SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜