DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

lux09947-cmyk /

lux09947-cmyk/dsh-re

Verified

Adds a refresh button to the DeepSeek Harness desktop title bar next to the Edit menu; reloads the UI without restarting the app.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@98caa604

dsh-re

在 DeepSeek Harness 桌面端的顶部标题栏、「编辑」右边加一个「↻ 刷新」按钮:点一下只重载界面,不重启应用、不断会话。

桌面端没有地址栏,也没有「刷新」菜单项——这是给它补上的那颗按钮。纯宿主插件,不需要 dsh.client,浏览器半边不参与。

安装

# 从 npm(发布后)
dsh plugin --profile desktop add dsh-re

# 或直接从 GitHub
dsh plugin --profile desktop add github:LUX09947-CMYK/dsh-re

装完重启一次应用(不是点刷新,见下面「为什么必须重启」):之后日常改 lib/ui.js 只需点一下刷新即可生效。

用法

  • 顶部标题栏「应用」「编辑」右边会出现 ↻ 刷新,样式与「应用 / 编辑」完全一致(同一个 shadow root 里的按钮)。
  • 点它 = 重新加载当前页面。对话、工作区、正在跑的会话都在宿主进程里,不受影响。
  • 拿不到标题栏菜单(例如在浏览器里跑 dsh web,或外壳菜单栏尚未出现)时,会退回右上角的浮动药丸:↻ 刷新 + ⇕(换角落)+ ✕(隐藏,写 localStorage)。

工作原理

  1. 宿主 lib/index.js 在 apply() 的第一件事就往 webserver/index-inject 表里推一行内联 script(kind: 'script'),内容是「建一个 <script src="/api/dsh-re/ui.js"> 并吞掉 onerror」。这里有三条硬约束,踩过才知道:

    • 桌面外壳的 index.html 从安装包静态 dist 读盘,ctx.webServer.tapIndex() 在桌面端完全不生效,结构化注入行是唯一通道;
    • 必须用内联 script 行而不是 script-src 行:后者要 await loadScript(src),失败就 reject __DSH_BOOT_READY__,整个应用起不来;
    • 因此 apply() 里不能写对象级 inject——那会把 apply() 推迟到服务就绪之后,订阅晚于那次收集,行永远进不了表。
  2. 页面 lib/ui.js(原生 DOM,零依赖)挂载:优先塞进外壳菜单栏 [data-windows-menu] 的 shadow root 里的 [role="menubar"],成为「编辑」后面的第三个按钮;菜单栏迟迟不出现时先等约 10 秒,再退回角落药丸。2 秒一次的看门狗会自愈重挂,且不会挂出第二颗。

  3. 自检:挂载成功后往 POST /api/dsh-re/ui-ping 回打一次(带 where=titlebar|corner、userAgent);GET /api/dsh-re/status 能免认证读到它——「按钮到底进没进桌面窗口」用这个判断,不用问人。

  4. 为什么「装完必须重启应用」、而「改 ui.js 只要刷新」:外壳启动宿主时把注入表存进一个模块级变量(injections = ready.injections,resources/app.asar/lib/main.js:11332),此后每次页面启动都由 ipcMain.handle(DESKTOP_IPC.boot, …) 回这份缓存(同文件 :11560)。点刷新只能拿回同一份旧表,所以换了提供这一行的插件就必须整个应用重启一次;而 ui.js 是页面按 URL 现取的(路由每次读盘 + no-store),改界面只要刷新。

宿主只注册三条 exact 路由:GET /api/dsh-re/ui.js(每次现读盘 + no-store,所以改完 ui.js 点刷新就生效)、GET /api/dsh-re/status、POST /api/dsh-re/ui-ping。

兼容

  • dsh.engines.dsh: >=0.2.0-rc.1。实测环境:DeepSeek Harness 桌面端 0.2.0-rc.2(Electron 44)。
  • 仅 Windows 桌面外壳有那条标题栏菜单栏;其它平台/浏览器形态自动走角落药丸,功能不受影响。

开发与自测

node --check lib/index.js
node --check lib/ui.js
node tools/ui-smoke.mjs      # 48 条断言,最小假 DOM 里跑真实 lib/ui.js

冒烟测试覆盖四种局面:标题栏存在(挂进 menubar、是「编辑」右边、无药丸、ping where=titlebar)、没有菜单栏(药丸全套:刷新/换角落/隐藏/自愈重挂)、声明有标题栏但它没出现(等 5 次后兜底)、菜单栏晚到(撤药丸改挂菜单栏)。

卸载

dsh plugin --profile desktop remove dsh-re

隐藏按钮只是写了个 localStorage 标记,清掉 dsh-re-ui:hidden 就回来了。

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 98caa604478d

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout