DSH Notify
给 DeepSeek Harness Web(DSH Web) 的「待处理提醒」插件。
DSH Web 本体没有提示音、浮层弹窗或桌面通知——当审批、提问或方案审阅在等你处理时, 页面只会安静地等着,人切走窗口很容易错过。这个插件补上这件事:
- 提示音:6 款内置柔和音色(玻璃 / 风铃 / 木琴 / 水滴 / 花开 / 脉冲),音量可调;
- 右上角提醒卡片:Apple 风格的半透明浮层,弹簧缓动 + 模糊 + 悬停微动效, 可一键跳到等待中的会话,也可收成带角标的小铃铛;
- 后台提醒:窗口不在前台时可选发系统桌面通知(需授权一次),并让标签页标题闪烁;
- 可自定义:审批音、提问音分别选择;支持上传自己的音频文件(只保存在本机浏览器,不上传);
- 设置入口在 设置 → 通用 → 提醒。
已在真实 DSH Web 环境人工验证:审批/提问到来时会弹出卡片并响起提示音。
功能一览
| 能力 | 说明 |
|---|---|
| 触发条件 | approval(审批)、question(提问)、plan-review(方案审阅)开始等待用户处理 |
| 提示音 | 6 款纯数学 PCM 合成的柔和音效,默认「风铃 / 花开」;审批与提问可分别设置 |
| 提醒卡片 | 右上角浮层,显示会话名、工具/问题摘要;点「前往处理」跳转;关闭后收为小铃铛 |
| 桌面通知 | 窗口不在前台时发送系统通知(需浏览器授权),点击直达对应会话 |
| 标题闪烁 | 后台时标签页标题以「● N 项待处理」闪烁 |
| 自定义音频 | MP3 / WAV / OGG / M4A,≤ 1.5 MB,存入本机 localStorage,不上传 |
| 设置项 | 总开关、音量、审批音/提问音、自定义音频、试听、桌面通知、横幅开关、标题闪烁、效果预览 |
| 语言 | 中文 / English(跟随 DSH 语言设置) |
安装
要求:DSH ≥ 0.2.1-rc.2(Web 形态)。在 DSH Web 的 设置 → 插件 里添加:
github:HansyLin-xCoFe/dsh-notify
也可以使用 plugin_manager 工具的 install_bundle,target 填同一个 spec。安装后刷新一次页面,
到 设置 → 通用 → 提醒 即可看到入口。
使用
- 打开 设置 → 通用 → 提醒,用右侧开关启用;
- 点「设置」展开:
- 「预览审批提醒 / 预览提问提醒」可以直接看到卡片 + 听到声音;
- 调音量、换音色、上传自定义音频、试听;
- 需要后台系统通知时点「允许桌面通知」,在浏览器弹窗里允许一次;
- 之后审批 / 提问到来时会自动提醒;点卡片「前往处理」跳到等待中的会话。
浏览器自动播放策略要求页面至少有一次用户交互后音频才解锁;正常使用 DSH 时不会有感知。
工作原理
浏览器半监听 Client 的 ctx.uiSession.sessionStatus 源——它是 approval / question /
plan-review 三种挂起交互的统一发布点。新的 pending key 出现时:
- 播放对应提示音(Web Audio,纯数学合成,无音频文件依赖);
- 在
shell.overlay槽位渲染右上角提醒卡片; - 窗口在后台时发系统通知、闪烁标签页标题。
pending 消失(已处理 / 已撤回)时卡片自动淡出。首次加载页面时已存在的挂起只显示卡片、不响铃, 避免刷新页面重复响;若挂起在首帧之后才同步到,仍会正常响铃一次。
构建与测试
仓库里同时包含可安装产物与源码:
node scripts/build-client.mjs # 构建 client.js
node scripts/build-client.mjs --check # 只校验产物是否最新
node scripts/test-client.mjs # 143 项无浏览器行为测试
node scripts/test-sound-engine.mjs # 362 项音频渲染与调度断言
client.js 由 src/main.js 注入 src/sound-engine.js 生成,请勿手改。Node 22+。
目录
| 路径 | 说明 |
|---|---|
package.json |
bundle 清单:Host patch + dsh.client(immediately: true,随页面启动加载) |
cordis.patch.yml |
插入 Host 行 dsh-notify |
index.js |
Host 半:无路由、无状态(全部逻辑在浏览器) |
client.js |
浏览器产物(构建生成,勿手改) |
src/main.js |
检测挂起、横幅、设置行、i18n 与动效样式 |
src/sound-engine.js |
6 款提示音的 PCM 合成、Web Audio 播放与自定义音频解码 |
scripts/build-client.mjs |
构建 / 校验 client.js |
scripts/test-client.mjs |
行为测试(提醒触发、首次静默、关闭重开、自定义音频、标题闪烁、apply 装配等) |
scripts/test-sound-engine.mjs |
音效渲染、峰值/主频断言与 AudioContext mock |
locale/、icon.svg |
Plugin Manager / 设置里显示的标题、描述与图标 |
docs/verification.md |
独立验证报告(安装、槽位、静态审查、人工验收清单) |
已知边界
- 提醒只在 DSH Web 页面打开时生效(没有 Service Worker 推送);
- 偏好与自定义音频保存在当前浏览器的
localStorage,跨浏览器/设备不同步; - 桌面通知需要一次性授权;被浏览器拒绝后需在站点设置里恢复;
- 与其它「等待交互提醒」类插件(例如
dsh-whale-widget的等待气泡)可并存, 同时开启会各自提醒;只保留一套时关闭另一套即可。
License
MIT
本插件的代码、测试、文档与发布流程 全部由 DEEPSEEK-V4.1-Flash + DEEPSEEK HARNESS 完成。
No comments yet. Be the first to write one.