给桌面端托盘和应用菜单加上一键重启项
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add hxh230802/dsh-tray-restart该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · desktop
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 8 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 22 处,展示前 15 条)
- 写入本地文件lib/index.js:76
mkdirSync(path.dirname(file), { recursive: true }) - 写入本地文件lib/index.js:77
appendFileSync(file, `${new Date().toISOString()} [${level}] ${message}\n`, 'utf8') - 写入本地文件lib/index.js:100
mkdirSync(dir, { recursive: true }) - 写入本地文件lib/index.js:101
writeFileSync( - 读取本地文件lib/index.js:124
return existsSync(explicit) ? explicit : undefined - 读取本地文件lib/index.js:128
return existsSync(candidate) ? candidate : undefined - 读取本地文件lib/index.js:142
return JSON.parse(readFileSync(path.join(backupDir(), 'manifest.json'), 'utf8')) - 读取本地文件lib/index.js:161
hold: existsSync(holdFile()), - 写入本地文件lib/index.js:199
mkdirSync(path.dirname(file), { recursive: true }) - 写入本地文件lib/index.js:200
writeFileSync(file, source, 'utf8') - 读取本地文件lib/index.js:213
if (existsSync(bundled)) candidates.push({ command: bundled, args: ['--check', file], env: process.env }) - 执行外部命令来自配置/变量lib/index.js:223
const result = spawnSync(candidate.command, candidate.args, { - 读取本地文件lib/index.js:311
if (!options.manual && existsSync(holdFile())) { - 删除本地文件lib/index.js:357
rmSync(holdFile(), { force: true }) - 发起网络请求lib/client.js:126
return fetch(ROUTE + path, {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
给 DeepSeek Harness 桌面托盘和应用菜单加上重启项,靠打补丁改 app.asar 实现。
README
由 DeepSeek 最新模型翻译生成dsh-tray-restart
把 「重启 DeepSeek Harness」 加到 DeepSeek Harness 桌面端现有的菜单里:
- 系统托盘右键菜单:打开 DeepSeek Harness / 重启 DeepSeek Harness / 退出 DeepSeek Harness
- 标题栏「应用」菜单(macOS 为菜单栏):生产构建也出现 重启 DeepSeek Harness(官方原本只在 development 构建里放重启项)
点它执行的是应用自己的 app.relaunch() + quitWithoutConfirmation():先走正常的退出流程(Host 关闭、任务收尾),再重新拉起应用。它和官方开发版里的重启项是同一套逻辑。
原理
桌面端的托盘和应用菜单由 Electron 主进程的 resources/app.asar → lib/main.js 创建。
展开完整文档(README 剩余 1 节)
dsh-tray-restart
把 「重启 DeepSeek Harness」 加到 DeepSeek Harness 桌面端现有的菜单里:
- 系统托盘右键菜单:打开 DeepSeek Harness / 重启 DeepSeek Harness / 退出 DeepSeek Harness
- 标题栏「应用」菜单(macOS 为菜单栏):生产构建也出现 重启 DeepSeek Harness(官方原本只在 development 构建里放重启项)
点它执行的是应用自己的 app.relaunch() + quitWithoutConfirmation():先走正常的退出流程(Host 关闭、任务收尾),再重新拉起应用。它和官方开发版里的重启项是同一套逻辑。
原理
桌面端的托盘和应用菜单由 Electron 主进程的 resources/app.asar → lib/main.js 创建。DSH 插件跑在 Host 子进程里,没有任何运行时接口能往这些原生菜单里加项,所以本插件在 Host 每次启动时直接给 lib/main.js 打一个等长补丁:
1. 找到 lib/main.js,检查是否已有 dsh-tray-restart:menu:v2 标记;
2. 没有则做两处文本替换,删掉同区域等长的注释、用空格补齐,保证字节长度完全不变(asar 里每个文件的 offset 是固定的,不能改长度);
3. 用真实的 Node 对补丁后的 ESM 跑 node --check,失败就完全不碰 app.asar;
4. 备份原始 main.js,原地写入,更新 asar header 里该文件的 SHA256,再读回校验;
5. 因为主进程已经加载了旧代码,重启一次 DSH 后新菜单才会出现。
应用更新会替换 app.asar;下次启动插件检测到标记消失,会自动重新打补丁。
插件页
插件管理器里打开 dsh-tray-restart 会看到一个配置卡片,显示:
- 补丁状态、桌面端版本、补丁版本;
- app.asar、备份目录、日志路径;
- 「重新检查」「立即打补丁」「还原原始菜单」三个操作。
点「还原原始菜单」会把备份写回 app.asar,并暂停自动补丁(避免下次启动又打上);再点「立即打补丁」即可恢复。补丁写入后仍然需要重启一次 DSH 才生效。
安装
在 DSH 的插件管理器里安装 npm 包:
@hxhxh/dsh-tray-restart
或从 GitHub 安装:
github:hxh230802/dsh-tray-restart
plugin_manager 工具的 npm 目标:
{ "action": "install_bundle", "target": "@hxhxh/dsh-tray-restart" }
安装后如果 Host 已经热加载了插件,app.asar 会立刻被补上,但菜单要重启一次才更新。也可以手动落盘:
node scripts/apply.mjs
还原
原始 lib/main.js 备份在:
%USERPROFILE%\.dsh\dsh-tray-restart\backup\main.original.js
%USERPROFILE%\.dsh\dsh-tray-restart\backup\manifest.json
还原(会先确认当前 main.js 仍是插件写入的那一版):
node scripts/restore.mjs
如果应用更新过,脚本会拒绝还原,避免把旧文件覆盖到新版本上。
极端情况下(asar header 被写坏、常规 restore 无法解析),用原始 header 备份直接回写:
node scripts/emergency-restore.mjs
配置
profile patch 里按 id dsh-tray-restart 覆盖:
- id: dsh-tray-restart
config:
enabled: true # false = 不加载、不检查补丁 dryRun: false # true = 只生成补丁并做语法校验,不写 app.asar verifySyntax: true # 写入前跑 node --check asarPath: '' # 仅调试/非标准安装时显式指定 app.asar
状态与日志
%USERPROFILE%\.dsh\dsh-tray-restart\status.json
%USERPROFILE%\.dsh\logs\dsh-tray-restart.log
status.json 的 state 可能是 patched、already-patched、dry-run、failed、skipped。
注意
- 补丁只匹配当前桌面端版本的 main.js 文案(0.2.0-rc.2 验证通过)。应用大版本更新后如果锚点对不上,插件会记录 unsupported 并保持 app.asar 原样,不会把应用弄坏。
- 这是对已安装应用文件的修改,不是官方 API;写入前有语法校验和备份。若应用无法启动,运行 node scripts/restore.mjs 还原即可。
- 「重启」会中断正在运行的任务;它没有额外的二次确认,和官方开发版菜单一致。
- 仅 Windows 桌面端需要打补丁;dsh web / 开发模式会跳过。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
hxh230802/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
这是你的仓库?认领条目