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