前言¶
用 DSH 做开发时,常见的麻烦是本机服务散落在各处:有的藏在安装目录里,有的是端口监听进程,有的是 npm 或用户 bin 目录下的命令包装脚本,还有随手写的 bat 批处理。想停掉一个服务,得先想起来它装在哪、启动脚本叫什么名字、日志写到哪个目录。
下面介绍 liuhuan007/dsh-service-hub。它把本机服务、一次性脚本和终端工具登记成一个列表,然后在 DSH 侧栏里提供启动、停止、重启、看日志、刷新这些操作,不用去记启动器在哪。
它是一个客户端分类的插件,由 liuhuan007 维护,许可证为 MIT,包版本见 README 中的 package.json。
这是什么¶
一句话定位:一个 DSH 服务面板插件,用来启停和监控你本机上自己登记的服务、脚本和终端工具。
它解决的核心问题是入口分散。README 的说法是,这样你就不用记住每个启动器放在哪。插件自带一个零依赖的控制台守护进程(console/,只用 Node 标准库),装上插件即可用,不用再单独装别的工具,也没有机器相关的硬编码路径需要下载或配置。
核心功能¶
插件激活后,Host 端会在 127.0.0.1:3999 启动自带的控制台守护进程;插件卸载时随之停止。注册数据和日志放在 ~/.dsh-service-hub/,因此升级或重装插件后服务列表仍保留。
DSH 侧栏获得一个 Service 选项卡,列出每条已登记条目,并显示实时状态、健康信息、端口和快捷访问 URL,同时提供 start / stop / restart / logs / refresh 按钮,以及一个可在手机上打开的 LAN 地址。
因为进程控制归守护进程所有,所以即使你关掉面板,已启动的服务也会继续运行。
从 0.3.0 起插件自带控制台,无需额外安装第三方插件。
发现与登记¶
面板支持扫描未登记的可执行文件和监听端口。Scan 会给每个候选先给出一个建议类型:安装目录下的程序和快捷方式为 app,监听端口的程序为 service,npm 或用户 bin 目录下的命令包装为 terminal,其他批处理文件为 script。发现对话框里带类型选择器,这个猜测始终可以覆盖。系统目录(C:\Windows\...)会被跳过。
安全边界¶
README 中写明的边界如下,都是可对照的设计约束:
- 客户端 bundle 只对
http://127.0.0.1:3999发起fetch,只访问 localhost。 - 自带守护进程只绑定
127.0.0.1,不绑定任何对外接口。 - 插件自身不做遥测,也没有对外网络请求。
- 守护进程只启停你登记过的命令,不会自行运行任何东西;每条命令在面板中可见,并存放于
~/.dsh-service-hub/data/registry.json。
防护细节¶
自带控制台只监听 127.0.0.1,并对随手触发的使用做了防护:
- 不返回 CORS 头,其他来源的浏览器请求会在预检阶段失败,随机网站读不到
/api/state,也调不动修改类接口。 - Origin / Sec-Fetch / Host 校验会拦截脚本发起的跨站请求并返回
403;顶级导航和 iframe 导航仍然放行,面板可以嵌入页面。 - 条目 id 限制为
[A-Za-z0-9._-]{1,64},日志路径全部解析在日志目录内,因此/api/items/<id>/logs读不到其他文件。 /healthz只暴露{ ok, version, pid }和X-LC-Daemon头,Host 用它确认自己连的是这个插件的守护进程,而不是恰好占用 3999 端口的无关进程。
这些保证有对应的回归测试,npm test 即可运行。
安装与启用¶
官方安装命令,按官方 README 原文:
dsh plugin --profile desktop add dsh-service-hub
然后重启 DeepSeek Harness(或重载窗口),打开 Service 选项卡。
在 npm 正式发布之前,从源码安装的命令是:
dsh plugin --profile desktop add github:liuhuan007/dsh-service-hub
前置条件¶
| 要求 | 原因 |
|---|---|
| DeepSeek Harness 0.2.1+,带 Web/Desktop UI | 客户端 bundle 面向 platform: web |
dsh-better-sidebar |
面板通过该服务的机制注册侧栏选项卡 |
| Node 18+ | 运行自带的控制台守护进程(桌面应用自带一个) |
| Windows | 进程管理使用 PowerShell 和 tasklist/netstat |
端口 3999 必须空闲。如果已有另一个控制台在监听该端口,插件会复用它,而不是再启动一个。
典型用法¶
下面按 README 的可复现路径走一遍。
1、安装插件并重载窗口。
dsh plugin --profile desktop add dsh-service-hub
2、在面板里扫描本机候选。发现对话框会列出未注册的可执行文件和监听端口,每条带建议类型,可当场修改。
3、把需要的服务加入列表。每条条目的命令在面板中可见,同时写入 ~/.dsh-service-hub/data/registry.json。
4、通过面板的启动 / 停止 / 重启按钮管理进程,用 logs 查看日志,用 refresh 刷新状态。
5、如需查看回归测试和发布文件清单:
npm test
npm pack --dry-run
注意:以当前 dsh 进程权限运行¶
插件运行在当前 dsh 进程的权限下,它能启动和停止你登记的命令。安装前应先检查源码与许可证,确认 registry.json 里登记的命令符合预期,再按需启停。
其他来自官方 README 的已知限制:
- 面板从会话头部打开(⚙ 服务)。安装
dsh-better-sidebar会额外在左侧栏加一个同样的面板选项卡,这一步是可选的。 - 面板文本目前只有中文;
locale/下的meta.title/meta.description有英文和中文两版,供插件清单使用。 - 控制台 URL 固定为
127.0.0.1:3999。
兼容性方面,README 给出的范围是 DSH >=0.2.1,UI 为 Web / Desktop(侧栏选项卡),对 TUI 和 headless profile 无效果,OS 为 Windows。
小结¶
这个插件的价值在于把本机服务的入口收进 DSH 侧栏,并提供状态、健康、端口与日志的统一视图,同时用一个只绑定 localhost 的自带守护进程承担进程控制。如果你的服务清单已经点状分布在安装目录、bin 目录和批处理文件里,可以先按上面的安装命令试一遍,再用 Scan 逐步登记。
插件目录页:https://www.skillhub.cn/plugins/liuhuan007/dsh-service-hub
源码:https://github.com/liuhuan007/dsh-service-hub