前言¶
在 DeepSeek Harness (DSH) 的开发与维护中,宿主进程(dsh web)的代码更新或异常处理往往需要重启服务才能生效。以往这通常需要切换回终端窗口手动执行重启命令。dsh-restart 插件将这一过程移至 Web GUI,通过一个 Web 按钮配合后台辅助进程,实现了重启操作的图形化,并在重启失败时提供独立的恢复控制台。
插件定位¶
dsh-restart 是一个由 zhengjy01 维护的工作流插件,采用 MIT 许可证。它不直接在宿主进程内执行重启逻辑,而是将重启任务委托给一个 detached helper,通过 Web 界面触发,并自动处理页面重连、日志捕获和错误恢复。
核心功能¶
插件主要提供以下能力:
* Web GUI 一键重启:在设置面板提供“重启”卡片和侧边栏入口,支持手动点击立即重启。
* 人工审批门禁:默认开启。当代理调用重启工具时,只提交请求而不执行重启,必须由用户在面板中点击“批准并重启”才能执行。
* 自动检测策略:根据宿主进程是否为 launchd job,自动选择 launchctl kickstart 委托方式或直接重启相同命令。
* 独立恢复控制台:在 http://127.0.0.1:3099 启动辅助服务,即使 DSH 主进程崩溃,该控制台仍保持运行,显示启动日志和错误信息。
* 代理工具:提供 dsh_restart_status(只读查询状态)和 dsh_restart(提交重启请求)两个工具。
安装与启用¶
在命令行中执行以下命令安装插件:
dsh plugin --profile web add github:zhengjy01/dsh-restart
安装完成后,重启一次 DSH 以加载插件。之后即可在设置面板的“插件配置 → Web 插件”中看到“重启”卡片,或在左侧边栏看到重启图标。
典型用法¶
1. 手动重启¶
- 打开「设置 → 插件配置 → Web 插件 → 重启」面板。
- 点击「立即重启」按钮。
- 页面会显示重启阶段和耗时,新进程启动后页面会自动重连。
2. 代理触发重启(需人工批准)¶
- 代理在对话中调用
dsh_restart工具。 - 工具不会立即重启,而是生成一个待审批请求(文件存储在
~/.dsh/dsh-restart/pending-approval.json)。 - 用户在面板中看到红色的确认卡片,包含请求原因和时间倒计时。
- 用户点击「批准并重启」后,重启才会执行。
注意事项¶
- 权限与授权:代理工具
dsh_restart需要调用方声明confirm: true,但这仅作为自证声明。插件默认开启人工审批,代理无法绕过用户点击直接重启宿主。 - 控制台持久性:辅助进程的恢复控制台(
127.0.0.1:3099)拥有独立的端口,即使 DSH 主进程死亡,该控制台仍保持运行,方便排查启动错误。 - 历史记录:重启历史记录保存在
~/.dsh/dsh-restart/history..目录下。