前言¶
DeepSeek Harness (DSH) 的理念是「一切皆插件」,目前默认几乎没有声音反馈。任务跑完了?失败了?按钮点中了没有?只能靠眼睛确认。dsh-ui-sound 插件把「界面交互」和「任务状态更新」都变成可听见的语义反馈,每一类反馈都能在设置页里单独挑音效、单独开关。
插件简介¶
该插件由林冠宇 (SOH4C4759) 维护,采用 MIT 许可证。它通过实时合成音效(不依赖任何音频文件)提供交互和任务状态反馈,并支持偏好持久化。
核心功能¶
插件主要提供两类音效:
- 界面交互音效:对按钮按下进行语义分类发声,包括普通、主要、开关、发送、关闭、危险、链接等类型,键盘 Enter、Space 激活同样发声。
- 任务状态音效:在当前会话开始运行、运行成功结束、运行失败结束,以及出现需要处理的交互(授权请求 / 提问 / 计划复核)时发声。
安装与启用¶
在终端中执行以下命令安装插件:
dsh plugin --profile <你的 profile> add github:SOH4C4759/dsh-ui-sound
安装完成后重启 DSH,在 设置 → 音效 里配置即可。
配置与用法¶
在设置页的「音效」选项卡中,你可以配置总开关、音量、音色包以及各类音效的开关。
默认音量设置为 55%,音色包默认为 zen(纸、木、风铃风格)。插件内置了 12 个音色包:minimal、soft、glass、arcade、mechanical、organic、dreamy、scifi、rubber、cinematic、studio、zen。
配置偏好会持久化存储,文件路径为:
%USERPROFILE%\.dsh\ui-sound\config.json
例如,一个典型的配置文件如下:
{
"enabled": true,
"volume": 0.55,
"pack": "zen",
"taskSounds": true,
"clickSounds": true,
"attentionSounds": true,
"mapping": { "task.success": "complete", "click.send": "send" }
}
给其它插件用的 API¶
浏览器端通过 ctx.reflect.provide("uiSound", service) 暴露服务,宿主插件或其它组件可以调用以下方法:
ctx.uiSound.play("task.success") // 按情景触发(受总开关与对应开关约束)
ctx.uiSound.playCue("achievement") // 直接播一个 cue
ctx.uiSound.preview("success") // 试听功能
ctx.uiSound.getPrefs() // 获取当前偏好
注意事项¶
- 浏览器自动播放策略:浏览器不允许网页在没有用户手势前启动 AudioContext。因此,页面加载后第一次点击之前不会有声音。插件会在第一次
pointerdown时预热并恢复 AudioContext,若仍无声,请先点击页面任意位置。 - 不支持导入自定义音频文件:音效引擎由 Web Audio 实时合成,不支持导入自定义音频文件。
- 不包含 hover 音:悬停发声在长时间使用中会变成噪声,因此未包含此功能。
- 不包含工具调用级音效:工具调用频率高,单独发声会淹没真正重要的状态变化。
- 社区移植版:这是社区移植版,基于上游
dsh-plugin-uisfx适配 DSH 0.2.0,并非上游官方延续。