dsh-effort-auto-toggle:按請求自動調度 reasoning_effort 的 DSH 插件

前言

在 DeepSeek Harness(DSH)桌面版裏,帶推理能力的模型通常要在每條請求前手動選 reasoning_effort。簡單問答用高檔浪費 latency 和 token,複雜任務用低檔又容易斷鏈。社區裏曾有把「自動」寫進檔位下拉的方案,但在切換模型或快照殘留時,僞檔位 auto 可能被原樣發給 API,觸發 UNSUPPORTED_REASONING_EFFORT。維護者 xclj123 的 dsh-effort-auto-toggle 把「自動」從下拉框挪到模型選擇器旁的獨立按鈕,並在手動透傳路徑上消毒非真實檔位;0.2.0 起還會向宿主查詢當前模型的真實檔位表再映射調度結果。

這是什麼

dsh-effort-auto-toggle 是 DSH 桌面版 Cordis 插件(MIT,當前 package 版本 0.2.2),分類屬於模型推理。項目在 GitHub 爲 xclj123/dsh-effort-auto-toggle,目錄頁見 SkillHub。它是 dsh-adaptive-effort 的 fork,核心目標是:點亮「自動」後按消息複雜度選檔;熄滅後恢復進入自動前的手動選擇,且不在檔位列表裏注入假檔位。

核心功能

按鈕與手動優先

點亮「自動」表示從下一條消息起由插件調度 reasoning_effort;熄滅則立刻回到原生手動選檔,並還原進入自動前的選擇。模型選擇器裏手選的檔位(含各 adapter 獨有名稱如 ultra)始終原樣透傳。

模型自適應檔位表(0.2.0+)

插件不寫死 low/high/max。每次請求通過宿主 llm 服務的 resolveModelInfo(provider, model) 讀取當前模型真實檔位表(例如 glm-5.3 爲 low/high/max,其他 adapter 可能是 low/high/highx/max/ultra 等)。調度器內部三檔語義映射爲:輕 → 最輕檔、重 → 最重檔、中 → 約 2/3 處(3 檔取第 2 檔,5 檔取第 3 檔)。

複雜度打分與回退

默認 mode 爲 minimax:用任意 OpenAI 兼容 chat 端點的小模型對最近一條用戶消息打分(打分時關閉思考)。無 key、超時或網絡不可用時回退零依賴啓發式(關鍵詞、長度、代碼塊);回退結果不緩存,下一條消息會重試打分模型。安裝時可選用 --mode heuristic 純啓發式運行。

工具連續性與會話隔離

開啓 allowToolUpgrade(默認 true)時:同一會話內若閒聊已定低檔,10 分鐘內出現重工具調用會自動升檔,減輕長鏈推理在低檔下斷鏈。連續性邏輯按會話隔離,避免跨會話泄漏(相對上游 fork 的改進點)。

顯示、安全與賬本

點亮時按鈕顯示 adapter 原文檔名(如 自動·low、自動·highx),消息角標同步(如 glm-5.3 · low)。對 GLM-5.3 等強制思考模型,手動選 off 會被鉗到最輕檔(clampForcedThinkingOff,默認 true),而不是等 API 報錯。每次調度決策與實際 token 用量寫入 JSONL(默認目錄 ~/.dsh/effort-auto-toggle/),可用報告腳本彙總。

前置要求

  • DSH 桌面版(README 寫明在 2026-10 宿主上驗證;依賴 agent/request waterfall、session/event、llm、settings 現代 API、客戶端 conversation.input.right 等錨點,宿主大改時需插件跟進)。
  • Node.js ≥ 20(安裝腳本與測試;也可用 DSH 自帶 Node)。

打分模型可選:不配 key 時用啓發式模式安裝仍可工作,精度低於小模型打分。

安裝與啓用

在已取得插件源碼並進入 dsh-effort-auto-toggle 目錄後,用官方安裝腳本寫入指定 profile(腳本會改 package.json / cordis.patch.yml,改動前留 .bak-<時間戳> 備份;--dry-run 可預覽)。

先看本機有哪些 profile(不傳 --profile 時會自動列出):

node tools/install.mjs

裝進非 live 的測試 profile(推薦先試用):

node tools/install.mjs --profile "<profile 目錄>"

帶 MiniMax(或任意 OpenAI 兼容)打分端點安裝:

node tools/install.mjs --profile "<profile 目錄>" \
  --mode minimax --minimax-key <你的key> \
  --minimax-url https://open.bigmodel.cn/api/coding/paas/v4 \
  --minimax-model glm-5.3-flash

寫入 desktop 直播 profile 需顯式 --force(腳本默認拒絕 desktop,防誤傷):

node tools/install.mjs --profile "<…>/profiles/desktop" --force

裝完後重啓 DSH。Windows / macOS / Linux 通用;profile 默認探測 ~/.dsh/profiles/。

配置

安裝時寫入 profile 的 cordis.patch.yml,之後可在設置卡直接修改(無需重啓):

字段 默認 說明
enabled true 總開關
autoOn false 按鈕是否點亮
mode minimax minimax / heuristic
minimaxApiKey — 打分端點 key
minimaxBaseUrl — OpenAI 兼容 chat 端點
minimaxModel — 打分模型名
allowToolUpgrade true 工具連續性升檔

僅 yaml 可改:scoreTimeoutMs(默認 9000ms)、clampForcedThinkingOff(默認 true)、ledgerDir(默認 ~/.dsh/effort-auto-toggle)。

典型用法

  1. 重啓 DSH 後,輸入欄模型選擇器左側出現「自動」按鈕(初始爲熄滅)。
  2. 點亮後,從下一條消息起自動調度;按鈕隨實際請求顯示當前檔(如 自動·low → 自動·high)。
  3. 再次點擊熄滅,恢復進入自動前的手動檔位。
  4. 每條回覆下方角標顯示該請求實際使用的檔位。

查看某會話的調度與 token 彙總:

node lib/report.js <sessionId前綴>

卸載(恢復 profile 內被改文件並刪除插件文件,需重啓 DSH):

node tools/install.mjs --profile "<profile 目錄>" --remove

適用場景與注意

適合經常在 DSH 裏切換「輕問快答 / 重推理 / 工具長鏈」、又不想每條消息手調檔位的開發者。自動模式依賴宿主 llm 檔位表與請求 waterfall;打分模式還依賴外網或自建兼容端點。

DSH 生態是「一切皆插件」;SkillHub 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。插件以當前 DSH 進程權限運行,會向 profile 打補丁並可能調用外部打分 API;安裝前請閱讀 倉庫源碼與 LICENSE,確認 --force 寫入 desktop profile 的影響。倉庫提供 npm test(21 個用例,node --test,無需 npm install)覆蓋 passthrough 消毒、手動優先、五檔模型鏈路等。

結尾

dsh-effort-auto-toggle 用獨立「自動」按鈕和 passthrough 消毒規避僞檔位 API 錯誤,並按模型真實檔位表做語義映射;配合可選小模型打分、啓發式回退與會話內工具升檔,在手動檔與自動調度之間可一鍵切換。詳情與更新見 SkillHub 目錄頁 與 GitHub 倉庫。

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

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

小夜