在 DSH 的 Web 客户端开发中,明确 Agent 回合的结束是一个常见需求。dsh-web-ding 作为一个插件,通过在浏览器端合成并播放声音,解决了“不知道 Agent 何时真正空闲”的问题。
插件定位¶
这是一个浏览器专属的“叮”声提示插件。它由两部分组成:Host 端监听器检测 agent/status 的空闲状态,并将信号推送到 falling-ts-web-ding 设置命名空间;浏览器端客户端镜像该命名空间,通过 Web Audio API 合成提示音并弹出通知。
安装与前置条件¶
运行以下命令将插件添加到 Web Profile:
dsh plugin --profile web add github:falling-ts/dsh-web-ding
安装前需确保 Web 应用包含客户端包(package.json 中的 dsh.client 声明)。
核心功能¶
- 合成提示音:使用 Web Audio API 在前端合成“叮”声(三个正弦振荡器加指数衰减包络)。Host 端不播放音频,不调用系统通知。
- Host 端监听:监听 Agent/Status 的空闲转换(所有回合结束,包括子 Agent)。只有新的空闲转换会触发信号,重复的空闲状态保持静默。
- 浏览器端客户端:镜像设置命名空间,实时响应用户配置。支持 Win11 风格的右下角 Toast 通知。
- 通知抽屉:点击 Toast 打开通知抽屉,列出回合结束消息。消息存储在
localStorage,最多保留 100 条,支持单条删除和全部删除。
配置说明¶
配置项存储在 falling-ts-web-ding 命名空间中,可在 设置 → 提示音配置 面板调整。该插件包含两个独立的配置块:
Block 1 — 弹出用户选择¶
当浏览器端的 [data-question-key] 元素出现时触发,检测是纯前端行为。可调整:
* questionEnabled:开关。
* questionVolume:音量(0..1)。
* questionFreq:频率(80..4000 Hz)。
* questionDecayMs:衰减时长(100..4000 ms)。
Block 2 — 回合结束¶
监听 Agent 空闲转换。Host 端在检测到 agent/status 空闲变化时发布 done 信号。可调整:
* turnEndEnabled:开关。
* turnEndVolume:音量(0..1)。
* turnEndFreq:频率(80..4000 Hz)。
* turnEndDecayMs:衰减时长(100..4000 ms)。
注意事项¶
- 浏览器自动播放策略:浏览器会阻止音频播放,直到用户与页面发生交互(点击、按键)。首次使用前需在页面上点击一次或使用“试听”按钮预热 AudioContext。
- 后台标签页:浏览器可能会暂停后台标签页的 AudioContext,保持标签页可见才能听到声音。
- 数据隔离:消息日志完全存储在浏览器
localStorage中,Host 端不读写该数据。
源码与文档¶
该插件依赖 settings/document-updated 镜像通道与浏览器端通信。源码与目录页:https://github.com/falling-ts/dsh-web-ding