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