DeepSeek Harness UI Sound Plugin (dsh-ui-sound)

Introduction

The philosophy of DeepSeek Harness (DSH) is “everything is a plugin.” By default, there is currently almost no audio feedback. Did the task finish? Did it fail? Did you hit the button? You can only confirm by looking. The dsh-ui-sound plugin turns both “UI interactions” and “task status updates” into audible semantic feedback, and each type of feedback can have its own sound selected and independently toggled on the settings page.

Plugin Overview

This plugin is maintained by Lin Guanyu (SOH4C4759) and is released under the MIT license. It provides interaction and task-status feedback through real-time synthesized sounds (without relying on any audio files) and supports persisting user preferences.

Core Features

The plugin mainly provides two categories of sounds:

  1. UI interaction sounds: It plays semantically categorized sounds for button presses, including types such as normal, primary, toggle, send, close, danger, and link. Keyboard activation via Enter and Space also produces sounds.
  2. Task status sounds: It plays sounds when the current session starts running, ends successfully, ends with failure, and when an interaction requiring attention appears (authorization request / question / plan review).

Installation and Activation

Run the following command in a terminal to install the plugin:

dsh plugin --profile <你的 profile> add github:SOH4C4759/dsh-ui-sound

After installation, restart DSH and configure it in Settings → Sound.

Configuration and Usage

In the “Sound” tab of the settings page, you can configure the master toggle, volume, sound pack, and toggles for individual sound categories.

The default volume is set to 55%, and the default sound pack is zen (paper, wood, and wind-chime style). The plugin includes 12 built-in sound packs: minimal, soft, glass, arcade, mechanical, organic, dreamy, scifi, rubber, cinematic, studio, and zen.

Configuration preferences are persisted to the following file path:

%USERPROFILE%\.dsh\ui-sound\config.json

For example, a typical configuration file looks like this:

{
  "enabled": true,
  "volume": 0.55,
  "pack": "zen",
  "taskSounds": true,
  "clickSounds": true,
  "attentionSounds": true,
  "mapping": { "task.success": "complete", "click.send": "send" }
}

API for Other Plugins

The browser-side code exposes the service via ctx.reflect.provide("uiSound", service). Host plugins or other components can call the following methods:

ctx.uiSound.play("task.success")   // 按情景触发(受总开关与对应开关约束)
ctx.uiSound.playCue("achievement") // 直接播一个 cue
ctx.uiSound.preview("success")     // 试听功能
ctx.uiSound.getPrefs()             // 获取当前偏好

Notes

  1. Browser autoplay policy: Browsers do not allow a web page to start an AudioContext without a user gesture. Therefore, there will be no sound before the first click after the page loads. The plugin warms up and resumes the AudioContext on the first pointerdown. If there is still no sound, click anywhere on the page first.
  2. Importing custom audio files is not supported: The sound engine is synthesized in real time using Web Audio and does not support importing custom audio files.
  3. Hover sounds are not included: Hover sounds would become noise during prolonged use, so this feature is not included.
  4. Tool-call-level sounds are not included: Tool calls happen at a high frequency, and individual sounds would drown out truly important status changes.
  5. Community port: This is a community port adapted for DSH 0.2.0 based on the upstream dsh-plugin-uisfx, and is not an official continuation by upstream.
羽毛球分组比赛记分
小程序二维码

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

Xiaoye