前言¶
在 DeepSeek Harness(DSH)里做插件或改界面时,经常需要看改完后的 UI 是否生效。浏览器形态可以靠地址栏或开发者工具刷新;桌面端没有地址栏,菜单里也没有「刷新」项,只能整应用重启,对话和工作区虽在宿主进程里,但来回重启仍然打断开发节奏。下面介绍社区插件 dsh-re(维护者 lux09947-cmyk,分类:客户端):在桌面端标题栏「编辑」右侧增加「↻ 刷新」,只重载当前页面,不重启应用、不断会话。
这是什么¶
dsh-re 是纯宿主侧插件,不依赖 dsh.client,浏览器半边不参与。它在 DeepSeek Harness 桌面端顶部标题栏、「应用」「编辑」同一套样式区域里增加第三个按钮「↻ 刷新」;点击后等价于重新加载当前页面,对话、工作区、正在跑的会话仍在宿主进程中,不受影响。拿不到标题栏菜单时(例如在浏览器里跑 dsh web,或外壳菜单栏尚未出现),会退回右上角的浮动药丸,提供「↻ 刷新」「⇕ 换角落」「✕ 隐藏」(隐藏状态写入 localStorage)。
核心功能¶
- 标题栏刷新:优先挂进外壳菜单栏
[data-windows-menu]的 shadow root 内[role="menubar"],成为「编辑」后面的按钮,样式与「应用 / 编辑」一致。 - 降级 UI:菜单栏约 10 秒内仍不可用时,使用角落药丸;2 秒一次的看门狗会自愈重挂,且不会重复挂载第二颗按钮。
- 自检接口:挂载成功后会向
POST /api/dsh-re/ui-ping回传(带where=titlebar|corner、userAgent);GET /api/dsh-re/status可免认证读取,用于判断按钮是否已进入桌面窗口。 - 静态资源热更新:宿主暴露
GET /api/dsh-re/ui.js,每次现读盘并带no-store,因此日常只改lib/ui.js时点刷新即可生效;换插件或改注入逻辑则须整应用重启一次(注入表在宿主启动时缓存,点刷新拿不到新表)。
安装与启用¶
DSH 社区插件目录独立于 DeepSeek / 幻方,安装前建议自行查看 GitHub 仓库 源码与 MIT 许可证;插件以当前 dsh 进程权限运行。
- 在已安装 DeepSeek Harness 桌面 profile 的环境中执行下列命令之一:
# 从 npm(发布后)
dsh plugin --profile desktop add dsh-re
# 或直接从 GitHub
dsh plugin --profile desktop add github:LUX09947-CMYK/dsh-re
- 装完后重启一次应用(不是点刷新按钮):首次注册
webserver/index-inject注入行必须靠这次重启写入宿主缓存。 - 之后若只修改插件内的
lib/ui.js,点标题栏或药丸上的「↻ 刷新」即可看到界面变化。
引擎要求:dsh.engines.dsh: >=0.2.0-rc.1。README 记载实测环境为 DeepSeek Harness 桌面端 0.2.0-rc.2(Electron 44)。
典型用法¶
- 日常开发 UI:改
lib/ui.js→ 在桌面窗口点「↻ 刷新」→ 确认 menubar 或药丸上的行为是否符合预期。 - 确认是否挂进标题栏:请求
GET /api/dsh-re/status,不必人工猜窗口状态。 - 若曾点药丸「✕」隐藏:清除 localStorage 键
dsh-re-ui:hidden后刷新,按钮会再次出现。
卸载:
dsh plugin --profile desktop remove dsh-re
适用场景与注意¶
适合谁:主要在 desktop profile 下开发 DSH 插件或调试注入 UI 的开发者;需要频繁看界面迭代、又不想整应用重启的场景。
平台差异:仅 Windows 桌面外壳具备那条标题栏菜单栏;其它平台或浏览器形态自动走角落药丸,刷新功能本身不受影响。
安全与信任:与其它 DSH 插件一样,宿主代码会在应用启动路径中注册路由与 index 注入,安装前应阅读 lib/index.js、lib/ui.js 及 cordis.patch.yml,确认行为符合预期。
工作原理摘要(便于排查):宿主 lib/index.js 在 apply() 开头向 webserver/index-inject 推内联 script,由页面加载 /api/dsh-re/ui.js;桌面端 tapIndex() 不生效,且不能用会拖垮 __DSH_BOOT_READY__ 的 script-src 异步加载方式,因此采用内联 script 行且在 apply() 里不能依赖会推迟执行的 object 级 inject。
结尾¶
dsh-re 解决的是桌面端「没有刷新入口」这一具体缺口:一颗与原生菜单同风格的按钮,或等价的角落药丸,让 UI 迭代回到「改文件 → 刷新页面」的节奏。社区目录页:lux09947-cmyk/dsh-re;源码与详细说明:GitHub — LUX09947-CMYK/dsh-re。