dsh-approval-ding
A short ding the moment DeepSeek Harness asks you to approve a tool call.
审批提示音:DeepSeek Harness 请求审批时响一声“叮”。
Why
When an agent calls a tool that needs permission, DSH opens an approval prompt and waits. If you have switched to another window or another app, the turn stalls silently until you notice. This plugin plays a short bell as soon as the prompt appears — before you have answered anything.
It never answers, approves, rejects or delays the request. It only makes a sound.
Install
From GitHub:
# Web GUI profile
dsh plugin --profile web add github:tianhengzhibei/dsh-approval-ding
# Desktop app profile
dsh plugin --profile desktop add github:tianhengzhibei/dsh-approval-ding
Or find it in the plugin market and install it there.
No build step, no dependencies — the package ships plain ESM and one WAV file.
What you hear
assets/ding.wav: a 0.62 s bell at E6 (1318.51 Hz) with four inharmonic partials,
44.1 kHz mono 16-bit.
sound: system uses the OS notification sound instead; any other value is treated
as a path to a .wav (absolute, or relative to the package root).
Configuration
Every key is optional; the defaults are shown.
# <profile>/cordis.patch.yml
- insert:
- id: dsh-ding
name: dsh-approval-ding
config:
enabled: true # false mutes the plugin without uninstalling it
sound: ding # "ding" | "system" | "C:\path\to\chime.wav"
cooldownMs: 500 # parallel approvals produce a single ding
How it works
- The trigger is the
approval/requestwaterfall. DSH only dispatches it when a prompt is really needed: under aneverapproval policy the request is rejected before the waterfall runs, so the plugin stays silent — as it should. - The listener is registered with
{ prepend: true, global: true }:globalkeeps a root-level listener visible to Agent-scoped dispatch,prependmakes it run before any answerer (including the browser bridge that takes over the composer), so the sound is not lost to a fast decision. - It returns
next()untouched. The real answerers — the web approval panel, a command-line prompt, another plugin — still receive the request unchanged. - Playback happens in a helper child process with
stdio: 'ignore', so a slow PowerShell start or a missing audio device can never block the turn. Every failure is swallowed: a failed ding must not fail an approval.
Platform
| Platform | Playback |
|---|---|
| Windows | powershell.exe + System.Media.SoundPlayer |
| macOS | afplay |
| Linux | paplay, falling back to aplay |
The sound is played on the machine that runs the DSH host process. If your browser connects to a remote host, the ding is heard on the host, not in the browser tab.
Windows note: the helper must not be spawned with
detached: true. ADETACHED_PROCESSpowershell.exestarts without a console, exits 0 immediately and never runs its script — verified: no audio, no side effect.
Latency
PowerShell cold start is roughly 0.5 s on Windows, so the ding is heard about half a second after the prompt appears.
Uninstall
Remove the bundle with the plugin manager, or drop dsh-approval-ding from
dsh.profile.bundles in the profile's package.json.
License
MIT.
中文说明
当 Agent 调用需要授权的工具时,DSH 会弹出审批并等待。人不在窗口前时,这一轮就 静静地卡住了。本插件在审批请求出现的那一刻播一声短铃,不参与任何审批决策。
- 触发点是
approval/requestwaterfall:never策略下不会产生该事件,因此也不会响。 - 以
{ prepend: true, global: true }注册,保证先于任何应答器执行,随后立即return next(), 不影响浏览器审批面板等既有应答器。 - 播放放在独立子进程里,PowerShell 冷启动或没有声卡都不会阻塞审批;播放失败一律吞掉。
安装:
dsh plugin --profile web add github:tianhengzhibei/dsh-approval-ding
配置(全部可选,括号内为默认值):enabled(true)、sound(ding,
可选 system 或自定义 .wav 路径)、cooldownMs(500,并发审批只响一次)。
No comments yet. Be the first to write one.