dsh-quick-reload:DSH Web UI 一键刷新与可重建缓存清理

前言

在 DeepSeek Harness(DSH)里开发或调试客户端插件时,Host 侧的 cordis 树可以热更新,但浏览器里已经加载的前端仍可能继续跑旧代码。过去较稳妥的做法是退出整个应用再打开,才能看到热注入插件的效果。dsh-quick-reload 在 Web UI 右下角提供半透明 ⟳ 按钮,在刷新页面前先清理浏览器侧可重建缓存,再按 Host 最新发布的模块图重载页面,让客户端改动尽快可见。

这是什么

核心功能

界面入口

客户端入口在 lib/client.js,向 shell.overlay 注册 id 为 quick-reload、order 100 的条目(文案来自 locale)。shell.overlay 为根作用域、类型 list、replaceRisk: none:按钮挂在框架级浮动层,与各 Session 无关,也不会挤占或替换其他插件占用的单行槽位(例如 sidebar.footer.action 与 dsh-context 的冲突场景,README 中有说明)。层默认点击穿透,该条目通过 pointer-events:auto 恢复可点。

按钮约 32px,默认约 0.68 透明度,悬停/聚焦时更明显;位置为右下角内缩 18px,与框架浮动 pill 惯例一致。

点击后做了什么

普通点击会在页面 reload 之前处理 DSH 对 /plugins/** 的长期 immutable 缓存与「rev 仅来自文件元数据、字节不同却同 rev」的碰撞问题:

  1. 清空 Cache Storage 中所有 bucket(含远程访问壳缓存 dsh-remote-shell-v1 等)。
  2. 对所有 Service Worker 注册调用 update()。
  3. 通过 Host 的 HMR SSE(GET /plugins/events)与 performance 时间线收集需校验的 /plugins/** URL,以 cache:'reload' 重新拉取;上限约 160 个 URL、单请求 1.2s、总预算 2.2s,避免 reload 被拖死。

刻意保留:localStorage、sessionStorage、Cookie、磁盘 profile、Sessions 与当前会话等——避免丢草稿、面板宽度或远程配对凭证(如 dsh-remote-device)。

Shift+点击:仅做裸页面 reload,不做上述缓存清理。

整条路径不接触 Host 进程或 agent runtime:无应用重启、无 /dsh-market/restart、无 profile 写入;进行中的 turn、后台任务或终端可在页面重连后继续。

Host 侧入口 lib/index.js 仅保持 bundle 合法,无额外逻辑。

安装与启用

安装前请自行审阅源码与 MIT 许可证;插件在当前 dsh 进程权限下运行,与任何社区插件一样,安装即信任其代码行为。

从 release 预构建包安装(需先完全退出桌面应用):

dsh plugin --profile desktop add https://github.com/lyjsyyds/dsh-quick-reload/releases/download/v0.1.1/dsh-quick-reload-0.1.1.tgz

或在 GUI:设置 → 插件 → 安装,spec 填上述同一 URL。

本地开发目录(link 形式,CLI 会写入 dependencies 与 dsh.profile.bundles):

dsh plugin --profile desktop add link:<absolute path to this directory>

卸载:在 设置 → 插件 移除 bundle,或:

dsh plugin --profile desktop remove dsh-quick-reload-lyjs

并从 dsh.profile.bundles 中去掉对应项;下次启动后按钮消失。

典型用法

  1. 安装并启动 DSH 桌面 profile 的 Web UI。
  2. 热注入或修改客户端插件后,点击右下角 ⟳,等待短时的缓存清理与 reload。
  3. 若 Host 已发布新文件且 rev 已变,有时仅 reload 即可;若怀疑同 rev 不同字节,用普通点击走完整清理路径。
  4. 仅需快速刷新、不关心插件缓存时,Shift+点击。

仓库内冒烟测试(无网络依赖):

npm test

等价于 node tests/quick-reload.smoke.mjs,共 19 项检查。

适用场景与注意

适合:频繁改 DSH 客户端插件、希望在 Web UI 内立刻看到 overlay/UI 变更的开发者。

不适合替代:已加载 Host 模块被改写的场景——README 明确说明仍需应用重启。

权限与安全:只清浏览器侧可重建缓存并重载页面,不改插件集合与 profile;安装前请检查 GitHub 源码。SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文安装命令以仓库 README 为准。

结尾

dsh-quick-reload 把「退出重开才能看到客户端插件」缩成右下角一次点击(必要时带缓存清理),并避免误伤 Session 与配对状态。更多信息见 SkillHub 目录页 与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye