dsh-hybrid-notify:DSH 多通道通知插件

前言

在 DSH (DeepSeek Harness) 中开发或运行智能体时,会话可能持续很长时间,且用户视线往往在浏览器其他标签页或应用中。若缺乏有效的通知机制,后台任务完成、审批请求或错误信息可能被遗漏。

dsh-hybrid-notify 插件通过监听窗口可见性,根据用户当前是否在浏览器前台,自动在页面内 Toast、PWA 系统通知和浏览器通知之间切换,并使用 Web Audio API 合成音效,确保关键事件能够被准确捕获。

核心功能

该插件主要解决后台运行时的消息触达问题,核心能力包括:

  1. 三通道自动选择:根据窗口可见性智能派发通知。
    • 页面内 Toast:窗口前台且可见时。
    • PWA 系统通知:窗口后台且 PWA 通道可用时。
    • 浏览器通知:窗口后台且未注册 Service Worker 时的兜底方案。
  2. 合成音效:使用 Web Audio API(振荡器 + 包络整形)实时合成音色,无需加载任何音频文件。音效分为成功、错误、警告、信息四个级别。
  3. 事件级与通道级开关:支持分别控制任务完成、子代理完成、审批请求等具体事件的开关,也支持独立启停三种通知渠道。
  4. 持久化与安全:配置持久化存储,支持 HMR(热重载)后状态不丢失,并遵循浏览器的自动播放策略合规要求。

安装与启用

通过 DSH CLI 安装该插件:

dsh plugin --profile web add dsh-hybrid-notify

或者从 GitHub 源码安装:

dsh plugin --profile web add github:john-walks-slow/dsh-hybrid-notify

安装后,插件会自动集成到 DSH Web UI 中。

配置

在 DSH Web UI 中打开 设置 → 通知 进行配置。所有设置通过 localStorage 持久化存储,键名为 dsh.notify.config。

事件开关

插件支持对以下事件进行独立控制:

事件类型 默认状态 说明
任务完成 开 会话一轮 turn 结束(running → idle)
子代理完成 关 subagent 会话完成
审批请求 开 Agent 请求批准操作
用户提问 开 Agent 向你提问
计划评审请求 开 Plan 模式等待评审
Agent 出错 开 Agent 遇到错误
后台任务完成 关 后台 bash 任务结束

注意:当前正在前台查看的会话不会触发通知。

音效设置

音效功能包含总开关、音量滑块、前台播放开关以及试听按钮。

注意事项

  1. 通知权限:PWA 与浏览器通知通道需要浏览器通知权限。首个后台事件到达时会自动请求权限(仅当状态为 default 时);设置页每个通道也有手动授权按钮。页面内 Toast 通道无需任何权限。
  2. PWA / Service Worker:PWA 通道的 Service Worker 由插件宿主端在 /plugins/dsh-hybrid-notify/sw.js 提供,不支持环境自动降级。
  3. 音效策略:受浏览器自动播放策略约束,AudioContext 在用户第一次点击或按键交互后解锁。首次交互前不会有声音。
  4. 零网络访问:插件不发起任何外部请求,不做任何上报,所有通知内容来自本地 DSH 会话快照。
  5. 兼容性:需要支持 Notification API 与 Web Audio API 的现代浏览器。部分移动浏览器不支持 new Notification(),会静默降级为页面内 Toast。
  6. 构建要求:从源码构建需 Node.js ≥ 18。

总结

dsh-hybrid-notify 为 DSH 提供了一套完整的后台消息触达方案,通过智能渠道切换和合成音效,减少了用户频繁查看标签页的需求,适合需要在长时间会话中保持信息敏感度的开发者与用户。

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

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

小夜