DeepSeek Harness 插件:mikotomywife/dsh-mcp-loader - MCP 工具懶加載與按會話遮罩

前言

DeepSeek Harness (DSH) 通過插件機制擴展能力,其中 dsh-mcp-client 會將安裝的 MCP 服務器工具在部署範圍內全局註冊。當安裝大量 MCP 服務器時,每個請求都需要處理所有工具的模式定義,這產生了固定的開銷,且會讓工具列表變得龐大,導致模型難以在衆多工具中選擇正確的那個。

dsh-mcp-loader 旨在解決這一問題。它爲每個多工具 MCP 服務器引入一個加載器工具,真實工具僅在調用加載器時進入模型上下文。這移除了工具模式在每次請求中的固定成本,並保持了可見的工具列表精簡。

插件簡介

  • 名稱:mikotomywife/dsh-mcp-loader
  • 維護者:MikotoMyWife
  • 定位:DSH 的 MCP 工具懶加載插件,支持按會話遮罩和描述工程。
  • 許可證:MIT
  • 核心價值:減少 Token 消耗,優化工具列表,提升模型在多 MCP 服務器場景下的選擇效率。

核心功能

插件提供以下能力:

  1. 按服務器加載器開關
    每個多工具服務器由一個加載器工具(默認命名 mcp_<server>)代表。調用加載器可加載、隱藏或重新加載真實工具。加載狀態是按會話隔離的:一個會話的加載對其他會話不可見。

  2. 工作模式

    • auto:啓動時探測一次服務器工具數量,工具數小於閾值(singleToolThreshold)的服務器直接常駐,否則註冊加載器。
    • lazy:服務器始終隱藏在加載器後,僅在調用時加載,啓動時不探測。
    • eager:服務器常駐,不使用加載器。
  3. 按代理工具遮罩 (hiddenTools)
    在服務器加載後,可對特定工具進行遮罩。遮罩使用 restrict({ deny }) 實現,支持精確名稱、公開名稱(如 mcp__notes__*)和通配符(如 e*, ?)。遮罩僅影響可見性,工具仍全局註冊。

  4. 全局禁用工具 (disabledTools)
    在註冊軸層面直接丟棄匹配的工具,使其對任何代理都不可見。同樣支持通配符規則。

  5. 描述工程
    支持按服務器或按工具的描述覆蓋,以及參數描述截斷(maxParameterDescriptionChars)。服務器發送的 instructions 會在加載結果中作爲歸屬文本展示,而非長期佔用加載器描述的 Token。

  6. 環境清理與資源橋接

    • 子進程環境會移除憑證類鍵值(如 /KEY|PASSWORD|SECRET|TOKEN)和 DSH_* 事實,同時保留 PATH 和 NPM_CONFIG_* 等環境變量。
    • 支持可選的 Resource Bridge,將已加載服務器的資源暴露給 Harness 資源服務。
  7. 容錯與邊界

    • 原子註冊:失敗時回滾到零工具。
    • 硬限制:限制 maxToolListPages、maxToolsPerServer 和 discoveryTimeoutMs,超時或超出限制的加載會失敗並保持加載器可用。
    • 有序重新同步:防止併發加載導致舊數據覆蓋新數據。

安裝與構建

插件依賴 Node.js 環境和 @modelcontextprotocol/client 2.0.0。

  1. 克隆倉庫並安裝依賴:
npm install
  1. 編譯代碼:
npm run build
  1. 配置插件:
    根據 package.json 中的配置,插件通過 cordis.patch.yml 進行掛載。

典型用法

工作流程如下:

  1. 初始狀態:工具列表僅顯示加載器工具(例如 mcp_notes、mcp_browser)。
  2. 第一次調用:模型調用 mcp_notes({})。系統返回 ok,並在當前會話及其子代理中暴露真實工具(例如 mcp__notes__search)。
  3. 第二次調用:模型再次調用 mcp_notes({})。系統返回 ok (N tool(s) hidden),隱藏真實工具。
  4. 第三次調用:模型調用 mcp_notes({})。系統重新加載並暴露真實工具。

對於單工具服務器(數量小於閾值),啓動時直接常駐,不經過上述加載器流程。

注意事項

  • Node 版本:插件要求 Node.js 版本 >=20。
  • 註冊範圍:工具註冊是部署範圍(全局)的,與官方 dsh-mcp-client 一致。hiddenTools 是在全局註冊的基礎上,按會話進行過濾。
  • 會話隔離:可見性是按會話的。一個會話的加載狀態不會影響其他會話。
  • 單工具閾值:配置 singleToolThreshold: 0 可強制所有服務器使用按會話的加載器模式。
  • 權限安全:插件以當前 DSH 進程的權限運行。安裝前應檢查源碼與許可證。

結語

dsh-mcp-loader 通過懶加載和按會話遮罩機制,解決了 DSH 在集成大量 MCP 工具時的上下文膨脹問題。它保留了工具的全局註冊能力,同時通過精細的可見性控制優化了模型的使用體驗。

羽毛球分组比赛记分
小程序二维码

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

小夜