在系统托盘右键菜单里重启应用、刷新页面或彻底退出
29.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add QIRSHENG/dsh-tray-restart该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · desktop
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 18 处,展示前 16 条)
- 写入本地文件index.js:69
mkdirSync(STATE_DIR, { recursive: true }) - 写入本地文件index.js:70
writeFileSync(join(STATE_DIR, 'status.json'), `${JSON.stringify({ at: new Date().toISOString(), ...payload }, null, 2)}\n`) - 执行外部命令来自配置/变量index.js:88
child = spawn(process.execPath, args, { - 写入本地文件index.js:140
mkdirSync(STATE_DIR, { recursive: true }) - 读取本地文件index.js:141
const source = readFileSync(join(PACKAGE_ROOT, 'quit-all.ps1'), 'utf8') - 写入本地文件index.js:142
writeFileSync(join(STATE_DIR, 'quit-all.ps1'), source) - 读取本地文件lib/patcher.mjs:122
if (typeof explicit === 'string' && explicit.length > 0 && existsSync(explicit)) return explicit - 读取本地文件lib/patcher.mjs:124
if (typeof fromEnv === 'string' && fromEnv.length > 0 && existsSync(fromEnv)) return fromEnv - 读取本地文件lib/patcher.mjs:128
if (existsSync(candidate)) return candidate - 写入本地文件lib/patcher.mjs:361
mkdirSync(directory, { recursive: true }) - 读取本地文件lib/patcher.mjs:365
if (existsSync(path) && existsSync(metaPath)) { - 读取本地文件lib/patcher.mjs:367
const meta = JSON.parse(readFileSync(metaPath, 'utf8')) - 写入本地文件lib/patcher.mjs:374
writeFileSync(temp, bytes) - 写入本地文件lib/patcher.mjs:375
renameSync(temp, path) - 写入本地文件lib/patcher.mjs:376
writeFileSync(metaPath, `${JSON.stringify({ size, sha256: digest }, null, 2)}\n`) - 读取本地文件lib/patcher.mjs:384
if (!existsSync(path) || !existsSync(metaPath)) return undefined
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
给 DeepSeek Harness 桌面版的系统托盘菜单加上「重启」项,并在每次应用更新后重新打上补丁。
README
由 DeepSeek 最新模型翻译生成dsh-tray-restart
给 DeepSeek Harness 官方桌面端 的 Windows 系统托盘(任务栏通知区)右键菜单加三项: 「重启应用与 Host」、「刷新页面」(刷新前端)和 「彻底退出 Harness」(结束所有 Harness 进程),并在桌面端每次自动更新覆盖 app.asar 之后自动重打补丁。
效果
托盘菜单从:
打开 DeepSeek Harness ──────────── 退出 DeepSeek Harness
变成:
打开 DeepSeek Harness 重启应用与 Host ← 新增刷新页面 ← 新增(刷新前端,Host 不重启) ──────────── 彻底退出 Harness ← 新增(结束所有 Harness 进程)退出 DeepSeek Harness
* 重启应用与 Host:执行 app.relaunch(); quitWithoutConfirmation(),与官方开发版应用菜单里的同名项一致——干净退出 Host、重启整个应用,不弹「任务仍在运行」的确认框。
* 刷新页面:对主窗口执行 webContents.reload(),等价于前台按 Ctrl+R。只重载前端页面, Host、会话和正在跑的任务都不受影响;前端改坏了、白屏或要重新加载界面时用。
展开完整文档(README 剩余 1 节)
dsh-tray-restart 给 DeepSeek Harness 官方桌面端 的 Windows 系统托盘(任务栏通知区)右键菜单加三项: 「重启应用与 Host」、「刷新页面」(刷新前端)和 「彻底退出 Harness」(结束所有 Harness 进程),并在桌面端每次自动更新覆盖 app.asar 之后自动重打补丁。 效果 托盘菜单从: 打开 DeepSeek Harness ──────────── 退出 DeepSeek Harness 变成: 打开 DeepSeek Harness 重启应用与 Host ← 新增刷新页面 ← 新增(刷新前端,Host 不重启) ──────────── 彻底退出 Harness ← 新增(结束所有 Harness 进程)退出 DeepSeek Harness * 重启应用与 Host:执行 app.relaunch(); quitWithoutConfirmation(),与官方开发版应用菜单里的同名项一致——干净退出 Host、重启整个应用,不弹「任务仍在运行」的确认框。 * 刷新页面:对主窗口执行 webContents.reload(),等价于前台按 Ctrl+R。只重载前端页面, Host、会话和正在跑的任务都不受影响;前端改坏了、白屏或要重新加载界面时用。 * 彻底退出 Harness:先正常请求退出,同时启动一个脱离应用进程的 PowerShell 清理脚本(%USERPROFILE%\.dsh\dsh-tray-restart\quit-all.ps1,插件启动时写入)。脚本等待约 1.2 秒后强制结束所有匹配的进程:桌面端 Electron 全部进程、dsh-desktop-host、%LOCALAPPDATA%\Programs\DeepSeek Harness\ 下的运行时、.dsh\profiles 启动的子进程、rea / Windows-MCP / GitHub-MCP 以及 @dsh-ops 启动的 shell。 前两项复用官方已有的本地化文案(messages.restartAppHostMenu / messages.reloadPageMenu),中英文随系统语言切换。 安装 需要 DSH 桌面端 0.2.x(Windows)。已在 @deepseek-ai/dsh-desktop 0.2.1-rc.2 + Windows 11 + Node 24 上验证。 方式一:插件管理器(桌面端推荐) 1. 把本仓库克隆到任意目录: git clone https://github.com/QIRSHENG/dsh-tray-restart.git 2. 打开 DeepSeek Harness → 设置 → 插件,选择「从本地目录安装」,指向克隆下来的 dsh-tray-restart 目录(就是含 package.json 的那一层)。 3. 安装完成后 完全退出并重新打开 DeepSeek Harness。 桌面端 profile 由 Electron 应用独占管理,dsh plugin --profile desktop ... 会被拒绝,所以桌面端请走插件管理器(或由智能体调用 plugin_manager 的 install_bundle)。 方式二:命令行(非桌面端独占的 profile) dsh plugin --profile <profile> add github:QIRSHENG/dsh-tray-restart 或本地目录 dsh plugin --profile <profile> add C:\path\to\dsh-tray-restart 安装完成后 完全退出并重新打开 DeepSeek Harness。桌面端主进程代码只在启动时加载,所以托盘菜单会在下一次启动时出现。 安装后如果托盘还没变,先退出应用(托盘 → 退出),在 PowerShell 里运行一次 node lib/patcher.mjs status 确认 status: "patched",再启动应用。 为什么需要改 app.asar DSH 插件跑在 Host 子进程里(Cordis),而系统托盘属于 Electron 主进程。官方没有暴露托盘 / Electron 主进程的扩展点,所以插件只能给 resources/app.asar 里的 /lib/main.js 打一个最小补丁。 补丁的设计约束: * 等长改写:托盘菜单模板被压紧,插入两项后用尾部空白补齐,/lib/main.js 的字节数完全不变 → asar 头里其它文件的 offset 全部保持有效。 * 只改托盘这一处:仅 DesktopTray.relabel() 的 tray.setContextMenu(...) 模板;为腾出字节会同时压缩两段纯注释(不改变任何行为)。锚点不唯一、结构不认识或长度会变大时 拒绝写入。 * 可升级旧补丁:1.0.x 只加了重启项;1.1.0 会把旧补丁原地升级成「重启 + 刷新」两项。 * 同步完整性摘要:同时刷新 asar 目录里 /lib/main.js 的 SHA-256(等长 hex),即使 EnableEmbeddedAsarIntegrityValidation 被打开也不会失配。 * 可回滚:首次写入前,先把原始 /lib/main.js 保存到 %USERPROFILE%\.dsh\dsh-tray-restart\main.original.js,restore 命令可原样写回。 * 幂等:已经是补丁状态时只做只读检查。 插件在每次 Host 启动约 2 秒后运行一次检查,因此桌面端自动更新把 app.asar 换回官方版本后,下一次启动会自动重打补丁(那一次启动看到的还是旧菜单,再启动一次即可)。 更新后的第一次启动只负责重打补丁;托盘菜单在下一次启动才出现。 手动命令 / Manual CLI 任何 Node.js ≥ 20 都可以直接运行补丁器(不需要安装插件): node lib/patcher.mjs status # 只读检查 node lib/patcher.mjs apply # 需要时打补丁(幂等) node lib/patcher.mjs apply --dry-run # 只检查能否安全打补丁 node lib/patcher.mjs restore # 写回安装前的原始 main.js 加 --json 输出机器可读结果,加 --asar <path> 指定别的 app.asar。 默认路径:%LOCALAPPDATA%\Programs\DeepSeek Harness\resources\app.asar;也可用环境变量 DSH_DESKTOP_APP_ASAR 覆盖。 每次运行的记录在 %USERPROFILE%\.dsh\dsh-tray-restart\status.json。 卸载 / Uninstall 1. 先还原托盘菜单 node lib/patcher.mjs restore 2. 移除插件(桌面端:在插件管理器里移除;其它 profile 用 CLI) dsh plugin --profile <profile> remove dsh-tray-restart 如果 restore 报 size-mismatch(桌面端版本已经变化),直接重新安装官方桌面端即可。 安全边界 / Safety * 只支持 官方 Windows 桌面端(打包的 Electron 应用);开发模式、dsh web、 dsh --profile headless 没有系统托盘,插件会安全跳过。 * 只改写 /lib/main.js 中一段已知的托盘菜单模板;任何结构变化都会让补丁失败而不是写坏文件。 * 不改注册表、不加启动项、不联网。 * 桌面端升级后若补丁失败,菜单只是保持官方原样,不会影响应用启动。 * 如果应用因任何原因无法启动,先 node lib/patcher.mjs restore;仍不行则重装桌面端。 已知限制 / Limitations * 需要重启应用才能看到菜单(主进程代码只在启动时读取)。 * 官方桌面端更新后需要启动两次:第一次重打补丁,第二次显示菜单。 * 与其它直接修改 app.asar 的工具可能冲突;发现 status: "unsupported" 时不要强行写入。 * 非 Windows 平台不支持(macOS 的菜单栏与 Linux 的托盘实现不同)。 文件结构 / Layout index.js Cordis Host 插件:每次 Host 启动检查/重打补丁 lib/patcher.mjs 等长改写补丁器 + CLI(status / apply / restore) cordis.patch.yml bundle patch:插入插件行 locale/*.json 插件管理器展示文案 icon.svg 插件图标 开发 / Development node --check index.js node --test test/patcher.test.mjs # 用合成 asar 验证打补丁/还原 node lib/patcher.mjs apply --dry-run --json 补丁器是纯 ESM、零依赖;只使用 node:fs、node:crypto、node:path。 License MIT License © 2026 QIRSHENG
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
QIRSHENG/dsh-tray-restart
在系统托盘右键菜单里重启应用、刷新页面或彻底退出
相关插件 · 桌面端
Codex 任务面板chuspeeism/dashi-taskboard
现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
★ 3,409已汉化DSH
71.7
多智能体自进化开发平台Prism-Shadow/penguin-harness
统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark
★ 3,111已汉化DSH
71.1
桌面宠物PC2005-cloud/dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI…
★ 5,341已汉化DSH
71
多端 Agent 工作台GCWing/OpenBitFun
OpenBitFun 是一个高度可定制的开源 Agent 工作台,让任务按你的方式持续推进。
★ 3,449已汉化DSH
70.8
DSH Desktopanywhere-labs/dsh-desktop
为 DeepSeek Harness DSH 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34,532已汉化DSH
70.7
桌面宠物伴侣OpenPetsHQ/openpets
桌面伴侣平台,带宠物、插件,还能选配本地智能体集成。
★ 1,353已汉化DSH
70.2
这是你的仓库?认领条目