前言¶
DeepSeek Harness (DSH) 环境下,对客户端 bundle 的修改只有在 host 进程重启后才会生效。如果需要在运行中更新代码或调整配置,通常需要切换回终端,找到对应的进程句柄并执行重启命令。这个过程不仅繁琐,而且容易因为环境差异导致执行失败。
dsh-simple-restart 插件解决了这个问题。它在 DSH 的设置界面中增加了一行控制项,允许直接通过浏览器界面重启正在运行的 dsh web 进程,且保持原有的启动参数和运行环境不变。
核心功能¶
该插件独立管理自身的路由和重启逻辑,不依赖其他插件:
- 界面集成:在 Settings → General(通用)设置行中添加“重启 dsh web”按钮。
- 进程重启:使用与原进程完全相同的 invocation(可执行文件、参数、工作目录)启动新的进程。
- 端口冲突处理:通过启动一个分离的 helper 进程来处理端口占用问题,确保新进程能顺利绑定端口。
- 日志记录:将诊断日志写入临时目录,便于故障排查。
安装与启用¶
安装插件需要使用 DSH 的 CLI 工具,并指定 web profile。
1、通过 GitHub 仓库安装:
dsh plugin --profile web add "github:yizhixiaokong/dsh-simple-restart"
2、若需固定版本,可添加标签:
dsh plugin --profile web add "github:yizhixiaokong/dsh-simple-restart#v0.1.1"
3、安装完成后,必须重启一次 dsh web。这是因为客户端 bundle 是在启动时基线化的,重启后按钮才会出现在设置界面中。
使用方法¶
启用插件并重启 dsh web 后,操作步骤如下:
1、进入 Settings → General 设置页面。
2、点击 “重启 dsh web” 按钮。
3、按钮进入“确认”状态,提示“确认重启?”。
4、在 5 秒钟内再次点击按钮以确认重启。
5、系统会自动处理进程替换,浏览器页面会在新进程就绪后自动重连。
此时,设置行下方的提示信息会显示正在退出的 host 进程 PID 和 helper 进程 PID,以及诊断日志的存储路径。
注意事项¶
使用此插件时,需注意以下限制:
- 系统服务监控:如果进程由 systemd 等守护进程监控,默认情况下不会重启(除非在配置中设置
allowRestart: true)。这是因为 systemd 的默认KillMode会一并杀死 helper 进程,导致重启失败。 - 调试器限制:该插件无法在调试器附加的情况下使用。
- 日志清理:诊断日志仅追加写入临时目录,不会自动清理,请定期检查。
- 插件热更新:对客户端 bundle 的修改,只有在 host 进程重启后才会生效,无法通过此按钮直接触发客户端 bundle 的热更新。
- 无端口场景:如果 host 进程没有绑定端口,helper 进程会在开始替换前等待 1.5 秒。
结语¶
dsh-simple-restart 提供了一种标准化的重启流程,将运维操作从终端转移到了浏览器界面,降低了操作门槛。对于需要在开发环境中频繁重启服务的场景,这能显著提升开发效率。