Per-workspace completion ringtones plus attention sounds for approval, question, plan-review, goal-blocked, and task-failure events, with built-in synth, voice (TTS), and custom audio.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-plugin-notify-sound
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:ldchaowin/dsh-plugin-notify-sound
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
English | 中文
A DeepSeek Harness (DSH) plugin for the Web UI: play a customizable ringtone when a task finishes — per workspace — and an attention sound whenever something needs a human.
Features
Completion sounds (per workspace)
- Plays when a session turn finishes (
running: true → false) or a background job completes. - The sound is resolved per workspace: a workspace-specific override wins, otherwise the default.
- Three sound sources:
- Built-in synthesized sounds — 6 options (Ding / Chime / Bell / Complete / Success / Mute), generated live with Web Audio, no audio files required.
- Voice announcement (TTS) — the browser speaks a custom phrase (e.g. “我做完啦!”, “All done!”) using a system Chinese voice; voice and rate are configurable.
- Custom audio — upload any MP3/WAV/etc. file.
Attention sounds (when a human is needed)
The following events always ring (they are not affected by the “quiet current session” option):
| Event | Detection | Default sound |
|---|---|---|
| Approval request | session pendingInteraction: approval |
generic attention sound |
| User question | pendingInteraction: question |
generic attention sound |
| Plan review | pendingInteraction: plan-review |
generic attention sound |
| Goal blocked | goal projection enters blocked |
generic attention sound |
| Background task failure | job status failed |
Bell (dedicated failure sound) |
Each kind can override the generic attention sound, or use a shared TTS phrase (e.g. “需要你的确认” / “Your confirmation is needed”).
Settings panel (Settings → 通知铃声 / Notification Sounds)
Master switch, “quiet when viewing the current session”, default completion sound, per-workspace completion sounds, generic + per-kind attention sounds, voice settings (voice / rate / preview / refresh), per-row preview and custom-audio upload.
Install
Requires a DSH version with bundle-plugin support (dsh.profile.bundles + dsh.bundle.patch)
and pnpm on PATH (corepack enable or npm i -g pnpm).
# One command: pnpm installs the package and adds it to the profile's bundle layer
dsh plugin --profile web add dsh-plugin-notify-sound
# Restart the server (or refresh the page), then open Settings → 通知铃声
Other profiles work the same way: dsh plugin --profile <name> add dsh-plugin-notify-sound.
Manual install (without pnpm)
- Copy this package and its runtime deps (
@deepseek-ai/schemastery,@deepseek-ai/cosmokit,@standard-schema/spec) into$DSH_HOME/profiles/web/node_modules/. - Append
"dsh-plugin-notify-sound"todsh.profile.bundlesin$DSH_HOME/profiles/web/package.json. - Restart
dsh web.
Configuration storage
- The browser half persists its configuration in localStorage (key
dsh-notify-sound:config), sanitizing every read and filling defaults. - The host half also registers the
dsh-plugin-notify-soundsettings namespace: on rc.6 the settings API allowlist (WEB_SETTINGS_NAMESPACESindsh-host-apiproxy) does not expose third-party namespaces to browsers, so the client does not depend onsettingsScopetoday; the registration keeps the migration path open for future releases.
Development
npm test # 50+ assertions across host and client halves (Node only, no browser needed)
npm run check # syntax check
Layout:
lib/index.js— host half: registers the settings namespace (schema + defaults)lib/client.js— browser bundle: completion/attention event detection, sound engine (Web Audio / TTS / Audio), settings panellib/types/index.d.ts— host-side type declarationscordis.patch.yml— bundle patch layer (inserts thenotify-soundrow)tools/— tests and verification scripts (not shipped in the npm package)
Publish
npm login # npm account (2FA recommended)
npm publish --access public
License
Links
More in this category
PolinniZhong/dsh-omi-voice★ 74
In-chat read-aloud for DeepSeek Harness: tap to read, pause and resume AI replies with natural Doubao TTS voices (BYOK), reading only the final answer with code, tables and diagrams filtered; local engine, plugin keeps no API key.
PensiveFei/dsh-voice-scribe★ 34
Voice input for the web UI: tap Alt (or Alt+Space) to start/stop dictation, browser Web Speech (zero-config) or OpenAI-compatible cloud ASR, optional polish through DSH-configured LLM, settings UI.
WizisCool/dsh-ears★ 22
Voice input plugin for DeepSeek Harness (dsh): a microphone button in the composer turns speech into a draft transcript, with a choice of speech-recognition backends, optional polish through dsh own LLM routes, and a native settings page.
1624318455/dsh-plugin-tts★ 21
Reads assistant replies aloud via free Edge TTS or your own RVC voice models: read-aloud buttons + auto-read, adaptive chunked progressive playback (gapless long reads), one-click voice-pack installs from a registry, and a portable RVC runtime.
qishuilalala/dsh-voice-mode#dsh-voice-mode★ 15
Full-duplex voice mode for the DeepSeek Harness Web UI: toggle (2s-pause auto-send) or hold-to-talk dictation into an editable draft with zipformer2 streaming ASR, optional wake word; sentence-by-sentence Edge TTS read-aloud with live captions, and speaking interrupts playback and the running turn (true barge-in). On-device ASR, no API key.
PerryLink/dsh-talk★ 13
Voice I/O for DeepSeek Harness — speech-to-text and text-to-speech over the microphone and audio output.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.