跳过主要内容
返回插件列表
L

dsh-plugin-notify-sound

ldchaowin/dsh-plugin-notify-sound

按工作区定制的任务完成铃声,以及审批、提问、计划评审、目标受阻、任务失败等需要人介入事件的注意提示音,支持内置合成音、语音播报与自定义音频。

安装

dsh plugin --profile web add github:ldchaowin/dsh-plugin-notify-sound

README

dsh-plugin-notify-sound

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):

EventDetectionDefault sound
Approval requestsession pendingInteraction: approvalgeneric attention sound
User questionpendingInteraction: questiongeneric attention sound
Plan reviewpendingInteraction: plan-reviewgeneric attention sound
Goal blockedgoal projection enters blockedgeneric attention sound
Background task failurejob status failedBell (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)

  1. Copy this package and its runtime deps (@deepseek-ai/schemastery, @deepseek-ai/cosmokit, @standard-schema/spec) into $DSH_HOME/profiles/web/node_modules/.
  2. Append "dsh-plugin-notify-sound" to dsh.profile.bundles in $DSH_HOME/profiles/web/package.json.
  3. 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-sound settings namespace: on rc.6 the settings API allowlist (WEB_SETTINGS_NAMESPACES in dsh-host-apiproxy) does not expose third-party namespaces to browsers, so the client does not depend on settingsScope today; 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 panel
  • lib/types/index.d.ts — host-side type declarations
  • cordis.patch.yml — bundle patch layer (inserts the notify-sound row)
  • tools/ — tests and verification scripts (not shipped in the npm package)

Publish

npm login                       # npm account (2FA recommended)
npm publish --access public

License

MIT

相关插件