DeepSeek Harness 插件:dsh-mcp-lazy

前言

DeepSeek Harness(DSH)支持通过插件集成 Model Context Protocol(MCP)服务器。使用默认的 @deepseek-ai/dsh-mcp-client 时,配置的服务器会在插件启动时连接,并将所有工具定义注册为原生工具。这意味着每次请求都会携带大量工具的 schema 字节,且服务器会常驻内存,无论模型是否实际调用它们。

dsh-mcp-lazy 是一个为此设计的网关插件。它在前端只暴露一个固定的代理工具,仅在模型调用特定工具时才启动对应的服务器,并在闲置后断开连接。服务器元数据会被缓存到磁盘,使得元数据查询操作无需启动进程。

核心功能

  1. 单一代理工具:替代原本的 N 个工具定义,前端只存在一个 schema 恒定的工具。
  2. 惰性加载与空闲断开:服务器仅在首次使用时启动,闲置后自动断开。
  3. 磁盘缓存:元数据持久化存储,search(搜索)和 describe(描述)操作不触发进程启动。
  4. 配置迁移工具:提供 CLI 工具 dsh-mcp-lazy-adopt,帮助将现有配置迁移到新插件。
  5. Token 节省测量:提供脚本用于计算并测量 Token 节省情况。

安装

使用官方安装命令添加插件到指定配置文件:

dsh plugin --profile <your-profile> add dsh-mcp-lazy

安装后,插件会注册其补丁层。需要在配置文件的 cordis.patch.yml 中定义服务器列表。

使用方式

插件在 DSH 面板中暴露为一个名为 mcp-lazy 的工具。以下是几种调用方式:

  • 搜索工具:在缓存中查找工具名称。
    mcp({ search: "screenshot" })
  • 获取描述:获取指定工具的完整参数 schema。
    mcp({ describe: "take_screenshot" })
  • 调用工具:实际执行操作,此时才会启动对应的服务器。
    mcp({ tool: "take_screenshot" })
  • 跨服务器调用:当多个服务器拥有同名工具时,通过 server 参数指定。
    mcp({ tool: "echo", server: "docs" })
  • 连接服务器:连接并刷新缓存,不执行调用。
    mcp({ connect: "chrome" })
  • 查看状态:查看当前连接状态、缓存数量及缓存时间。
    mcp({})

配置示例

在 cordis.patch.yml 中添加 mcp-lazy 配置段:

- id: mcp-lazy
  config:
    servers:
      - serverName: chrome
        transport: stdio
        command: npx
        args: ['-y', 'chrome-devtools-mcp@1.6.0']
        lifecycle: lazy
      - serverName: docs
        transport: streamable-http
        url: http://127.0.0.1:3000/mcp

注意事项

  1. Token 节省计算:网关本身消耗固定的 1525 字节。仅当服务器工具定义渲染后的字节数超过该值时,插件才会产生净收益。如果配置的服务器工具较少或较小,插件可能会增加开销。建议在启用前运行测量脚本验证。
  2. Node 版本要求:插件依赖 Node.js 版本 >=22.18.0。
  3. 配置迁移:adopt 命令不会在插件启动时自动运行,需要手动执行。它读取当前实际挂载的配置,将原生工具行标记为 disabled: true 并追加到当前插件的 servers 列表中。
  4. 全局影响:adopt 命令通常禁用原生配置行,该行通常位于 home 补丁层(~/.dsh/cordis.patch.yml)。如果其他配置文件(如 default、dsh-tui、headless)也引用了该配置但未挂载本插件,它们将失去该工具能力。
  5. 不支持字段:插件不支持 reconnect 和 failOnStartupError 两个原生字段,迁移配置时会报错并保留原行。

总结

dsh-mcp-lazy 通过引入一个固定开销的网关层,换取了动态加载 MCP 服务器的能力,显著降低了每次请求的 Token 消耗。对于拥有大量 MCP 工具且希望节省上下文空间的场景,这是一个实用的优化方案。使用前请确保工具定义足够复杂以覆盖网关的固定成本。

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

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

小夜