在侧栏一键刷新界面或重启桌面应用
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add MoonSand/dsh-desktop-restart该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · browser
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 12 处,展示前 12 条)
- 读取本地文件index.js:176
const profile = process.env.DSH_PROFILE_DIR ?? (existsSync(join(cwd, 'pnpm-lock.yaml')) ? cwd : undefined) - 读取本地文件index.js:181
if (now - statSync(manifest).mtimeMs < INSTALL_WINDOW_MS) return true - 执行外部命令来自配置/变量index.js:387
child = spawn(systemPowerShellPath(), ['-NoProfile', '-NonInteractive', '-Command', query], { - 执行外部命令固定命令index.js:572
const helper = spawn( - 写入本地文件index.js:610
writeFileSync(WATCHDOG_PS1_PATH, watchdogSource(executable, HELPER_LOG_PATH, WATCHDOG_MARKER_PATH, mode), 'ascii') - 写入本地文件index.js:611
writeFileSync(WATCHDOG_LAUNCHER_PATH, watchdogLauncherSource(systemPowerShellPath(), WATCHDOG_PS1_PATH), 'ascii') - 读取本地文件index.js:623
if (existsSync(ARM_STATUS_PATH)) { - 读取本地文件index.js:627
return JSON.parse(readFileSync(ARM_STATUS_PATH, 'utf8').replace(/^ FEFF/, '')) - 删除本地文件index.js:675
rmSync(ARM_STATUS_PATH, { force: true }) - 读取本地文件index.js:706
if (!existsSync(executable)) { - 发起网络请求client.js:199
const response = await fetch('/desktop-restart/status', { - 发起网络请求client.js:220
const response = await fetch('/desktop-restart/restart', {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
侧边栏底部的「重新加载界面」和「重启应用」按钮,用于 DeepSeek Harness 桌面应用(Windows)。
README
由 DeepSeek 最新模型翻译生成dsh-desktop-restart
给 DeepSeek Harness 桌面端侧栏底部加两个按钮:刷新界面,或重启整个应用(应用 + Host)。
正式发布的桌面壳既没有「刷新页面」菜单,也没有内置快捷键,更没有重新拉起自己的入口 —— app.relaunch() 在 Electron 主进程里,只接到崩溃恢复。本插件把这两件事做成普通侧栏动作。
[⟲ 刷新界面] [↻ 重启应用]
| 按钮 | 作用 |
| 刷新界面 | location.reload()。重载页面与全部客户端插件;Host 继续运行,正在跑的回合不中断。 |
| 重启应用 | 请求 Host 结束该可执行文件的全部进程,再从同一路径拉起。需二次确认;有 Agent 回合在跑时标签变红提示。 |
环境要求
- 仅 Windows。重启链路建立在 Windows 计划任务与 Windows Script Host 之上。
- DeepSeek Harness 桌面端 0.2.1-rc.2 或更高(已在 engines.dsh 声明;实测 0.2.1-rc.3),Node >=20。
- 无 npm 依赖。index.js 只用 Node 内置模块;client.js 只用外壳提供的 react。
展开完整文档(README 剩余 1 节)
dsh-desktop-restart
给 DeepSeek Harness 桌面端侧栏底部加两个按钮:刷新界面,或重启整个应用(应用 + Host)。
正式发布的桌面壳既没有「刷新页面」菜单,也没有内置快捷键,更没有重新拉起自己的入口 —— app.relaunch() 在 Electron 主进程里,只接到崩溃恢复。本插件把这两件事做成普通侧栏动作。
[⟲ 刷新界面] [↻ 重启应用]
| 按钮 | 作用 |
| 刷新界面 | location.reload()。重载页面与全部客户端插件;Host 继续运行,正在跑的回合不中断。 |
| 重启应用 | 请求 Host 结束该可执行文件的全部进程,再从同一路径拉起。需二次确认;有 Agent 回合在跑时标签变红提示。 |
环境要求
- 仅 Windows。重启链路建立在 Windows 计划任务与 Windows Script Host 之上。
- DeepSeek Harness 桌面端 0.2.1-rc.2 或更高(已在 engines.dsh 声明;实测 0.2.1-rc.3),Node >=20。
- 无 npm 依赖。index.js 只用 Node 内置模块;client.js 只用外壳提供的 react。
安装
从 npm 安装:
pnpm add @moonsand/dsh-desktop-restart
或者从本地目录安装(开发时):
"dependencies": { "@moonsand/dsh-desktop-restart": "link:D:/path/to/dsh-desktop-restart" }
pnpm install
无论哪种方式,都必须把包名登记进 bundle —— 这一条才真正决定加载:
"dsh": { "profile": { "bundles": [ ..., "@moonsand/dsh-desktop-restart" ] } }
只装进 dependencies 而不进 dsh.profile.bundles,插件会静默不加载:不报错、也不出按钮。加好 bundle 条目后重启应用。
包自带 cordis.patch.yml 用于插入 Host 侧服务,所以不必改 profile 的补丁层。反过来说:不要在 profile 的 cordis.patch.yml 里再写一份本插件的 insert —— 那会让同一份客户端 bundle 被加载两次,抛 duplicate factory registration 并挡住启动。
插件市场索引(自托管)
仓库里的 market/index.json 是格式 1 的插件市场索引,由 DSH 自带的 @deepseek-ai/dsh-plugin-market-index 校验。想在本机「插件页 → 发现」里看到本插件:
1. 把仓库推到 GitHub,索引地址即 https://raw.githubusercontent.com/MoonSand/dsh-desktop-restart/main/market/index.json(也可以走 GitHub Pages)。
2. 插件页 → 发现 → 添加索引源,粘贴该 https 地址。索引源只接受 http: / https:,且不能带凭据或片段。
3. 卡片会显示中英双语的标题与描述(索引里的 description 是 { "en": …, "zh": … } 对象,必须含 en,只写中文会被校验器拒绝),安装使用 npm 上的精确版本。
每个版本条目都带 engines.dsh 且与 package.json 一致——发现页的兼容性与「默认版本」按它计算;没有兼容版本的插件,安装按钮是禁用的。新增版本时追加一条 versions:version、真实发布时间的 Unix 秒 publishTimestamp、source.type: "npm"。
重启是怎么实现的
三条平台事实决定了这个设计,均在本机实测:
1. detached 的 powershell.exe 起得来,但 -EncodedCommand 里的脚本一句都不执行,且不报错。所以帮手以普通子进程启动。
2. Host 启动的所有进程都继承 Chromium 的 job object(kill-on-close),宿主主进程一死,它 spawn 的东西全部陪葬。"先杀后拉"的帮手会死在这两步之间。
3. 计划任务服务在自己的进程里解析启动项,位于那个 job 之外 —— 这是唯一能把东西留在杀进程之后继续跑的通道。
所以顺序是反过来的:
客户端点击 -> POST /desktop-restart/restart -> Host 写 watchdog.ps1 + launch.vbs,spawn 帮手(powershell -EncodedCommand,不 detached) -> 帮手建一次性计划任务:wscript.exe launch.vbs(GUI 子系统,不建控制台) -> launch.vbs 以 window style 0 隐藏启动 watchdog.ps1 -> 帮手轮询 marker 文件(≤ 5 秒)确认看门狗活着 -> 拿不到证据就中止,一个进程都不杀 -> 帮手退出 —— 它住在 job 里,绝不能自己动手杀 -> 看门狗(在 job 之外):睡 1.2 秒 -> 杀掉该可执行文件的全部进程 -> 等全部消失 -> 睡 0.6 秒 -> Start-Process 同一路径 -> 回验是否起来了(最多 3 次,每次间隔 6 秒)-> 追加日志
HTTP 路由
| 路由 | 用途 |
| GET /desktop-restart/status | 返回 { desktop, restarting, activeAgents, logPath } |
| POST /desktop-restart/restart | 需要请求头 x-dsh-desktop-restart: 1(或桌面代理形态:回环对端、无 Host/Origin 头) |
| POST /desktop-restart/diagnose | 以 probe 模式武装看门狗并回报 { armed, method }。不杀任何进程,用来验证链路是否完好。 |
文件职责
| 文件 | 职责 |
| index.js | Host 半边:路由、helper/watchdog 生成、武装、杀进程与拉起 |
| client.js | Client 半边:两个侧栏动作、样式、中英文字典、确认状态机 |
| cordis.patch.yml | 把 Host 侧服务插入 profile |
| package.json | 声明两半(dsh.bundle.patch + dsh.client) |
| locale/*.json | 插件页显示名与描述 |
| icon.svg | 侧栏图标 |
因为声明了 Host 半边,Host 改动必须重启应用;纯客户端改动只需刷新页面。
已知限制
- 重启是硬杀(TerminateProcess),正在进行的回合会中断。会话历史与已落盘内容不受影响。
- 包管理器正在往 profile 里装东西时拒绝重启(409 installing)。三路信号都查:①插件管理器自己广播的 plugin-manager/install-state(installing / cancelling / applying)——这条最权威,但它不发“完成”事件,所以相位十分钟后自动过期;②lockfile 或 node_modules/.modules.yaml 在最近 10 秒内被写过,抓的是安装刚结束那一刻(lockfile 是最后才写的);③兜底是有命令行里带 pnpm 的 node 进程在跑。10 秒这个窗口故意留得短:已经装完的安装不该继续挡住重启。三路都是尽力而为,判不出来就放行。
- 只支持 Windows 桌面端。在普通 dsh web 下路由回 409 not-desktop,按钮退化为刷新页面。
- 计划任务通道被策略禁用时,帮手会退化为直接启动 PowerShell,可能闪一下控制台窗口;日志标记 (direct powershell)。
- 没有键盘快捷键。桌面端会把快捷键组合交给可信原生桥、在页面处理器之前拦截,页面级监听看不到;改走产品快捷键服务又会引入本插件并不需要的依赖。
- 进程检测不用 tasklist.exe:实测该上下文下它返回 Access denied(退出码 1),若拿它判断存活,每次轮询都会报告"应用已消失",进而拉起多份应用。改为先按镜像名过滤(Get-Process -Name)再校验 .Path。
开发
npm test # 冒烟:生成器、安装保护、两个侧栏动作、PS 5.1 解析
node --check index.js
node --check client.js
三个脚本生成函数已导出为纯函数,可以在不武装任何任务的前提下生成脚本、交给 Windows PowerShell 解析器校验:
import { watchdogSource, watchdogLauncherSource, restartHelperScript } from '@moonsand/dsh-desktop-restart'
不碰真实应用的全链路干跑:用不存在的可执行路径生成 watchdog,powershell -File 跑,观察日志依次走 matched pids: -> application gone=True -> relaunch issued -> watchdog end。
日志
helper 与看门狗做的一切都追加到 %TEMP%\dsh-desktop-restart.log。重启行为异常时先看这里;GET /status 会回报确切路径。
许可证
MIT,见 LICENSE。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
MoonSand/dsh-desktop-restart
在侧栏一键刷新界面或重启桌面应用
相关插件 · 浏览器
智能体插件框架deepseek-ai/deepseek-harness
DeepSeek Harnessdsh是由 DeepSeek AI 开发的开源 agent harness智能体框架。
★ 270,422已汉化DSH
71.9
多设备 Agent 看板YaoApp/yao
✨ 所有 Agent 和工作区集中管理,覆盖你的每一台设备。任务看板追踪进度,桌面端、移动端、浏览器、API…
★ 8,147已汉化DSH
71.2
可扩展侧边栏工作台omdsh-dev/DSH-better-sidebar
DSH 的双工作台:原生右侧栏 + 自绘底部面板,并把 ctx.betterSidebar 服务开放给所有插件
★ 4,761已汉化DSH
71.1
浏览器自动化桥Tencent/BrowserSkill
你的 Agent。你的浏览器。连接,就能协作。
★ 9,967已汉化DSH
71
AI 小说创作工作台EthanYoQ/AI-Novel-Writer
AI 小说作家 / AI Novel Writer
★ 1,591已汉化DSH
70.7
智能体浏览器引擎platonai/Browser4
DeepSeek Harness 集成
★ 1,175已汉化DSH
70.4
这是你的仓库?认领条目