dsh-sound-alert: A Sound Alert Plugin for DSH Task Completion and Confirmation

DeepSeek Harness(DSH)在终端运行时,开发者容易忽略任务结束或等待确认的时刻。这个插件通过浏览器端的 FM 合成技术,在任务完成(高音)和需要确认(低音)时播放两种截然不同的音效,无需依赖任何音频文件。

它是 Charlestam218 维护的一个客户端插件,遵循 MIT 协议。核心价值在于提供非侵入式的状态反馈,避免因视线离开终端而漏掉关键信息。

核心功能

插件主要提供以下能力:

  • 双音效区分:任务完成时播放高亢的 E6→B6 双音(清亮有余音),需要确认时播放低沉的 A3→E3 单音(短促有推进感)。两个音效刻意放在不同音区,靠音高区分。
  • 纯合成,无依赖:音效在浏览器端用纯 JS 按 FM 合成公式逐采样渲染,不依赖任何音频文件、网络请求或宿主路由。
  • Windows 任务栏徽标:在 DSH 任务栏按钮上显示红点数字,数量为“需要确认” + “已完成未读”的会话数。仅在 Windows 平台实现。
  • 兼容性降级:支持 Web Audio API;若上下文被浏览器挂起,自动退回 <audio> + WAV Blob 降级方案。

安装与启用

安装插件需将包放入 profile 的 node_modules 并写入配置。

Web Profile 安装:

dsh plugin --profile web add link:<本包绝对路径>

link: 是软链安装,修改源码后会通过 HMR 热重载自动生效。若使用 file: 则为拷贝安装。安装后若未生效,重启 DSH 客户端(Web 端需重启并按 Ctrl+R)。

典型用法

安装完成后,插件会在浏览器控制台暴露 dshSoundAlert 对象。

测试与诊断

  • 依次测试:
    dshSoundAlert.test()
  • 单独测试:
    dshSoundAlert.test('done')    // 只响完成音
    dshSoundAlert.test('confirm') // 只响确认音
  • 查看状态:
    dshSoundAlert.state()         // { enabled, volume, audio: 'running', watched, sessions, done, confirm, lastPath, lastError }
  • 查看诊断历史:
    dshSoundAlert.diag()          // 最近的状态变化与发声历史

状态存储与排查

不打开 DevTools 也能查看状态,数据保存在 localStorage:

键 / 文件 含义
localStorage dsh-sound-alert:boot 客户端半区运行状态(版本、挂载时间)
localStorage dsh-sound-alert:diag 心跳快照:当前会话、最近发声记录、audio 状态
localStorage dsh-sound-alert:plays 各音效播放次数与最后一次的类型
$DSH_HOME/.dsh-sound-alert.log 宿主半区加载/卸载日志

开关与音量控制

dshSoundAlert.off()          // 静音
dshSoundAlert.on()           // 恢复
dshSoundAlert.toggle()       // 切换
dshSoundAlert.setVolume(0.7) // 设置音量 (0~1)

适用场景与注意

  • 多窗口限制:多窗口会各自播放声音,各自判定状态。
  • 页面未打开不响:页面未打开时不会响,这是界面提示而非系统通知。如需离开窗口也提醒,需配合系统通知类工具。
  • 依赖关系:插件依赖 DSH 客户端的服务名 sessions 与 uiSession.sessionStatus。若 DSH 内部服务变更,插件会静默失效。
  • 配置生效:配置更改需重启或热重载。

开发与维护

音效配方在 lib/client.js 顶部的 RECIPES 中,使用 FM 合成参数(频率、调制比、衰减等)定义。修改后保存即可触发热重载。

插件遵循 MIT 许可证,源码托管于 GitHub。

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

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

Xiaoye