dsh-restart: One-Click Restart in the Web Settings Panel

在 DSH 开发环境中,当 Web 主机进程无响应或需要热重载配置时,通常需要在终端手动重启进程。dsh-restart 插件在 DSH Web 设置面板中增加了一个专门的“重启”页面,允许开发者通过浏览器直接操作主机进程的启停,无需切换到终端。

这是什么

dsh-restart 是一个 DeepSeek Harness (DSH) 插件,由 DWJZ 维护。它为 Web 设置面板增加了一个重启页面,旨在解决 Web 环境下重启主机进程不便的问题。该插件使用 MIT 许可证。

安装与启用

通过以下命令安装插件:

dsh plugin --profile web add github:DWJZ/dsh-restart

安装完成后,需要重启一次主机,重启页面才会出现在设置面板中。

核心功能

1. 面板操作与 API

插件在 Web 设置面板中提供两个操作按钮:重启和停止。在底层,它注册了三个路由接口:

  • GET /dsh-restart/status:查看当前进程状态。
  • POST /dsh-restart/restart:触发主机重启。
  • POST /dsh-restart/stop:停止主机进程。

2. 快捷键支持

除了按钮,插件还支持快捷键操作:
* macOS:Cmd + Shift + K
* Windows:Ctrl + Shift + K

重启后,页面会自动轮询状态并在 boot id 变化时重新加载。

工作原理

进程替换机制

重启功能通过一个 detached helper 实现。旧进程在接收到请求后等待 400 毫秒退出,helper 会等待端口释放后再启动新进程。新进程使用完全相同的启动命令(包括 Node 二进制路径、execArgv、绝对路径、argv 等所有参数),从而避免因旧端口占用导致的 EADDRINUSE 错误。

停止机制

停止操作直接发送 SIGTERM 信号。这确保了会话能够被正确刷新,而不是直接被强制杀死。

插件加载机制

如果插件处于“已卸载但未激活”的状态,它会在下次主机启动时自动加载。

注意事项

  • Linux 快捷键限制:在 Linux 环境下,Web 端的快捷键无法绑定。这是因为浏览器的 allowlist 拒绝了 primary+alt 的组合键,导致插件无法注册。
  • 会话持久化:重启操作会保留会话数据,重启后页面依然存在。
  • 权限与来源:该插件以当前 dsh 进程的权限运行,安装前请检查源码与许可证。

总结

dsh-restart 通过页面化操作和快捷键,简化了 DSH Web 主机的运维流程。更多细节可参考:GitHub 仓库。

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

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

Xiaoye