三省六部制(dsh-san-sheng-liu-bu):按任務難度自動切換推理檔位與工具集

前言

在 DeepSeek Harness(DSH)裏跑同一套模型時,若每一步都帶上十幾萬 token 的上下文、把推理檔固定在 high,並讓所有工具 schema 參與往返,單步延遲會明顯高於「只問一句簡單問題」時的直覺預期。慢的主因往往不在模型本身或緩存,而在 harness 每步的默認組合:大上下文、高推理、全量工具。

下面介紹社區插件 dsh-san-sheng-liu-bu(三省六部制流程優化插件,維護者 qiushuiqianpingsha,分類:工作流)。它在本地用啓發式規則給用戶消息打分,把任務分成簡單、中等、複雜(以及「不確定」時先問用戶),再對應調整 reasoningEffort 與簡單檔下的工具可見範圍,讓簡單任務少想、少帶工具,複雜任務仍保留 high 與全量工具。

這是什麼

插件全名見 package.json:三省六部制流程優化插件,npm 包名 dsh-san-sheng-liu-bu,當前版本 0.1.0,許可證 MIT,要求 DSH ^0.2.0-rc.1 || ^0.2.1-rc.1 與 Node ^22.19.0 || >=24.0.0。

名稱對應實現分工:中書省定策(本地判定難度)→ 門下省審議(不確定時倒計時提問)→ 尚書省六部執行(按檔位改推理與工具)。它不調用額外模型做分類,判定邏輯在 lib/classify.js,零網絡、零 LLM 開銷。

核心功能

檔位與工具映射

判定 推理檔位(reasoningEffort) 工具
簡單 simple off(可通過配置改爲 low) 默認隱藏約 50 個重工具(web、子代理、團隊、終端、任務、會話檢索、hindsight、媒體渲染等,清單可配 denyTools)
中等 medium low 全部保留
複雜 complex high 全部保留
不確定 ask 彈出帶倒計時的提問卡(簡單/中等/複雜),超時按中等 按用戶選擇處理

說明:DeepSeek 的 deepseek-flash 只支持 off / low / high / max,沒有 medium。因此「中等」在實現上落地爲 low,屬於配置取捨,而非插件缺陷。

本地判定規則(啓發式)

對用戶消息加權打分,主要信號包括:

  • 偏簡單:篇幅短(如少於 60 字、少於 160 字加分)、事實類動詞(查一下、翻譯、多少錢、等於等)、短問句、出現「簡單 / 快速 / 一句話」等。
  • 偏複雜:長文、多行、代碼圍欄、路徑或 URL、多條項目符號、複雜動詞(分析、排查、調試、優化、重構、設計、實現、部署等,有上限)、連接詞(然後、接着、分別等)。
  • 延續上一輪:問候語或「繼續 / 好的 / ok」在開啓 continuationReuse 時複用上一輪檔位。
  • 交給用戶:含糊短句(如「幫我看看」)或雙方分數接近時進入 ask;子代理消息(存在 parentSession)不參與判定,避免誤彈提問。

掛載點(爲何能影響「本步」)

  • agent/inbox/claimed:同步階段、早於本步工具表生成;在此調用 agent.ctx.tools.restrict() 才能限制當前步的工具 schema。
  • agent/request(waterfall):改寫每步請求的 reasoningEffort;改寫前用 ctx.llm.resolveModelInfo() 校驗模型是否支持該檔位,不支持則不改,避免 UNSUPPORTED_REASONING_EFFORT 導致整輪失敗;complex 檔默認顯式寫回 high,避免繼承上一輪的 off。
  • agent/pre-step:處理不確定時的 userQuestions.askTimed() 提問卡。
  • agent/status(idle) 與 agent/disposed:解除工具限制,避免殘留。

插件通過 dsh.bundle.patch(cordis.patch.yml)登記進 profile 的 bundle 列表,下次加載生效;GUI 需重啓或重連才能拉起重載後的組合。

安裝與啓用

安裝示例來自項目 README(本地 link 路徑需按你的機器替換):

$env:ELECTRON_RUN_AS_NODE=1
& "D:\Program Files (x86)\deepseek harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add link:"C:\Users\55061\Documents\deepseek-harness\default-workspace\plugins\dsh-san-sheng-liu-bu"

卸載:

& "...\dsh.cmd" plugin --profile desktop remove dsh-san-sheng-liu-bu

裝完後可在 profile 的 package.json 裏檢查 dsh.profile.bundles 是否出現 dsh-san-sheng-liu-bu。

在 profile 的 cordis.patch.yml 中爲 id san-sheng-liu-bu 增加 config:,字段定義見 lib/index.js 的 Config:

字段 默認 說明
enabled true 總開關
simpleEffort "off" 簡單檔推理;"" 表示不改請求
mediumEffort "low" 中等檔
complexEffort "high" 複雜檔
modeOverride "" 強制 simple / medium / complex,跳過判定
restrictSimpleTools true 簡單檔是否隱藏重工具
denyTools 約 50 個 簡單檔隱藏清單
askOnUncertain true 不確定是否提問;關則直接中等
askTimeoutMs 90000 提問卡倒計時(毫秒)
continuationReuse true 「繼續 / 好的」複用上一輪檔位
debug false 判定與檔位切換 debug 日誌

示例片段:

- id: san-sheng-liu-bu
  name: 'dsh-san-sheng-liu-bu'
  config:
    simpleEffort: low
    askTimeoutMs: 60000
    debug: true

典型用法與驗證

README 給出的可復現檢查步驟:

  1. 安裝後確認 dsh.profile.bundles 含 dsh-san-sheng-liu-bu。
  2. 新會話發送「1+1等於幾」,期望請求頭裏 reasoningEffort=off,且工具數量明顯減少(可對比 ~/.dsh/sessions/**/session.v4.jsonl.zstd 中的 request header)。
  3. 發送「幫我看看」,應出現倒計時提問卡;不回答則默認 90 秒(可配 askTimeoutMs)後按中等繼續。
  4. 多步驟、含代碼或部署類描述的任務,應保持 high。

若需固定行爲,可將 modeOverride 設爲某一檔,或關閉 askOnUncertain 讓含糊輸入直接走中等。

適用場景與注意

適合:日常在 DSH 裏混用「一句查事實」與「長鏈路開發/排查」的開發者,希望在不改模型的情況下降低簡單步的延遲與工具負載。

邊界(README 已說明):

  • 判定是啓發式的,個別任務會偏輕或偏重;可依賴提問卡、modeOverride 或調配置。
  • 提問卡只在第 1 步出現,同輪後續步驟沿用已選檔位。
  • 插件與 DSH 進程同權限運行;安裝前請自行審閱 GitHub 源碼 與 MIT 許可證。

DSH 生態強調「一切皆插件」;SkillHub 目錄頁 爲社區收錄,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-san-sheng-liu-bu 用本地規則把任務分成三檔(加「不確定則問」),在 simple 檔關閉或降低推理並裁剪重工具,在 complex 檔保留 high 與全工具,針對的是 DSH 每步默認「大上下文 + high + 全工具」帶來的延遲問題。

  • 目錄頁:https://www.skillhub.cn/plugins/qiushuiqianpingsha/dsh-san-sheng-liu-bu
  • 倉庫:https://github.com/qiushuiqianpingsha/dsh-san-sheng-liu-bu
羽毛球分组比赛记分
小程序二维码

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

小夜