不关程序刷新插件与界面,或一键彻底重启应用
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add kuroshio4396/dsh-reloader该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · desktop
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 19 处,展示前 18 条)
- 执行外部命令固定命令index.js:213
try { spawn('explorer.exe', ['/select,', file], { detached: true, stdio: 'ignore' }).unref() } catch { } - 发起网络请求client.js:24
const r = await fetch(`${b}/ping`, { credentials: 'same-origin', signal: AbortSignal.timeout(2500) }) - 发起网络请求client.js:48
const res = await fetch(base + p, { credentials: 'same-origin', ...opts, signal: ctl.signal }) - 执行外部命令固定命令lib/proc.mjs:46
const child = spawn('powershell.exe', ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', ...args], { - 写入本地文件lib/state.mjs:24
mkdirSync(dir, { recursive: true }) - 读取本地文件lib/state.mjs:35
if (existsSync(file) && statSync(file).size > MAX_LOG_BYTES) renameSync(file, file + '.1') - 读取本地文件lib/state.mjs:35
if (existsSync(file) && statSync(file).size > MAX_LOG_BYTES) renameSync(file, file + '.1') - 写入本地文件lib/state.mjs:35
if (existsSync(file) && statSync(file).size > MAX_LOG_BYTES) renameSync(file, file + '.1') - 写入本地文件lib/state.mjs:38
appendFileSync(file, `[${new Date().toISOString()}] ${line}\n`, 'utf8') - 读取本地文件lib/state.mjs:45
const text = readFileSync(logFile(dir), 'utf8').replace(/^ FEFF/, '') - 读取本地文件lib/state.mjs:52
const v = JSON.parse(readFileSync(stateFile(dir), 'utf8')) - 写入本地文件lib/state.mjs:58
try { writeFileSync(stateFile(dir), JSON.stringify(state, null, 2), 'utf8') } catch { } - 读取本地文件selfcheck.mjs:38
if (!existsSync(p)) throw new Error(`缺文件:${p}`) - 读取本地文件selfcheck.mjs:39
return readFileSync(p, 'utf8') - 读取本地文件selfcheck.mjs:54
if (!existsSync(p)) throw new Error(`main 不存在:${pkg.main}`) - 读取本地文件selfcheck.mjs:61
if (!existsSync(join(ROOT, entry))) throw new Error(`客户端文件不存在:${entry}`) - 读取本地文件selfcheck.mjs:68
if (!existsSync(join(ROOT, patch))) throw new Error(`patch 文件不存在:${patch}`) - 读取本地文件selfcheck.mjs:113
if (!existsSync(join(ROOT, rel))) throw new Error(`缺 ${rel}`)
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 桌面版插件:不关程序热重载插件与界面(类似 Ctrl+F5),或彻底结束程序并由独立重启器立即拉起。
README
由 DeepSeek 最新模型翻译生成dsh-reloader
给 DeepSeek Harness(DSH)桌面版用的一个小插件,只做两件事:
- 重载刷新 —— 不关程序。让宿主重新组合 profile(磁盘上改过的插件会被停掉、重新加载),然后刷新页面重新取数。代价:页面闪一下,设置面板会关掉。
- 自动重启 —— 彻底结束整个程序,再由一个独立的重启器立即把程序拉起来。代价:窗口消失约 5 秒,进行中的任务会中断。
入口:设置 → 重载与重启。
适用于打包版(Electron 桌面版)。源码模式跑 dsh web 时,「重载刷新」可用,「自动重启」会提示不支持。
为什么需要它
- 桌面版把窗口关闭当「隐藏到托盘」,before-quit 在有任务时还会弹确认框 —— 没有「礼貌退出」的程序入口。
- 插件装了 / 改了,DSH 默认要整个重启才生效;HMR 面世后可以只重载插件。
- 现在这两个动作都在设置页里,一键完成。
展开完整文档(README 剩余 1 节)
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……预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
kuroshio4396/dsh-reloader
不关程序刷新插件与界面,或一键彻底重启应用
相关插件 · 桌面端
Codex 任务面板chuspeeism/dashi-taskboard
现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
★ 3,409已汉化DSH
71.7
多智能体自进化开发平台Prism-Shadow/penguin-harness
统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark
★ 3,080已汉化DSH
71.1
桌面宠物PC2005-cloud/dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI…
★ 5,109已汉化DSH
71
多端 Agent 工作台GCWing/OpenBitFun
OpenBitFun 是一个高度可定制的开源 Agent 工作台,让任务按你的方式持续推进。
★ 3,425已汉化DSH
70.8
DSH Desktopanywhere-labs/dsh-desktop
为 DeepSeek Harness DSH 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34,279已汉化DSH
70.8
桌面宠物伴侣OpenPetsHQ/openpets
桌面伴侣平台,带宠物、插件,还能选配本地智能体集成。
★ 1,353已汉化DSH
70.2