dsh-restart-now
DSH 桌面版一键重启插件:在侧边栏底部与设置页各加一个「重启应用」入口,
点击后安全地退出并重新拉起 DeepSeek Harness 桌面应用。
工作原理
- 宿主半边(
lib/index.js)注册两条路由:
GET /plugins/dsh-restart-now/environment —— 环境探测(desktop / web)
POST /plugins/dsh-restart-now/restart —— 重启动作
- 门禁顺序:
allowRestart 总开关 → 环境判定(非 desktop 一律 403,
绝不触碰 web 环境的进程)→ Q6 围栏(loopback 直连 + 无转发头 +
Origin==Host,防浏览器端任意页面打本机端口)→ exe 存在性 fail-fast。
- 重启机制(v0.7 勘误,WMI 逃逸树 + 单一杀手):宿主把助手脚本写到
%TEMP%\dsh-restart-now-helper-<stamp>.cjs,经 WMI(Win32_Process.Create,
父进程为 WmiPrvSE,脱离宿主进程树,不会被 taskkill 连坐)拉起 node 助手;
助手全权执行:延时 → taskkill /PID <ppid> /T /F → 轮询旧进程退出 → 重新拉起
DeepSeek Harness.exe。失败写 %TEMP%\dsh-restart-now-*.err.log。
- 客户端半边(
lib/client.js)启动时探测环境,仅 desktop 挂载
sidebar.footer.action 与 settings.section 双入口;web 环境零挂载。
配置
设置页「重启应用」区块可直接编辑并保存(落 restart-now.config.json);
也可在 profile 的 cordis.patch.yml 条目 config 块中设置。
优先级:代码默认 < patch 条目 < 配置文件(UI 保存写入文件层)。
| 键 | 默认 | 说明 |
|---|
allowRestart | true | 总开关,false 时动作口返回 403 disabled |
confirm | true | 点击后二次确认 |
hideSidebarButton | false | 隐藏侧栏底部重启入口(保存后立即生效) |
delayMs | 50 | 应答后到杀树的延时(毫秒,0–60000) |
exePath | '' | exe 绝对路径;留空时从当前安装位置自动推导 |
安装
在 DSH 桌面版所在机器上运行:
dsh plugin --profile desktop add dsh-restart-now
DSH CLI 会通过 pnpm 从 npm 安装插件,并将其登记到桌面 profile;不需要下载或解压项目源码。安装完成后重启 DSH。升级时再次运行该命令。
适用范围
- 操作系统:暂时仅支持 Windows 10/11。重启链路(WMI
Win32_Process.Create、
wscript VBS 派发、taskkill /T、DeepSeek Harness.exe 路径推导)目前全部是
Windows 机制;在其他系统上安装后插件不挂载任何入口,动作口返回
403 unsupported-platform。macOS / Linux 支持在计划中。
- DSH Desktop:0.2.0 及以上(验证于 0.2.0-rc.2)。注意
DeepSeek Harness.exe
文件属性里的 44.0.0 是内嵌 Electron 运行时版本,不是产品版本;产品版本以
dsh --version / 包 @deepseek-ai/dsh-desktop 为准。Web profile / dsh web
下插件不生效(不挂载入口,动作口拒绝并提示使用 dshmarket 的宿主重启)。
开发
npm test # node:test