前言¶
在 DeepSeek Harness(DSH)里做智能体时,工具往往局限在本机进程或已注册的 MCP 服务。若你已经在局域网里跑了一套 MSP(网关、桌面节点、经 MCP/WebSocket 连上的 ESP32 等),每个节点各自声明工具,模型却拿不到这些能力,就要手写桥接或重复注册。
下面介绍维护者 hxh230802 发布的 dsh-msp(分类:联网工具)。它作为 DSH 的 host 端插件,扫描本机 MSP 发现目录,为每个存活节点维持独立 TCP 连接,并把节点上的工具以统一命名暴露给智能体调用。
这是什么¶
dsh-msp 当前版本 0.1.3(MIT 许可证),仓库:github.com/hxh230802/dsh-msp。社区目录页:skillhub.cn/plugins/hxh230802/dsh-msp。
数据路径可以概括为:
agent ──(DSH tool)──> dsh-msp ──(MSP/TCP,每节点一条连接)──> gateway / notchpeninsula / …
└─(MCP/WS)─> ESP32
插件自身零 npm 依赖,MSP 客户端打包在 lib/msp.js 中。
核心功能¶
发现与连接¶
- 默认读取配置项
nodesDir(合并后为~/.msp/nodes),按discoveryMs间隔扫描发现目录。 - 每个节点一条连接;节点是否在网由 MSP 租约决定,超过
staleAfterMs未续租的声明会被忽略。 - 支持
includeNodes白名单、excludeNodes排除指定节点 id;maxPeers限制并发连接数。
暴露给模型的工具¶
- 工具名规则:
toolPrefix(默认msp_)+ 规范化后的节点 id + 工具名。节点 id 规范为[a-z0-9_];若原工具名已带节点前缀则不会重复拼接。 - 节点推送
MANIFEST_UPDATE时,插件按名称 diff 并重新发布工具列表,无需重启会话。 - 断线不会立刻移除工具(避免名称闪烁);调用返回「未连接」。只有租约过期、节点真正下线时才移除。
- MSP 返回
ToolResult(error=...)时会以异常形式抛出,便于模型读到失败原因。
内置 UI 与通知¶
重启 DSH 图形界面后,左侧栏会出现 MSP 入口,可查看节点/工具关系图、按节点启用或禁用、最近约 40 次调用记录、发现目录与租约年龄等。页面通过 GET /msp/state 等路由轮询(约 2 秒)。
通知分三类开关:审批等待、提问等待、长任务结束(默认仅当回合时长 ≥ 20s)。选择会写入 ~/.dsh/dsh-msp/notify.json。通知经 MSP 的 notify 工具直达节点,不占用模型回合。
进程身份¶
插件以 dsh-msp-<8位十六进制> 加入 MSP 网络。同一机器上多个 DSH 窗口、多个 profile 或第二个 DSH 进程若共用固定 id 会导致连接表冲突;需要稳定身份时可在配置中设置 nodeId(资料中的 Behaviour 节有说明)。
安装与启用¶
这是 host 端插件:增删或改配置后需要 重启 DSH GUI,仅刷新页面不够。
1、从 GitHub 安装(仓库已带可运行的 lib/,无需构建):
dsh plugin --profile <profile> add github:hxh230802/dsh-msp --ignore-workspace-root-check
2、若希望锁定某一发布版本(README 推荐非作者用户使用),例如:
dsh plugin --profile <profile> add github:hxh230802/dsh-msp#v0.1.1 --ignore-workspace-root-check
3、确认配置树中已出现插件条目:
dsh --profile <profile> --dump-config | grep -A8 'id: dsh-msp'
卸载:
dsh plugin --profile <profile> remove dsh-msp
安装后,cordis.patch.yml 会合并进 profile 的配置树。主要字段如下(可按需覆盖):
- insert:
- id: dsh-msp
name: dsh-msp
config:
nodesDir: ~/.msp/nodes
includeNodes: []
excludeNodes: []
toolPrefix: msp_
discoveryMs: 3000
callTimeoutMs: 30000
retryMs: 3000
staleAfterMs: 30000
maxPeers: 16
verbose: false
典型用法¶
1、在本机或局域网准备好 MSP 节点(网关、带工具声明的 peer、ESP32 侧经 MCP/WS 接入的节点等),并确保其声明文件出现在 nodesDir 且租约有效。
2、按上一节安装插件并重启 GUI。在 MSP 面板中确认目标节点为「已连接」,必要时关闭不需要的节点以缩小工具面。
3、在 DSH 会话中,智能体可见形如 msp_<node>_<tool> 的工具(README 徽章还提到 msp_call_wait 等与长任务/等待相关的工具能力,具体以各节点 manifest 为准)。直接通过 DSH 工具调用即可经插件转发到对应 MSP 节点。
4、若需在手机、ESP32 或另一智能体上收到审批/提问/长任务结束提醒,在 MSP 面板打开对应通知开关,并确保对端节点实现了 MSP notify 或订阅了 dsh.attention.requested 等信号(详见仓库 README 中 Notifications 一节)。
适用场景与注意¶
适合谁: 已在用 MSP 串联 ESP32、桌面应用与网关,并希望在 DSH 里用同一套工具面驱动智能体的开发者。
权限与安全: 插件以 当前 DSH host 进程权限 运行,模型调用的 MSP 工具等价于由该进程代表你执行节点侧能力。安装前请阅读仓库源码与 MIT 许可证,只连接你信任的节点;用 excludeNodes / UI 禁用不可信 peer。
生态说明: DSH 采用「一切皆插件」的扩展方式;SkillHub 等社区目录由社区维护,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-msp 把本机 MSP 网络上各节点的工具统一注册为 DSH 工具,并附带可视化面板与 MSP 直通道通知,适合 MSP 与 DSH 并用的场景。
- 目录页:https://www.skillhub.cn/plugins/hxh230802/dsh-msp
- GitHub:https://github.com/hxh230802/dsh-msp