dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH 窗口里的一个固定按钮,点一下就把 DSH 关掉并自动重开,全程没有控制台窗口;右键它还有内置自检,能生成一份自包含的诊断报告。
在 DSH 窗口里放一个固定的按钮,点一下就把 DSH 关掉并自动重开;出问题的时候,右键它就能生成一份能直接定位的诊断报告。
按钮不好使、DSH 关了没起来、装了插件打不开 —— 这类问题以前只能靠来回问。现在点一下就有答案:
tools\diagnose.cmd -DeepProbe;tools\diagnose.cmd 手动跑,报告写到桌面。报告里有什么:结论速览、派发能力矩阵(五条通道各报「进程建了没 / 还活着吗 / 脚本产出了没」)、 安全环境(WSH 策略 / 执行策略 / 已装杀软 / Defender 受控文件夹与 ASR / AppLocker)、 DSH 全部进程与命令行、插件文件哈希、市场锁是否卡死、上次启动停在哪个阶段、GPU 崩溃次数、 端口、路由,以及完整的插件日志。
每个版本的改动见 CHANGELOG.md。
已发布到 npm。spec 要带准确版本号 —— 刚发布的版本在 24 小时内会被 DSH 的供应链策略跳过,只写包名会停在旧版本:
dsh-hot-restart@0.3.16
装不上就换 GitHub 地址,目标机器需要有 git:
github:xiaolu511/dsh-hot-restart
离线环境可以用打包好的 tgz,spec 写 file: 加上 tgz 的绝对路径。
桌面客户端让 Agent 执行 plugin_manager 的 install_bundle 即可。web profile 走 CLI:
dsh plugin --profile web add dsh-hot-restart
两个原因,都得靠一次真实的进程重启解决:
lib/index.js 的改动
要等下一次宿主启动才生效。插件管理器也会把这类安装标成 restart-required。重启方式二选一:
tools\restart-dsh.vbs,推荐;| 操作 | 结果 |
|---|---|
| 点按钮 | 弹确认框 →「立即热重启」→ 关闭并自动重开 DSH |
Esc | 关掉确认框 |
按钮平时是主题色;宿主判断不可重启时变灰,悬停能看到原因;正在重启时变琥珀色。
POST /dsh-hot-restart/restart,带上 x-dsh-hot-restart: 1 头;--type= 子进程,不能是终端或解释器,
并且 exe 名字得像 DSH 应用,否则直接拒绝,绝不去杀终端里的 dsh web;wscript.exe //B lib\relaunch.vbs。wscript 是 GUI 子系统程序,不创建控制台;
WMI 创建的进程脱离 DSH 的 Job,能活到外壳退出之后;taskkill /F 终结外壳进程;日志在 $DSH_HOME/hot-restart/,里面有 restart.log 和 last-restart.json。
dsh-hot-restart/
├─ cordis.patch.yml # bundle 挂载声明
├─ lib/
│ ├─ index.js # 宿主半区:注入行 + /dsh-hot-restart/* 路由 + 重启编排
│ ├─ relaunch.vbs # 重启助手首选:零控制台,等外壳退出后用 WMI 拉起 DSH
│ ├─ relaunch.ps1 # 助手兜底,只在系统禁用 wscript 或 VBScript 时用到
│ └─ ui.js # 页面侧:固定位置的按钮,无构建步骤
├─ tools/
│ ├─ restart-dsh.vbs # 双击即静默重启 DSH,零窗口,升级或救急用
│ ├─ restart-dsh.cmd # 终端里用,会打印进度,但 .cmd 必然带控制台窗口
│ └─ restart-dsh.ps1 # 上面 .cmd 的实现
├─ tests/host-half.test.mjs
└─ package.json
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /dsh-hot-restart/status.json | 宿主与外壳信息、能否重启,页面加载时问一次 |
| POST | /dsh-hot-restart/restart | 发起热重启,需要 x-dsh-hot-restart: 1 |
| GET | /dsh-hot-restart/ui.js | 页面脚本本体 |
三条路由都会先过插件自己的回环检查、同源检查和 Sec-Fetch-Site 检查,再交给宿主信任栅栏,
所以只有本机页面能触发。裸 curl 会拿到 401。
让 Agent 执行 plugin_manager 的 remove_bundle,target 写 dsh-hot-restart;或者:
dsh plugin --profile web remove dsh-hot-restart
最后删掉 $DSH_HOME/hot-restart/ 就行,里面只有日志和上次重启记录。
lib/ui.js 里 #dsh-hr-btn 的 left 和 bottom。