dsh-reloader:DSH 的 Web 界面一键重启插件

前言

DSH 的 profile bundle 插件安装或更新后,需要重启 dsh web 进程才能生效。手动操作通常是先停止当前 web 进程,再重新运行 dsh web,最后刷新浏览器。

dsh-reloader 将这一步封装成 DSH 可调用的 dsh_reload 工具,用于在插件变更后自动重启 web 界面,减少手动 Ctrl+C 的操作。

这是什么

lin-cheng-lab/dsh-reloader 是一个 DSH 插件,目标是减少安装或更新插件后的手动重启成本。它通过 dsh_reload 工具重启监听 3080 端口的 dsh web 进程,使新的插件变更能够在刷新页面后生效。

资料中标注的许可证为 MIT。

核心功能

下面介绍资料中明确给出的能力:

  • 安装或更新插件后,向 DSH 说“帮我 reload 一下”,即可触发重启流程。
  • 调用 dsh_reload 后,6 秒后进程自动重启,页面刷新即恢复。
  • 通过 lsof 按 3080 端口定位当前 dsh web 进程,再用 ps 校验命令行包含 dsh 后执行 kill
  • 等待端口释放,最多 15 秒。
  • 使用 nohup 重新启动 dsh web,日志写入 ~/.dsh/web.log
  • 通过 ctx.shell 启动后台 detach 进程执行重启,工具调用后立即返回。

安装与启用

先安装到资料示例使用的 web profile:

dsh plugin --profile web add "github:lin-cheng-lab/dsh-reloader"

如果从本地源码安装:

dsh plugin --profile web add "file:/path/to/dsh-reloader"

首次使用 dsh_reload 工具需要一次手动重启。之后,再执行 reload 流程即可自动重启。

已核实资料仅示例 --profile web,未说明其他 profile 的适用性。

典型用法

安装或更新插件后,可以向 DSH 说:

帮我 reload 一下

资料给出的执行顺序如下:

1、等待 6 秒。
2、用 lsof 按 3080 端口定位当前 dsh web 进程,并用 ps 校验命令行包含 dsh,再 kill
3、等待端口释放,最多 15 秒。
4、用 nohup 重新启动 dsh web,日志写入 ~/.dsh/web.log

完成后刷新页面即可。

若工具报错,仍可手动重启:在终端按 Ctrl+C 停止当前进程,然后运行:

dsh web

安全边界与排查

  • 只 kill 监听 3080 且命令行包含 dsh 的进程。
  • 只影响监听 3080 的 dsh web 进程,不碰其他程序。
  • 重启失败时,可查看日志:
~/.dsh/web.log
  • 插件会以当前 dsh 进程权限运行,安装前应检查源码与许可证。

开发依赖

如果需要本地开发,资料给出的命令是:

npm install --legacy-peer-deps
npm run build

第一条用于安装 typescript 并跳过未发布的 @deepseek-ai peer 依赖;第二条用于执行构建。

类型解析依赖本机 DSH 安装中的 @deepseek-ai/cordis@deepseek-ai/dsh-tools。资料列出的 peer 依赖为:

@deepseek-ai/cordis ^4.0.1
@deepseek-ai/dsh-tools ^0.1.0-rc.6

结尾

dsh-reloader 解决的是很具体的问题:插件安装或更新后,不再需要手动停止并重新运行 web 进程。

当前资料未提供目录页 URL,GitHub 仓库地址如下:

https://github.com/lin-cheng-lab/dsh-reloader

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

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

Xiaoye