前言¶
DeepSeek Harness(DSH)會給智能體掛上一套固定的工具面:預設、插件帶來的 bash、web_search、web_fetch 等都會進入每次請求。工具越多,提示裏佔的 token 越多,模型也越容易去碰未必需要的工具。若只想做一段離線會話、收窄任務範圍,或做一次「關掉某個工具是否更好」的對比,過去往往要手改 profile patch 再重啓。
下面介紹 pinion05 維護的客戶端插件 dsh-tools-toggle(npm 包名 @npmc_5/dsh-tools-toggle,版本 0.1.0,MIT 許可證)。它在 DSH Web 的 Settings → Tools 裏爲繼承來的工具提供開關;關掉後工具會從模型視角整體消失——不僅是不能執行,連 schema、描述和 lookup 都不會再出現,從而省掉相關 token。
這是什麼¶
dsh-tools-toggle 是掛載在 DSH Web 設置頁的插件,分類屬客戶端(platform: web)。維護者爲 pinion05。它解決的是:在不手改配置文件的前提下,用 UI 維護一份「禁用工具」列表,並在新建智能體時通過 dsh-tools 的 restrict 機制生效。
核心功能¶
Settings 裏的工具目錄¶
插件在原生 Settings → Tools 增加一節,列出當前 profile 下繼承來的全部工具(含 preset-plane 工具)。每一行顯示名稱、一行描述,並提供搜索框和「僅顯示已禁用」篩選。界面支持韓語與英語 locale。
配置持久化¶
切換開關會向插件 host 路由 POST,由 settings 服務把 deny 列表寫入插件 Loader 配置項,並落到 profile patch 的用戶層,升級後仍保留。寫入串行化,避免快速連點疊在過期配置上;讀取會等待未完成寫入(read-your-writes)。
通過 restrict 隱藏工具¶
Host 側在每個智能體創建時調用一次 agent.ctx.tools.restrict({ deny })。被禁用的工具會同時失去 schema、lookup 與執行能力;模型側不再「知道」該工具存在。若模型仍猜測工具名調用,會收到乾淨的 UNKNOWN_TOOL 拒絕。
這一時機與 prefix cache 有關:restriction 會改寫面向模型的工具數組(屬於請求前綴的一部分),若在進行中的會話裏改 deny 列表會破壞 provider 的 prefix 緩存,因此只在創建智能體時應用,運行中的會話 deliberately 不改動。
- 新會話(含新 subagent)採用當前開關狀態。
- 已有會話保持原有工具面與緩存,直到自然結束。
- Host 重啓後以新 agent 恢復會話時,會應用重啓前做過的開關變更(伴隨一次不可避免的 re-prefill)。
設計上不會誤傷的部分¶
- 與作用域相關的內部機制默認不可切換(例如 subagent 委託的結構化輸出管線、保留的 PTC
run_code傳輸),多智能體流程可繼續跑。 - 開關狀態在 UI 配置裏,即便全部關掉,Settings 頁仍可用,可隨時恢復。
- 禁用
bash、read、write、edit時會彈出一次性確認對話框。
安裝與啓用¶
插件爲純 ESM,無構建步驟;peer 依賴(cordis、dsh-tools、dsh-host-webserver 等)從 DSH 安裝樹解析。engines.dsh 要求 >=0.2.0-rc.1 <0.3.0-0。
官方 README 給出的安裝步驟如下:
git clone https://github.com/pinion05/dsh-tools-toggle.git
dsh plugin --profile web add ./dsh-tools-toggle
執行後刷新 DSH Web,打開 Settings → Tools。
典型用法¶
- 完成上述安裝並刷新 Web 端。
- 若目錄爲空,先按提示開啓一次會話——工具名稱來自 live agent 的快照,首個會話前頁面會提示需要 session。
- 在 Settings → Tools 搜索或篩選工具,將不需要的項關閉;對核心讀寫/終端類工具按提示確認。
- 新建會話(或新建 subagent)後,被禁工具不再出現在模型請求中;要恢復則重新打開開關並再開新會話。
說明:當前爲 profile 級 單一 deny 列表,不支持按會話覆蓋;重新啓用屬於策略放寬,僅通過 UI 操作,不提供 agent 側工具。
適用場景與注意¶
適合誰: 需要在不刪插件、不改手寫 patch 的前提下臨時縮小工具面;做離線或減噪會話;對比某工具是否值得保留的開發者。
侷限(README 明示):
- 僅對新會話生效,進行中的對話不會因切換而變——這是 prefix-cache 保護,不是缺陷。
- 工具目錄依賴至少一次會話才能完整展示。
- 無 per-session 覆蓋(後續可能擴展)。
安全與權限: 插件以當前 DSH 進程權限運行,配置寫入本機 profile。安裝前請閱讀 GitHub 倉庫 源碼與 MIT 許可證,自行確認是否符合環境要求。社區目錄 skillhub.cn 與 DeepSeek / 幻方無官方從屬關係;DSH 生態奉行「一切皆插件」,本插件爲社區貢獻,非官方應用商店條目。
結尾¶
dsh-tools-toggle 把「關掉某些繼承工具」收成 Web 設置裏的一鍵操作,並通過創建時 restrict 讓禁用結果同時作用於 schema、查找與執行。需要試用時,可從社區目錄頁或 GitHub 獲取倉庫,按官方命令裝入 web profile 後,在 Settings → Tools 管理 deny 列表,並以新會話驗證效果。