前言¶
DeepSeek Harness(DSH)桌面端在系统托盘提供右键菜单,默认常见只有「打开」与「退出」。改插件、换配置或长时间运行后想完整重载进程时,往往只能先退出再重新点开托盘图标。社区插件 dsh-tray-restart(npm 包名 @aaayeaaa-p1ws/dsh-tray-restart)在托盘菜单里多插入一条「重启 DeepSeek Harness」,走 Electron 主进程自带的 app.relaunch() 与静默退出路径,效果等价于手动关掉再开,但不必反复找图标。下面按定位、安装、用法与实现要点说明。
这是什么¶
- 维护者:aaayeaaa-P1WS
- 分类:客户端(仅作用于 DSH Windows 桌面端)
- 一句话:给桌面托盘右键菜单增加「重启 DeepSeek Harness」,在「打开」与「退出」之间显示。
- 许可证:MIT(见仓库
package.json与 README)
DSH 插件跑在 Host 子进程,拿不到 Electron 的 Menu/Tray,主进程 IPC 也没有「动态加菜单项」的协议。本插件因此在 asar 归档层面对 resources/app.asar 内的 lib/main.js 做等长文本补丁,而不是在运行时挂菜单 API。
核心功能¶
装妥并重启 DSH 后,托盘菜单大致变为:
打开 DeepSeek Harness
重启 DeepSeek Harness ← 新增
─────────────
退出 DeepSeek Harness
点击「重启」会调用主进程逻辑:app.relaunch() 配合 quitWithoutConfirmation(),进程退出后按 relaunch 路径再起,与手动重开一致。
插件还提供工具 tray_restart_status:
| 参数 | 作用 |
|---|---|
| (无) | 查看补丁状态、asar 路径、main.js 大小、备份位置 |
apply: true |
立即检查并打补丁(幂等) |
restore: true |
用备份还原原始菜单 |
运行日志写在 ~/.dsh/tray-restart/log.ndjson。首次打补丁前会将原始 main.js 备份到 ~/.dsh/tray-restart/main.js.orig。
版本与引擎(资料原文):当前包版本 1.0.1;dsh.engines.dsh 要求 >=0.2.2-rc.1;补丁锚点按 0.2.2-rc.1 的 lib/main.js 形状编写。桌面端自动更新会覆盖 app.asar,插件在每次启动时会检查并在缺失补丁时自动补回。
安装与启用¶
托盘菜单在 DSH 启动时一次性构建,安装插件后必须再重启一次 DSH,新菜单项才会出现;之后每次启动会自动尝试补丁。
插件市场(README 推荐):在 DSH「插件市场」搜索 tray-restart,安装,然后重启 DSH。
命令行:
dsh plugin add @aaayeaaa-p1ws/dsh-tray-restart
尚未发版时也可从 GitHub 安装:
dsh plugin add github:aaayeaaa-P1WS/dsh-tray-restart
本地开发可用 link(示例路径按本机修改):
// ~/.dsh/profiles/desktop/package.json
"dependencies": { "@aaayeaaa-p1ws/dsh-tray-restart": "link:C:/path/to/dsh-tray-restart" }
装完后重启 DSH,右键托盘图标应能看到「重启 DeepSeek Harness」。
典型用法¶
- 按上一节完成安装并重启 DSH。
- 右键托盘图标,点「重启 DeepSeek Harness」完成一次完整重载。
- 桌面端升级后若菜单恢复为两项 only,可调用
tray_restart_status并传apply: true立刻补补丁;需要撤销时可传restore: true或手动用备份写回。
工作原理(简要)¶
主进程模板中原有「打开 / 分隔线 / 退出」。插件在 Host 侧:
- 读取 asar 头,定位
/lib/main.js字节区间; - 将
//#region lib/types/tray.js整段等长替换,在「打开」与「退出」之间插入重启项,标签为"重启 " + messages.aboutProduct(随产品与界面语言,不写死中文); - 用空格补齐使字节数与原段完全一致,保证 asar 头 offset/size 仍有效;
fsync后回读比对,不一致则报错并保留备份。
README 强调:找不到 quitWithoutConfirmation() 或代码形状因应用升级变化时,不会乱改,只记日志(anchor-mismatch),需维护者适配后再发版。
适用场景与注意¶
适合:常驻 Windows 桌面端、频繁试插件或希望一键重载而不退出再点的用户。
限制(资料原文):
- 仅 Windows 桌面端;Web / macOS / Linux 无对应托盘代码,插件会自动跳过,不影响启动。
- 依赖当前 DSH 桌面版本中
main.js锚点;不匹配时不补丁。 - 插件以 当前 dsh 进程权限 读写
app.asar;安装前宜自行查看 GitHub 仓库 源码与 MIT 许可证,确认是否接受对安装目录内 asar 的修改与备份策略。
DSH 生态主张「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系,本文仅介绍该社区插件能力,不视为官方应用商店条目。
结尾¶
dsh-tray-restart 用等长 asar 补丁在 Windows 桌面托盘补上「重启」入口,并在升级后自动尝试补回;安装后记得重启一次 DSH。目录与源码:
- 目录页:https://www.skillhub.cn/plugins/aaayeaaa-P1WS/dsh-tray-restart
- GitHub:https://github.com/aaayeaaa-P1WS/dsh-tray-restart