前言¶
DSH Web 里最让人不安的不是工具跑得慢,而是它太安静。审批在等你确认、提问在等你回答、方案审阅在等你过一眼——页面只是停在那里,没有任何声音或浮层。你需要盯窗口、需要点进对应会话,一旦切到别的应用或最小化,就很容易错过。现有的解决方案往往依赖第三方客户端或外部监听脚本,配置成本高于它解决的问题。
下面介绍 HansyLin-xCoFe 维护的 dsh-notify。它做的是同一件事:在 DSH Web 自身页面内,为「等待你处理」的状态加上提示音、右上角浮层卡片和后台系统通知。
插件归在 SkillHub 目录的「客户端」分类下,采用 MIT 许可证。目录页是独立的社区站点,与 DeepSeek / 幻方没有官方从属关系。
它解决什么问题¶
DSH Web 本体不带任何提醒手段。当你离开页面窗口时,等待状态只体现为会话状态值的变化(approval / question / plan-review),UI 本身没有视觉或听觉信号。dsh-notify 监听这几个挂起状态,在它们出现时补上三层提醒:声音、浮层、系统通知。
一句话定位:把「等你处理」这件事从被动翻页变成主动提醒,且不需要离开 DSH Web 环境。
能力一览¶
下面只列 README 中明确出现的能力。
- 触发条件:
approval(审批)、question(提问)、plan-review(方案审阅)开始等待用户处理时触发提醒。 - 提示音:6 款内置柔和音色,分别为玻璃 / 风铃 / 木琴 / 水滴 / 花开 / 脉冲,音量可调;审批音与提问音可分别选择。默认音色为「风铃 / 花开」。音效由纯数学 PCM 合成,不依赖音频文件。
- 右上角提醒卡片:半透明浮层,带有弹簧缓动、背景模糊和悬停微动效。卡片显示会话名与工具/问题摘要,点「前往处理」直接跳转到等待中的会话,关闭后收成带角标的小铃铛。
- 后台提醒:窗口不在前台时可发系统桌面通知(浏览器中授权一次),同时让标签页标题闪烁。
- 自定义音频:支持上传 MP3 / WAV / OGG / M4A,单个文件不超过 1.5 MB。音频写入当前浏览器的
localStorage,不会上传到远端。 - 界面语言:中文 / English,跟随 DSH 的语言设置。
设置项集中在 设置 → 通用 → 提醒,包括总开关、音量、审批音 / 提问音、自定义音频、试听、桌面通知开关、横幅开关、标题闪烁开关和效果预览。
安装与启用¶
要求:DSH 版本不低于 0.2.1-rc.2,且运行在 Web 形态。
在 DSH Web 的 设置 → 插件 中添加以下 spec:
github:HansyLin-xCoFe/dsh-notify
另一个等价方式是使用 plugin_manager 工具的 install_bundle,target 填同一个 spec。
安装后刷新一次页面,到 设置 → 通用 → 提醒 就能看到入口。之后用右侧开关启用即可。
以上是官方 README 写明的两种方式,不是从插件名拼出来的命令。
配置与自定义¶
启用后进入设置页,点「设置」展开详细选项。有三项值得先说清。
- 「预览审批提醒」与「预览提问提醒」会直接弹出卡片并播放对应声音,用来确认当前音色是否符合预期。
- 「测试 Windows 通知」会立刻发送一条系统通知,用来验证浏览器的通知权限和 Windows 通知设置。这条测试不受前台限制,随时可用。
- 「允许桌面通知」需要你在浏览器弹窗里允许一次。之后只有窗口不在前台(切到其它应用或最小化)时才会发系统通知,避免正盯着页面时被打断。
自定义音频上传后需要点试听确认解码正常。如果浏览器自动播放策略限制了音频解锁,正常使用 DSH 时会有一次交互在前,通常不会感知到这个限制。
工作原理¶
插件在浏览器侧半监听 Client 的 ctx.uiSession.sessionStatus 源。该源是三种挂起交互的统一发布点。新的 pending key 出现时,插件按顺序做三件事:播放对应提示音、在 shell.overlay 槽位渲染右上角卡片、在窗口处于后台时发系统通知并闪烁标题。
pending 消失(已处理或已撤回)时卡片自动淡出。首帧加载时已经存在的挂起只显示卡片、不响铃,避免刷新页面后重复响;如果挂起在首帧之后才同步到,仍会正常响一次。Host 侧(index.js)无路由、无状态,全部逻辑在浏览器端完成,随页面启动加载。
测试与构建¶
仓库里同时包含可安装产物和源码。构建与测试命令如下,需要 Node 22 及以上:
node scripts/build-client.mjs # 构建 client.js
node scripts/build-client.mjs --check # 只校验产物是否最新
node scripts/test-client.mjs # 无浏览器行为测试
node scripts/test-sound-engine.mjs # 音频渲染与调度断言
client.js 由 src/main.js 注入 src/sound-engine.js 生成,README 明确要求不要手改这个文件。最新版本号见仓库的 package.json。
适用场景与注意¶
适合日常使用 DSH Web 且需要频繁处理审批、提问、方案审阅的用户,尤其是经常切窗口、多任务并行的场景。
需要留意的边界,全部来自 README:
- 提醒只在 DSH Web 页面打开时生效,没有 Service Worker 推送。关掉页面后,系统通知不会到达。
- 偏好设置与自定义音频保存在当前浏览器的
localStorage,跨浏览器、跨设备不同步。 - 桌面通知需要一次性授权,如果被浏览器拒绝,需要在站点设置里恢复。
- 与其它「等待交互提醒」类插件(README 中提到了
dsh-whale-widget的等待气泡)可以并存,同时开启会各自提醒一次。只想保留一套就关掉另一套。
此外,插件运行在当前 dsh 进程的权限范围内。安装任何第三方插件前,建议先打开仓库目录审查源码与许可证。本插件是 MIT 许可证,可以从包的 files 字段列出的文件确认产物范围。
结尾¶
dsh-notify 做的事情很窄:在 DSH Web 里,审批、提问、方案审阅等待用户处理时给出声音、浮层和后台通知。它没有扩展新的审批逻辑,也不改会话状态,只是把已经存在但不可感知的等待状态变得可感知,适合作为日常体验的一个补充。
目录页:https://www.skillhub.cn/plugins/HansyLin-xCoFe/dsh-notify
GitHub:https://github.com/HansyLin-xCoFe/dsh-notify