🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

热重启按钮 xiaolu511/dsh-hot-restart

DeepSeek Harnessv0.3.16
xiaolu51121 天前有提交已提供中文文档扫描:含敏感能力

DSH 热重启插件:窗口里放一个固定按钮,点一下就能关掉 DeepSeek Harness 再自动重开,全程不弹控制台窗口;自带自检,出问题点一下就能生成一份诊断报告,直接拿来定位问题

32.9/100
综合分
4
GitHub 星标
418
npm 周下载
—/5
用户评分

数据截至 2026/10/14 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-hot-restart
npm 源 · dsh-hot-restart 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · desktop
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 21 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-hot-restart @ 0.3.16
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/21 02:57:54

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 14 处,展示前 14 条)
  • 执行外部命令来自配置/变量
    lib/index.js:105
    return execFileSync(
  • 执行外部命令固定命令
    lib/index.js:317
    const child = spawn('explorer.exe', [wrapper], { detached: true, stdio: 'ignore', windowsHide: true })
  • 执行外部命令固定命令
    lib/index.js:418
    const child = spawn('taskkill', args, { stdio: 'ignore', detached: true, windowsHide: true })
  • 执行外部命令固定命令
    lib/index.js:491
    const killer = spawn('taskkill', ['/F', '/T', '/PID', String(pid)], {
  • 执行外部命令来自配置/变量
    lib/index.js:517
    child = spawn(POWERSHELL, [
  • 发起网络请求
    lib/ui.js:263
    return fetch(API + '/diagnose', {
  • 发起网络请求
    lib/ui.js:357
    fetch(API + '/diagnose/cancel', {
  • 发起网络请求
    lib/ui.js:374
    fetch(API + '/status.json', { credentials: 'same-origin', headers: { accept: 'application/json' } })
  • 写入剪贴板
    lib/ui.js:438
    function writeClipboard(text) {
  • 写入剪贴板
    lib/ui.js:441
    return navigator.clipboard.writeText(text).then(function () { return true }, function () { return false })
  • 发起网络请求
    lib/ui.js:458
    fetch(API + '/status.json', { credentials: 'same-origin', headers: { accept: 'application/json' } })
  • 写入剪贴板
    lib/ui.js:463
    return writeClipboard(text)
  • 发起网络请求
    lib/ui.js:561
    fetch(API + '/restart', {
  • 发起网络请求
    lib/ui.js:625
    return fetch(API + '/status.json', { credentials: 'same-origin', headers: { accept: 'application/json' } })
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 一键关闭并重开
  • 窗口内固定按钮
  • 无控制台窗口
v0.3.162026-10-12
⚡ 自检从 29 秒压到 9 秒 · 五条派发探针默认不再实跑:每条都要真的起一个脚本宿主进程,杀毒软件会拦、会弹授权窗口, 在被拦的机器上这一步能磨二十多秒 —— 恰好是「自检很慢」的主因 · 端口枚举改成先查一次进程表:原来每个连接查一次 WMI,几十个连接就是十秒 · 路由探测不再写死端口(43120 那种空端口,探两次白等四秒) 🔍 默认模式改成「读策略」 · 新增「安全环境」一节:Windows Script Host 策略、PowerShell 生效执行策略、 已安装的安全软件、Defender 受控文件夹访问 / ASR、AppLocker · 这些查询只读、在进程内完成、不创建任何进程,所以不会触发杀软授权窗口 · 想拿实测证据时:tools\diagnose.cmd -DeepProbe 再跑一次 📊 进度看得见,还能取消 · 自检时屏幕正中弹一张小卡片(不是全屏遮罩 ✗):进度条 + 「第 N/8 步:在干什么」 + 已用秒数 · 进度由脚本一步步写出来,页面每 0.7 秒读一次;跑完自己消失并给出报告完整路径 · 带取消自检按钮:点一下宿主会把那个脚本进程连同探针子进程一起收掉 · 卡住会说清楚:12 秒还一步没走,就提示「像是被安全软件挂住了」, 并给出手动路线 tools\diagnose.cmd(那样授权窗口会正常弹出来) 📌 背景 · 主人反馈「点完自检一片安静,不知道它动没动」,而且怀疑是杀软在弹授权 ---
v0.3.152026-10-12
🩹 就绪握手 · 助手先报「我准备好了」:助手校验完 exe 路径与凭据之后才写 helper ready,宿主必须等到这一行才敢关 DSH。 以前只要助手往日志写一行就算通过 ✗ —— 于是助手明明报了 ABORT,宿主照样把 DSH 关掉, 用户看到的就是「DSH 消失了、没回来」 · 助手报 ABORT 时绝不关 DSH:三条派发通道都不就绪就直接放弃这次重启, 弹窗里原样带上助手给出的原因 🌏 中文路径 · 借 Explorer 派发时用的包装脚本改成 UTF-16LE + BOM。原来按 ASCII 写盘, 装在 C:\Users\-\新建文件夹\ 这类路径下会被毁成乱码 (实测 新建文件夹 → 苞圅9,与用户报告里那行一字不差),助手因此拒绝动手 📋 报告可读性 · 自检报告读 restart.log 时改用 UTF-8:以前按默认编码读,宿主写的中文路径在报告里显示成乱码, 看起来像插件本身坏了 📌 背景 · 一台纯净无插件的机器上,WMI 创建进程被安全策略挡住;插件退到 Explorer 通道后, 又因为上面的编码问题没能把 DSH 拉起来。这份报告是自检系统第一次实战,四条证据一次到手 🔒 编码合同(防回归) · 新增编码合同测试:非 ASCII 的 .ps1 必须带 UTF-8 BOM、.vbs/.cmd 必须纯 ASCII,改坏了直接变红 · 新增中文路径金丝雀:用产品自己的写法生成包装脚本,真的交给 wscript 跑一遍, 确认 新建文件夹 这类路径原样送达(当年就是它变成 苞圅9,害得 DSH 关闭后没起来) ---
v0.3.142026-10-12
🔍 自检系统 · 按钮右键菜单:「自检并生成诊断报告」/「复制诊断信息」/「查看版本」 · 出错自动自检:重启请求被拒时、点了变灰的按钮时、宿主发现「上一次启动是失败的」时 · 助手也会自检:DSH 被关掉之后只有助手还活着 —— 它启动新实例失败、或者新实例起来 12 秒内又死了,就自动生成报告并弹窗 · 报告位置会明确报出来:脚本把路径写进 last-report.txt,页面显示完整路径,助手弹窗里也带着同一个路径 · 自检脚本 tools/diagnose.ps1 加双击入口 tools/diagnose.cmd,全程只读,报告写到桌面并用记事本打开 · 报告里有什么:结论速览、派发能力矩阵(五条通道各自报「进程建了没 / 还活着吗 / 脚本产出了没」)、环境、全部进程命令行、插件文件与哈希、市场锁是否卡死、上次启动停在哪个阶段、GPU 崩溃次数、端口、路由、完整 restart.log ⚡ 重启提速:56 秒 → 14 秒左右 · 修掉 taskkill /PID undefined:那条「优雅关闭」从来没生效过,每次重启都在白等助手兜底 · 等待循环里的存活判断从「同步起一个 PowerShell」换成 process.kill(pid, 0)(前者把等 3 秒拖成了 10~45 秒) · 优雅关闭只给 1 秒:DSH 有托盘,WM_CLOSE 只会把它收进托盘 · 强杀之前的身份核对与等待并行,不再串在关键路径上 · 外壳探测移出启动路径,改成挂载后空闲预热 · 助手兜底等待从 25 秒收紧到 10 秒 · 剩下约 7 秒是 DSH 自己启动,插件动不了 🛡️ 防止误杀 · 宿主与助手在强杀之前都会核对exe 路径 + 创建时间,而不只看 PID —— Windows 会复用 PID 值 🧊 界面与提示 · 重启冷却 5 秒;冷却被拒不再自动自检,弹窗语气变成「稍等一下再试」 · 被拒之后立刻撤掉遮罩,不再留着「正在热重启 DSH…」的画面 · 同一份诊断报告只提示一次,手工跑的报告不推给用户 📦 安装 / 升级 · spec 要带准确版本号(刚发布的版本 24 小时内会被 DSH 的供应链策略跳过),装完重启一次 DSH 才生效 ---
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-hot-restart · DSH 热重启 | English | 小白向指南 在 DSH 窗口里放一个固定的按钮,点一下就把 DSH 关掉并自动重开;出问题的时候,右键它就能生成一份能直接定位的诊断报告。 - 按钮固定不动,浮在页面上,不会挤压正文; - 实心主题色加白字「热重启 DSH」,一眼能看见; - 点下去先弹确认框,提醒重启会中断正在运行的任务; - 重开之后页面会弹一条「DSH 已热重启完成」; - 右键按钮 → 自检:十秒左右产出一份自包含的诊断报告,用户只要把那个 txt 发过来就行,不用自己描述症状。 内置自检 按钮不好使、DSH 关了没起来、装了插件打不开 —— 这类问题以前只能靠来回问。现在点一下就有答案: - 右键按钮 →「自检并生成诊断报告」,屏幕正中弹一张进度卡片(第几步 / 在干什么 / 已用秒数),跑完给出报告完整路径,并自动用记事本打开。卡片上有「取消自检」; - 出错会自动跑:重启请求被拒、点了变灰的按钮、宿主发现上一次启动是失败的; - DSH 没起来时助手也会跑:DSH 被关掉之后只有助手还活着,它启动新实例失败、或者新实例起来 12 秒内又死了,就自动生成报告并弹窗; - 默认不创建任何进程:只读策略与状态,所以不会触发杀毒软件的授权窗口(自检 9 秒左右)。
展开完整文档(README 剩余 1 节)
dsh-hot-restart · DSH 热重启

| English | 小白向指南

在 DSH 窗口里放一个固定的按钮,点一下就把 DSH 关掉并自动重开;出问题的时候,右键它就能生成一份能直接定位的诊断报告。

- 按钮固定不动,浮在页面上,不会挤压正文;
- 实心主题色加白字「热重启 DSH」,一眼能看见;
- 点下去先弹确认框,提醒重启会中断正在运行的任务;
- 重开之后页面会弹一条「DSH 已热重启完成」;
- 右键按钮 → 自检:十秒左右产出一份自包含的诊断报告,用户只要把那个 txt 发过来就行,不用自己描述症状。

内置自检

按钮不好使、DSH 关了没起来、装了插件打不开 —— 这类问题以前只能靠来回问。现在点一下就有答案:

- 右键按钮 →「自检并生成诊断报告」,屏幕正中弹一张进度卡片(第几步 / 在干什么 / 已用秒数),跑完给出报告完整路径,并自动用记事本打开。卡片上有「取消自检」;
- 出错会自动跑:重启请求被拒、点了变灰的按钮、宿主发现上一次启动是失败的;
- DSH 没起来时助手也会跑:DSH 被关掉之后只有助手还活着,它启动新实例失败、或者新实例起来 12 秒内又死了,就自动生成报告并弹窗;
- 默认不创建任何进程:只读策略与状态,所以不会触发杀毒软件的授权窗口(自检 9 秒左右)。
要看五条派发通道的实测结果,加开关再跑一次: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

装完要手动重启一次 DSH

两个原因,都得靠一次真实的进程重启解决:

1. 桌面壳的注入表只在宿主启动时收集一次,之后经 IPC 交给页面并缓存,运行期没有刷新通道。
不重启的话,页面里不会出现按钮;
2. 宿主侧代码按模块 URL 缓存,热装热更不会替换已经在跑的模块,所以 lib/index.js 的改动要等下一次宿主启动才生效。插件管理器也会把这类安装标成 restart-required。

重启方式二选一:

- 双击 tools\restart-dsh.vbs,推荐;
- 托盘图标右键「退出」,再正常打开 DSH。

用法

| 操作 | 结果 |
| 点按钮 | 弹确认框 →「立即热重启」→ 关闭并自动重开 DSH |
| Esc | 关掉确认框 |

按钮平时是主题色;宿主判断不可重启时变灰,悬停能看到原因;正在重启时变琥珀色。

它是怎么重启的

1. 页面请求 POST /dsh-hot-restart/restart,带上 x-dsh-hot-restart: 1 头;
2. 宿主半区先定位外壳进程,看的是自己的父进程:不能是 Electron 的 --type= 子进程,不能是终端或解释器,并且 exe 名字得像 DSH 应用,否则直接拒绝,绝不去杀终端里的 dsh web;
3. 用 WMI 派发 wscript.exe //B lib\relaunch.vbs。wscript 是 GUI 子系统程序,不创建控制台; WMI 创建的进程脱离 DSH 的 Job,能活到外壳退出之后;
4. 宿主回包给页面,700ms 后 taskkill /F 终结外壳进程;
5. 助手等外壳退出,25 秒内没等到就自己用 WMI 强制结束,接着等 19387 端口释放,最后用 WMI 拉起 DSH,新实例不继承任何控制台。

日志在 $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。

卸载

让智能体执行 plugin_manager 的 remove_bundle,target 写 dsh-hot-restart;或者:

dsh plugin --profile web remove dsh-hot-restart

最后删掉 $DSH_HOME/hot-restart/ 就行,里面只有日志和上次重启记录。

限制

- 只在 Windows 桌面客户端下能热重启,其它情况按钮会变灰并说明原因。
- 重启是强制的。正在生成或执行工具的任务会被中断,会话与项目文件都已落盘,重开后可以继续。
- 别用「在控制台里敲命令」的方式启动 DSH:那样 DSH 会挂在那条命令行的控制台上,关掉那个窗口 DSH 也会死。
这是 Windows 的行为,不是插件造成的。用开始菜单快捷方式、双击 exe 或本插件的重启工具都没这个问题。
- 按钮位置写死在主区域左下角。想换位置就改 lib/ui.js 里 #dsh-hr-btn 的 left 和 bottom。
预览分享卡片长什么样 ↓xiaolu511/dsh-hot-restart
分享 · DeepSeek Harness Hub
xiaolu511/dsh-hot-restart

DSH 热重启插件:窗口里放一个固定按钮,点一下就能关掉 DeepSeek Harness 再自动重开,全程不弹控制台窗口;自带自检,出问题点一下就能生成一份诊断报告,直接拿来定位问题

回到顶部