dsh-tool-activator:爲 DSH 按需加載工具、壓縮初始上下文

前言

DeepSeek Harness(DSH)採用插件化工具模型,已安裝的工具越多,每次請求附帶的 schema 與說明往往越大。若全部默認注入,模型開頭就要消化一長串工具定義,既佔 token,也容易分散注意力。社區工作流類插件 dsh-tool-activator 的做法是:默認只加載一小套基礎工具,其餘工具以目錄形式可見,由模型在需要時通過 activate_tools 再啓用。下面介紹其定位、行爲、配置與典型用法。

這是什麼

dsh-tool-activator 是面向 DSH 的插件(npm 包名 dsh-tool-activator,當前資料中版本爲 0.5.0,MIT 許可證)。倉庫與目錄頁見 Tranquillitatis-Lab/dsh-tool-activator 與 SkillHub 目錄。分類爲工作流;它不改變工具在宿主內的實際執行路由,主要管「哪些工具的完整 schema 默認進上下文、哪些僅以簡述目錄呈現並按需激活」。

系統要求(README 原文):DSH ≥ 0.2.0-rc.2;Node.js ≥ 22.19.0。

核心行爲

默認可見與按需隱藏

默認作爲「基礎工具」加載的標識包括:read、glob、grep、write、edit、skill、ask_user_question、todo_write。以上均可通過配置取消默認加載;只有 activate_tools 始終加載且不可關閉。

模型在每次對話中通常能看到:

  1. 配置爲默認加載的工具(完整 schema);
  2. 本會話已激活的工具;
  3. 工具 activate_tools 本身;
  4. 其餘工具的 <available_tools> 簡述目錄(標識、名稱、一句說明),由插件注入,不佔用宿主運行時上下文快照。

其餘已安裝且在當前 agent 作用域可見的工具默認隱藏,由模型按標識激活。目錄中除常見內置工具外,任意已安裝插件的工具也可作爲標識請求;開啓 autoGroupMcp 時,mcp__server__tool 可按 MCP 服務聚合爲 mcp.server 等形式。實際集合以運行時的 <available_tools> 爲準。

activate_tools 怎麼用

模型按需請求加載工具或組,參數形如:

{
  "identifiers": ["web_search", "web_fetch"],
  "reason": "需要檢索並覈對用戶要求的公開資料"
}

已激活條目在上下文中以精簡形式呈現(保留標識符與可調用成員名),避免重複冗長描述。

與請求頭、defer_loading

對支持對話中途變更工具聲明的路由(README 以 deepseek-flash 等、toolUpdate 能力爲例),插件可將全部工具一次性聲明:基礎工具正常聲明,其餘標 defer_loading(不佔上下文 token)。激活時不改寫聲明列表,只在會話尾部追加 tool_addition,便於前綴緩存仍有效。

不支持該能力的路由則退回「按激活狀態過濾聲明列表」:功能不變,但每次新激活會重算請求頭。

group_tools(僅在用戶要求整理分組時)

用戶明確要求整理工具分組時,模型可調用 group_tools:

  • action: "list":查看當前作用域分組與成員、未分組工具、基礎與鎖定工具。
  • action: "apply":通過 ops 增刪改分組;basic 分組僅可 update 成員,不可 add / remove 整個分組。

結果寫入配置中的 groups 字段,與插件配置頁「工具分組」爲同一份數據;一次調用要麼全部成功要麼全部拒絕。

配置

進入 DSH 官方插件管理頁,打開 dsh-tool-activator 卡片,表單直接顯示在該插件頁面上(README 未給出單獨的 CLI 安裝命令,以管理頁與宿主插件機制爲準)。

分區 含義
默認激活 每次請求帶完整 schema 的工具;基礎工具排在最前;僅 activate_tools 固定開啓
按需激活 其餘工具,由 activate_tools 啓用

開關將把工具寫入或移出 basicTools;清單由宿主 Remote toolActivator/catalog 提供,覆蓋當前 live agent 作用域。

常規:

  • requireApproval:非完全權限時激活前需確認;缺審批服務則拒絕;完全權限 danger-full-access 時無需確認。
  • autoGroupMcp:按 mcp__server__tool 前綴聚合同一 MCP 服務。

工具分組:結構化編輯標識符、名稱、說明與成員勾選;留空則各工具獨立成條。

執行、持久化與生命週期

  • 工具仍通過 DSH 原有 dispatcher 執行,不改變底層沙箱或運行路由。
  • 已完成的激活狀態隨標準會話日誌與 seed 恢復。
  • Cordis 負責註冊、監聽及 HMR 清理;卸載時清理樣式與實例。

README 記載:2026-10-11 完全權限相關修復後,304 個用例等均通過;真實 GUI E2E、打包發佈及真實 profile 爲未驗證項。

適用場景與注意

適合:工具、MCP 插件較多,希望默認上下文保持精簡、由模型在任務明確後再加載 bash、web_fetch、終端、子 agent 等能力的 DSH 用戶。

注意:

  1. 插件在當前 DSH 進程權限下運行;安裝或啓用前應閱讀源碼與 MIT 許可證,並理解 requireApproval 與權限等級的關係。
  2. SkillHub 等爲社區目錄,與 DeepSeek / 幻方無官方從屬關係;以你實際連接的倉庫與 npm 包爲準覈對版本。
  3. 不要擅自調用 group_tools 重組目錄,除非用戶明確要求。

結尾

dsh-tool-activator 用「基礎工具 + 目錄 + activate_tools」把 DSH 的工具發現做成可擴展工作流,在支持 defer_loading 的路由上還能減少反覆重寫請求頭的成本。進一步瞭解實現與配置截圖見 GitHub README;在宿主中從插件管理頁打開該卡片即可調整默認與按需工具。

  • 目錄頁:https://www.skillhub.cn/plugins/Tranquillitatis-Lab/dsh-tool-activator
  • GitHub:https://github.com/Tranquillitatis-Lab/dsh-tool-activator
  • npm:https://www.npmjs.com/package/dsh-tool-activator
羽毛球分组比赛记分
小程序二维码

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

小夜