前言¶
在 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