DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
R

dsh-reloader

Reloader

DSH 插件:不关程序热重载插件与界面;需要时彻底重启桌面版

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:kuroshio4396/dsh-reloader#20dfb9985b3efb50fea1bfb90eb6fd0e31538d93
README兼容性版本

兼容性与来源证明

Reloader 以 dsh-reloader 发布,当前版本为 1.0.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/20

版本

1.0.0stable
2026/10/20

相关插件

正在加载相关插件…

最新版
1.0.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/20
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Experimental Inspector@deepseek-ai/dsh-experimental-inspector用于 Host 调试和 Client Runtime 检查的实验性跨 realm CDP hub

README

dsh-reloader

给 DeepSeek Harness(DSH)桌面版用的一个小插件,只做两件事:

  • 重载刷新 —— 不关程序。让宿主重新组合 profile(磁盘上改过的插件会被停掉、重新加载),然后刷新页面重新取数。代价:页面闪一下,设置面板会关掉。
  • 自动重启 —— 彻底结束整个程序,再由一个独立的重启器立即把程序拉起来。代价:窗口消失约 5 秒,进行中的任务会中断。

入口:设置 → 重载与重启。

适用于打包版(Electron 桌面版)。源码模式跑 dsh web 时,「重载刷新」可用,「自动重启」会提示不支持。

为什么需要它

  • 桌面版把窗口关闭当「隐藏到托盘」,before-quit 在有任务时还会弹确认框 —— 没有「礼貌退出」的程序入口。
  • 插件装了 / 改了,DSH 默认要整个重启才生效;HMR 面世后可以只重载插件。
  • 现在这两个动作都在设置页里,一键完成。

实现要点(改代码前先看)

index.js        宿主半端:路由 + HMR 重载 + 排程重启
client.js       界面半端:设置里的「重载与重启」页(自注册脚本,非 ESM)
lib/proc.mjs    认路(exe / app pid / host pid)+ 用 WMI 拉起重启器
lib/state.mjs   家目录、日志、事件台账(重启后还要能读到)
scripts/launch-restarter.ps1   用 Win32_Process.Create 创建「脱离进程树」的重启器
scripts/restart.ps1            等一会 → 校验 pid → 结束主进程 → 等宿主死透 → 重新拉起
selfcheck.mjs   自检(改完必跑)

1. HTTP 路由必须挂 connection.fetch

桌面版界面走 Electron 自定义协议,ctx.webServer.register 收不到请求。所以两条都挂:

  • /api/dsh-reloader/* —— ctx.connection.fetch.register,桌面版与 Web 版都走这条(带鉴权)
  • /dsh-reloader/api/* —— ctx.webServer.register 前缀路由,源码模式 / 老宿主用

前端启动时先探 /ping,哪个通就用哪个。

2. 重载 = ctx.hmr.runExclusive(() => ctx.hmr.reconcileProfile())

  • 必须在 runExclusive 里跑(HMR 所有变更共用一条串行队列)
  • 它会把「磁盘上文件变过的插件」停掉、重新 import、重新 apply
  • 返回 { warnings, pending, restartReason }:pending 是写了盘但要重启才生效的模块数
  • ⚠️ 重载会替换本插件自己(文件变了就会换新实例),所以内存状态会被清零 —— 结果必须落盘到 state.json

3. 重启 = 杀 Electron 主进程 + 由「逃出 job object」的重启器重新拉起

链路上的三个事实:

  1. 插件跑在 Host 子进程里(Electron 主进程 spawn 的)。process.ppid = 主进程 PID,process.execPath = 桌面版 exe。
  2. Chromium 主进程带 job object(kill-on-close):主进程一死,Host 与它 spawn 的普通子进程会被一起干掉。
  3. 所以重启器不能是普通子进程 —— 用 Win32_Process.Create 创建,父进程是 WmiPrvSE.exe,既不在 job 里,也不会被 taskkill /T 顺着父链带走。

时序:

前端 POST /restart
  → 宿主 launch-restarter.ps1(WMI create,拿回重启器 PID)
  → 立即返回 { ok, restarterPid, delayMs }(前端进入倒计时)
  → 重启器睡 delayMs(默认 2500ms,让响应先落地)
  → 校验进程名是 DeepSeek*,taskkill /PID <主进程> /F(只杀主进程,不带 /T)
  → 等宿主 PID 消失(最多 10s),还活着才 taskkill /T /F
  → 等主进程消失 → Start-Process <exe>(失败退回 cmd start)

坑(都踩过):

  • Win32_Process.Create 的 CommandLine 第一个 token 必须是可执行文件,否则返回 9(path not found)
  • Split-Path -LiteralPath X -Parent 在 PowerShell 5.1 里是冲突参数集,返回 $null,会让 Start-Process -WorkingDirectory 报参数绑定错误 —— 用 [System.IO.Path]::GetDirectoryName()
  • 主进程那一步不能带 /T,否则把还没起作用的进程树一起带走
  • PowerShell 脚本保持纯 ASCII:cmd/PS 按 ANSI 读,中文会变成乱码命令;日志用 -Encoding UTF8 写(配 tailLog 去 BOM)

安装(desktop profile)

桌面版自带一套 dsh CLI,插件装进桌面版的 desktop profile:

# <安装目录> 里应是 DeepSeek Harness.exe
<安装目录>/resources/runtime/cli/bin/dsh.cmd plugin --profile desktop add "link:<本仓库的绝对路径>"

装完 HMR 通常会当场把插件载入(不用重启)。没载入就点一次「重载刷新」,或手动重启。

也可以用 git 依赖的方式装:add "https://github.com/kuroshio4396/dsh-reloader.git"。

自检

node selfcheck.mjs

13 项:包字段、client 模块 id、cordis patch、/api 前缀、PowerShell 纯 ASCII、restart.ps1 不许对主进程用 /T……