前言¶
在 DeepSeek Harness(DSH)里改插件、调配置或长时间跑任务时,常常需要整进程重启才能生效。直接在插件进程里调用类似 app.relaunch() 的做法,往往无法干净地结束当前 DSH 再拉起新实例——插件本身跑在 DSH 进程内,很难扮演「先杀再起」的执行者。下面介绍社区插件 dsh-restar(仓库名 dsh-restar,界面品牌 DS_RESTAR):用倒计时、前端卡片和进程外看守程序,把「说一句重启 → 等倒计时 → 自动结束并重启 → 窗口回前台」做成可撤销的一整套流程。
这是什么¶
DS_RESTAR 是维护者 a1422398302aa-hash 发布的 DSH 客户端类插件。一句话定位:给 DeepSeek Harness 用的「自助重启」小部件——排倒计时,时间到了由独立 Node 看守进程结束 DSH、等待空档、再启动,用户只需对助手说「重启」或点卡片上的按钮。
整体流水线(资料原文):
倒计时 → 结束进程 → 空档 30s → 重新启动 → 窗口回到前台 → 看守进程自行退出
架构:为什么拆成「插件 + 看守进程」¶
| 角色 | 位置 | 职责 |
|---|---|---|
dsh-restar(本插件) |
DSH 进程内 | 下单(写排期文件)、查单、提供工具和前端卡片 |
| DS_RESTAR 看守进程 | 独立 node 进程 | 执行 kill / 等待 / start,并验证新进程是否存活 |
看守进程由 WMI 拉起,父进程是 WmiPrvSE.exe,不在 DSH 的 job object 里——否则 taskkill /F 会把看守一起带走(README 中说明为第一版踩过的坑)。存活判据只看进程名,不把 DSH 端口当作依据(port 保持 0;第二版踩过的坑)。
核心功能¶
助手与工具¶
对助手说:
- 「重启一下」→ 调用
dsh_restart,默认 60 秒后执行 - 「90 秒后重启,我要保存东西」→ 使用
delaySec: 90 - 「别重启了」→
dsh_restart_cancel,或直接点卡片上的红色按钮
注册的工具(README 表格):
| 工具 | 作用 |
|---|---|
dsh_restart(delaySec?, reason?) |
排一次重启,返回时间线 |
dsh_restart_status() |
还有多久、看守进程在不在、上次花了多久、最近日志 |
dsh_restart_cancel() |
撤销:删排期 + 结束看守进程 + 撤掉兜底任务 |
屏幕上的倒计时卡片¶
有排期时,输入框上方会出现一张卡片:
- 文案「DS_RESTAR 即将重启」+ 大号
mm:ss倒计时 - 进度条按「排期时刻 → 触发时刻」推进;最后 10 秒整体转红
- 底行显示看守进程状态,右侧红色 取消重启 按钮
- 没有排期时卡片不存在(
display:none),也不拦截点击(pointer-events:none,按钮除外)
配置与安全边界¶
插件侧(DSH 插件设置):
| 键 | 默认 | 说明 |
|---|---|---|
watchdogRoot |
%USERPROFILE%\.dsh\dsh-restar |
看守程序运行目录 |
defaultDelaySec |
60 | 默认倒计时 |
defaultGapSec |
30 | 杀完到重启的空档(展示用;实际空档在 config.json 的 timing.killGapMs) |
首次执行重启时,插件会把自带的 watchdog/ 目录铺到 %USERPROFILE%\.dsh\dsh-restar,并生成指向当前 DSH 的 config.json,无需另外克隆仓库。
看守程序 config.json 中还包含应用路径、时序(如 killGapMs: 30000)、可选目录监听自动重启、重启前 sync 等字段;详见仓库 README。
安全边界(资料原文要点):
- 只在本机操作,只结束
imageName匹配的进程 - 排期文件是唯一事实来源;撤销即删除排期
- 看守在重启成功后会自行退出;失败时不退出,保留兜底计划任务
DS-Watchdog-Fallback,5 分钟后尝试补拉一次
安装与启用¶
环境要求:Windows(使用 taskkill / schtasks / explorer.exe 相关行为),Node 20+。
官方安装命令(README 原文,请将占位替换为仓库地址或本地路径):
dsh plugin add <本仓库地址或本地路径>
社区目录页:https://www.skillhub.cn/plugins/a1422398302aa-hash/dsh-restar
源码与说明:https://github.com/a1422398302aa-hash/dsh-restar
安装前请自行查看仓库源码与 MIT 许可证。插件以当前 DSH 进程权限运行,涉及结束本机进程与计划任务,仅在可信环境中使用。
典型用法小结¶
- 用上述
dsh plugin add安装插件并启用客户端注入(package.json中dsh.client.platform为web,immediately: true)。 - 需要对 DSH 整进程重启时,对助手说明延迟秒数或直接说「重启一下」。
- 在卡片上确认倒计时;若要放弃,点 取消重启 或说「别重启了」。
- 需要排查时用
dsh_restart_status()查看剩余时间、看守状态与日志。
适用场景与注意¶
适合:在 Windows 上长期用 DSH、频繁改插件或配置、希望可撤销的延迟重启而不是手动关进程再点开客户端的开发者。
务必注意:
- 仅 Windows;Linux/macOS 不在 README 支持范围内。
- 插件与看守程序会结束名为
DeepSeek Harness.exe(可配置imageName)的进程,安装前确认配置与源码。 - SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系;星标与版本以 GitHub 页面为准(资料中
package.json版本为 0.3.0)。
结尾¶
DS_RESTAR 把「重启 DSH」从进程内做不到的 relaunch,拆成插件下单 + 进程外看守执行,并用卡片和取消按钮把风险控在可见倒计时之内。若你需要在 Harness 生态里找同类能力,可在社区目录检索 dsh-restar,或打开 GitHub 仓库阅读 watchdog/ 与 lib/ 的实现细节。