DeepSeek Harness 重启插件

前言

在 DeepSeek Harness (DSH) 的开发与调试过程中,有时需要重启 dsh web 进程。这通常发生在修改了配置文件、更改了插件宿主半、调整了端口或工作区,或者需要清除会话状态时。传统的做法是打开终端、手动停止进程并重新启动。dsh-plugin-restart 插件在设置中提供了一个重启按钮,通过一次点击即可替换正在运行的服务进程,并让页面自动重连。

插件介绍

该插件由 chenkui-luo 维护,采用 MIT 许可证。它通过在 DSH 的设置界面中添加一个重启卡片,解决了需要终端操作或重新打开桌面图标才能重启的问题。插件运行在 DSH 的 web 上下文中,不需要管理员权限,也不会触碰系统配置。

安装与启用

在终端中执行以下命令即可安装:

dsh plugin --profile web add github:chenkui-luo/dsh-plugin-restart

安装完成后,刷新页面,进入设置界面即可看到重启选项。

核心功能

  • 进程替换与自动重连:点击按钮后,会替换当前 serving 页面的 dsh web 进程,页面会自动重新连接。
  • 无需终端操作:整个过程在浏览器设置中完成,不需要打开命令行终端。
  • 处理热重载失效场景:针对插件宿主半修改、配置修改、端口变更或会话状态清除等无法热重载的情况提供解决方案。
  • 安全机制:仅支持认证的 same-origin loopback 请求,不接受代理转发的请求。
  • 权限控制:不需要管理员权限,不修改系统配置。

使用流程

点击设置中的重启按钮后,后台会按顺序执行以下操作:

  1. 发起请求:页面发送 POST /dsh-restart/restart 请求,请求为认证的 same-origin。
  2. 启动辅助进程:宿主半启动一个 detached helper 进程,并在任何服务停止前响应请求。
  3. 等待端口释放:helper 等待端口停止接受连接。
  4. 启动器接管:launcher 启动一个新的 dsh web 实例,并写入启动令牌文件。
  5. 确认替换:helper 确认新实例已就绪,然后允许旧进程退出。
  6. 页面重连:页面在下一次轮询中检测到新的实例 ID,从而重新加载自己。

注意事项

  • 中断对话:重启会中断当前正在进行的对话轮次,这是重启的标准行为。
  • 端口占用:如果端口被 launcher 无法识别的进程占用(例如手动启动的 dsh web),重启操作会接管该端口,包括其进程树。
  • 错误提示:当关键文件缺失时,按钮会报告清晰的错误,而不是假装工作。

日志与配置

重启过程的详细日志保存在本地:

%LOCALAPPDATA%\DeepSeekHarness\restart-plugin\logs\restart.log

插件支持以下环境变量配置:

变量名 作用
DSH_RESTART_INSTALL_DIR Launcher 运行时目录(默认 %LOCALAPPDATA%\DeepSeekHarness)
DSH_RESTART_DATA 插件私有数据目录(默认 <INSTALL_DIR>\restart-plugin)
DSH_RESTART_LAUNCHER 指向另一个 launcher 脚本(用于便携安装或测试)

结尾

该插件通过自动化进程替换与重连流程,简化了 DSH 的日常维护工作。更多细节与源码,请参考插件目录或GitHub 仓库。

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

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

小夜