dsh-magpie-discovery:按需发现 Magpie MCP 工具,减轻 DSH 上下文负担

前言

在 DeepSeek Harness(DSH)里通过 Magpie 的 MCP Hub 接入浏览器、网页搜索、GitHub、DBX 数据库、SSH、TapTap 等能力时,原生 MCP 客户端会在注册阶段把全部工具 schema 一次性放进每次请求。Magpie 侧工具数量可达 150 以上,对上下文和模型侧工具列表都是实打实的负担。

社区插件 dsh-magpie-discovery(维护者 donhac,分类:工作流)提供的是「按需发现」层:只增加一个小型查找工具 magpie_tools,在会话里选中某个 Magpie 工具后,才把对应的原始工具定义暴露给模型。选中后的工具仍走 DSH 原生执行管线,不是第二个 MCP 客户端,也不是调用代理。

这是什么

dsh-magpie-discovery 是挂载在 DSH Host 或 Agent Preset 上的插件包(当前 package 版本 1.2.0,许可证 MIT)。它不改变 Magpie 连接方式:若 profile 里未配置 Magpie MCP 服务器,magpie_tools 会报告空目录,其它工具不受影响。插件本身也不定义编码模式、人设、模型路由或图像工作流,可与任意需要 Magpie 的 preset 组合使用。

核心功能

资料中明确列出的能力如下。

  • magpie_tools:按关键词搜索、按精确名称加载、查看当前状态,或 reset 清空当前选择。
  • 会话级选择:从原生 session log 恢复;resume、compaction、fork 后仍可对齐状态。
  • deny-mask 可见性层:对未选中的 mcp__magpie__* 工具隐藏 schema 展示,不复制、不包装、不重新注册真实 Magpie 工具。
  • 无额外 MCP 连接:不新增账号存储、OAuth 或远程调用包装;图像、结构化返回值、错误、审批与结果元数据保持 DSH 原生行为。
  • 1.2.0:发现结果返回相对上一轮的 added、evicted、unchanged;可用 names 配合 replace: true 在一次调用中原子替换为最多 12 个工具的完整集合(任一名称不可用则保留旧选择)。

运行时最多保留最近选中的 12 个工具;再次选中会刷新排序,超出上限时淘汰较早项。成功提交 magpie_tools 结果后,所选工具在紧接着的下一次模型请求中可见;同一步 assistant 内已规划的工具无法 retroactive 获得定义,需先 lookup,下一步再调用原始 Magpie 工具名。

环境与依赖

安装与运行前请核对版本约束(来自 README 与 package.json):

  • DeepSeek Harness:>=0.2.1-rc.5 且 <0.3.0(文档注明在 0.2.1-rc.5 上测试)。
  • Node.js:>=22.19.0。
  • Host 需具备服务:tools、systemPrompt、sessionProjections、agentPresets、agents。
  • Magpie 已运行 MCP Hub,且 DSH 侧 已有 指向 Magpie 的 MCP 客户端连接。

本插件不会创建 Magpie 连接。

安装与启用

在 Plugin Manager 中选择 Install bundle,输入:

github:donhac/dsh-magpie-discovery

或在 DSH CLI 中(将 <profile> 换成你的 profile 名):

dsh plugin --profile <profile> add github:donhac/dsh-magpie-discovery

固定版本示例:

github:donhac/dsh-magpie-discovery#v1.2.0

安装后 bundle 与插件行显示为 dsh-magpie-discovery;bundle 还会插入一条默认 disabled 的 Host 行 magpie-tool-discovery。下面两种用法二选一,不要同时启用 Host 行又在 preset 里挂载同一包,否则会注册两个同名 magpie_tools 与 projection key。

方式 A:挂到 preset(推荐)

在 @deepseek-ai/dsh-agent-preset 的 plugins 列表增加:

- id: magpie-tool-discovery
  name: dsh-magpie-discovery
  config:
    presetId: my-preset

presetId 必须是包含该行的 preset 的 id,以便 agent 切换 preset 时插件能卸掉对应限制。仅使用该 preset 的 agent 会走按需发现;其它 preset 仍可保留完整 Magpie 工具集。

方式 B:启用 Host 行(全局)

在 Plugin Manager 中启用已安装的 magpie-tool-discovery 行,则当前 profile 下所有 agent 都会应用发现层。

配置项 是否必填 含义
presetId preset 挂载时建议填写 拥有该插件实例的 preset id;切换 preset 时用于 detach

Host 行无需配置,行为为全局。

典型用法:magpie_tools

README 中的调用示例可直接复现:

magpie_tools({ query: 'browser tabs', limit: 2 })
magpie_tools({ query: '数据库表结构' })
magpie_tools({ query: 'dbx list connections sessions read only query', limit: 6 })
magpie_tools({ query: 'nyatermSsh connection_list session_open terminal_execute', limit: 6 })
magpie_tools({ names: ['mcp__magpie__playwright__browser_tabs'] })
magpie_tools({})
magpie_tools({ reset: true })

参数要点(与文档一致):

  • query:搜索工具名与描述;英文 API 词与常见中文能力词均可。识别到服务名时结果限定在该服务内;无 scope 的多关键词仍为 AND。完整精确工具名排序靠前。+ 为分隔符而非运算符。
  • names:按 1–6 个精确的 mcp__magpie__... 名称增量加载;配合 replace: true 可原子替换为 1–12 个名称的完整集合,且不能与 query、reset 或分页同时使用。
  • limit:1–6,默认 3;offset 分页。
  • 空参数调用返回当前选择与各 service 计数;reset: true 清空选择。

成功结果中会包含相对上一轮的 added、evicted、unchanged;已在可见集合中的工具可直接调用,无需再次 lookup。

工作原理(简述)

插件扫描以 mcp__magpie__ 开头的全局工具名,对每个 agent 施加一条限制:deny = 当前 Magpie 目录 − 本会话已选工具。该限制同时作用于 schema 展示、lookup 与 dispatch。选择状态由 magpie_tools 在 tool result 的 presentationMeta 中写入版本化标记与完整列表;Host 侧的 session projection 在校验来源事件、turn/step、成功 append 及元数据版本后才会接受状态。成功 commit 后,同步的 session/event 监听器会在下一次工具 schema 组装前刷新 mask。卸载时按序释放 agent 策略、监听器与工具,最后移除 projection。

适用场景与注意

适合已经在 DSH 中连接 Magpie、但希望把「150+ 工具 schema 常载」改为「按任务阶段加载少量工具」的工作流场景;需要全局 Magpie 全量暴露的 preset 可继续不挂载本插件。

插件在 当前 DSH 进程权限 下运行,安装前请自行审阅 GitHub 仓库 源码与 MIT 许可证。DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-magpie-discovery 用单个 magpie_tools 把 Magpie 大目录 defer 到按需 reveal,同时保留 DSH 原生 MCP 执行与审批链路。需要安装说明与变更细节时,以仓库 README 与 CHANGELOG 为准。

  • 目录页:https://www.skillhub.cn/plugins/donhac/dsh-magpie-discovery
  • GitHub:https://github.com/donhac/dsh-magpie-discovery
羽毛球分组比赛记分
小程序二维码

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

小夜