前言¶
DeepSeek Harness(DSH)默認會把本機所有 skill、所有 MCP 服務的完整工具定義——名稱、描述、參數 schema——推進每一次請求。skill 和 MCP 裝得越多,每輪對話消耗的 token 越大,模型在工具列表裏「挑錯工具」的噪聲也越高。常見做法是少裝、手動關服務,但能力和上下文體積往往綁在一起,很難在「功能齊全」和「請求夠小」之間折中。
dsh-lazy-toolbox 由社區維護者 anyi-520 發佈,在 SkillHub 插件目錄 中歸類爲「工作流」。下面介紹它如何改 DSH 加載 skill / MCP 的方式,以及安裝與典型用法。
這是什麼¶
一句話:dsh-lazy-toolbox 是 DSH 插件,把 skill 與 MCP 從「每輪都塞進工具定義」改成「系統提示裏只留目錄,用時再注入、用完可卸載」。
安裝後,全局工具表裏通常只保留一個常駐入口 toolbox;skill 與 MCP 在系統提示中分開列出,每條僅有一句話用途,不含調用參數。模型需要某項能力時調用 toolbox 的 load,把定義註冊進當前會話(agent.ctx 作用域);用完 unload 或依賴回合結束自動卸載,後續請求體積立刻回落。
核心功能¶
資料中歸納的三件事如下。
1. 搬走:從全局工具定義裏撤下 skill 與 MCP¶
安裝並完成遷移後,本機 skill 目錄、profile 裏的 mcp-client 配置會整體遷入插件庫,DSH 不再把它們放進全局工具定義。卸載時按原文原位置還原。
2. 留目錄:系統提示裏只有清單¶
系統提示增加「懶工具箱」段落:skills 與 mcp 分列,每條一行用途說明;已加載項可標 [已加載],僅作本會話狀態提示。
3. 熱加載:會話級注入與卸載¶
toolbox { action: "load", ids: ["skill:<名字>" | "mcp:<服務>" | "mcp:<服務>:<工具>"] }:把對應定義注入當前會話。toolbox { action: "unload", ids: [...] }或all: true:撤掉注入,縮小後續請求。toolbox { action: "list", ids: [...] }:查看目錄;對某個mcp:<服務>可展開工具清單。
此外,插件還爲新會話註冊運行時上下文提醒(systemPrompt.context),避免模型因工具列表裏看不到 skill/MCP 而跳過或憑記憶作答;加載過內容後該提醒變爲空串並被過濾。默認配置 autoUnloadOnTurnEnd: true 時,每個新用戶回合會再次提醒按需 load。
skill 大綱與按需取節¶
體積較大的 skill 在 load 時不整篇注入,而是給出大綱;需要某一節時用 toolbox { action: "skill", id: "skill:<名字>", section: "<節號>" },section: "all" 才取全文。可在 store.json 爲單個 skill 設 loadMode: "full",或全局 skillInjectMode: full。
插件工具託管¶
其他插件可通過全局橋把成組工具交給懶工具箱託管,啓動時不註冊,用時 load 組 id(如 group:memstudio)。未安裝本插件時,接入方可回退爲照舊 ctx.tools.register。
設置頁與開關¶
DSH 內「設置 → 懶工具箱」提供懶加載、工具、關於等標籤:可按條目選擇懶加載或跳過;關閉的 skill/MCP 不出現在目錄裏,load 會被拒絕,文件與配置仍保留。外部工具鏈檢測與安裝已拆到獨立插件 dsh-toolchain,本插件 toolbox 不再提供 requirements / install。
其他 toolbox 動作(節選)¶
資料中的動作表還包括:status、add_skill、add_mcp、remove、enable / disable、mode、update(雲更新)、code(內置代碼編輯器)、discover(掃描已裝插件自帶 skill/MCP)等。雲更新針對本倉庫 GitHub Release,安裝後需手動重啓 DSH。
安裝與啓用¶
DSH 生態採用「一切皆插件」;SkillHub 爲社區目錄站點,與 DeepSeek / 幻方無官方從屬關係。安裝前請自行查看 GitHub 倉庫 源碼與 MIT 許可證;插件以當前 DSH 進程權限運行,遷移會改動本機 skill 與 MCP 配置位置,生產環境請先備份 profile。
環境要求(來自 package.json):Node.js >= 20。包版本以倉庫發佈爲準(資料中 package.json 示例爲 0.7.3)。DSH 需 0.7.1+ 才能識別包內 dsh.bundle 聲明;0.7.0 及更早安裝器會報「沒有聲明組合包」。
從圖形界面安裝¶
在 DSH 中選擇「插件 → 添加插件」,填寫本地解壓目錄路徑或 npm 包名。包內 cordis.patch.yml 會由 DSH 處理依賴、bundles 與配置行,重啓後生效。
從 npm 安裝¶
npm i -g dsh-lazy-toolbox
dsh-lazy-toolbox wire-profile
npm 發佈後也可通過 DSH 插件管理器執行:
dsh plugin add dsh-lazy-toolbox
(以 README 原文爲準。)
從本地目錄接入(開發 / 自用)¶
將插件接到 profile 並寫入配置(冪等):
node dsh-lazy-toolbox/bin/cli.mjs wire-profile
或安裝全局 CLI 後:
dsh-lazy-toolbox wire-profile
然後重啓 DSH;插件首次啓動會自動遷移本機 skill 與 MCP 配置。
也可手動編輯 profile,例如在 package.json 中 link 依賴並在 cordis.patch.yml 末尾插入:
- insert:
- id: lazy-toolbox
name: dsh-lazy-toolbox
inject: [systemPrompt, tools]
config:
autoImport: true
autoUnloadOnTurnEnd: true
Release 附件解壓後,同樣執行 wire-profile 一類命令即可(見倉庫 README 安裝說明)。
典型用法¶
模型側:先 load 再調用 MCP¶
系統提示中會說明:需要 GitHub MCP 時,先加載服務,再使用 mcp__github__* 類工具;用完卸載。
{ "action": "load", "ids": ["mcp:github"] }
{ "action": "unload", "ids": ["mcp:github"] }
或回合結束時依賴 autoUnloadOnTurnEnd 自動清理。
導入 skill / MCP¶
用戶要求安裝新能力時,模型可調用:
{ "action": "add_skill", "summary": "一句話用途", "...": "路徑或 URL 等參數見工具 schema" }
{ "action": "add_mcp", "summary": "一句話用途", "...": "連接參數見工具 schema" }
add_mcp 會先連一次驗證,失敗自動回滾。
查看狀態與目錄¶
{ "action": "status" }
{ "action": "list" }
對某個 MCP 服務展開工具名:
{ "action": "list", "ids": ["mcp:github"] }
命令行(雲更新示例)¶
dsh-lazy-toolbox update check
dsh-lazy-toolbox update download
dsh-lazy-toolbox update install
安裝覆蓋後按提示關閉並重新打開 DSH。
適用場景與注意¶
適合誰:本機已裝多個 skill 或多個 MCP,希望默認對話請求保持較小工具定義;又希望在需要時仍能按需加載完整能力。也適合其他插件作者把成組工具改爲懶加載託管。
注意:
- 遷移與還原涉及文件與 profile 配置,卸載前確認插件文檔中的還原行爲。
- 設置頁關閉的條目不會出現在目錄中,模型不應再嘗試
load。 - 內置「不做懶加載」名單(如部分破甲類插件名模式)不會進目錄,僅影響接管策略,不刪除文件。
- 雲更新、內置代碼編輯器、
discover等能力均以 README 與docs/爲準,升級後留意 CHANGELOG。
結尾¶
dsh-lazy-toolbox 把 DSH 裏 skill、MCP 以及可選的插件工具組,從「每輪全量工具定義」改爲「目錄 + 會話內熱加載」,用常駐的 toolbox 統一入口,配合上下文提醒與回合結束卸載,減輕 token 與工具噪聲問題。