Task-completion chime for DeepSeek Harness, playing the original opencode sounds for done, question, plan-review and error events with zero external dependencies.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-chime
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:xiaxingtianxia2-glitch/dsh-chime
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
dsh-chime
What is this
Replicates opencode's task-completion chime inside DeepSeek Harness: a crisp notification sound when a turn finishes, when the agent asks you a question, when a plan is submitted for review, or when a turn ends in error. All three sources are the original mp3 files from the opencode repository, embedded losslessly (base64 inside the client bundle). The plugin is fully self-contained with zero external dependencies.
How it works
- Host half (Cordis bundle entry) listens to
agent/status(arunning → idletransition means a turn finished; error-marked turns play the error sound) andtools/execute(queues the question sound the moment theask_user_questionquestion tool or theexit_plan_modeplan tool starts), enqueueing sounds as needed; - webServer routes:
/chime/pollserves the pending queue,/chime/debugexposes status and a listen-through entry; - Client half (browser) polls
/chime/pollevery 250 ms and plays the embedded base64 sources viaAudio.
Sounds
| Sound | Trigger | Source (original opencode) |
|---|---|---|
| done | a turn finishes | bip-bop-01.mp3 |
| question | the question dialog appears / a plan is submitted for review | yup-01.mp3 |
| error | a turn ends in error | nope-03.mp3 |
Install
dsh plugin --profile web add dsh-chime
Or install from the GitHub source (identical content):
dsh plugin --profile web add github:xiaxingtianxia2-glitch/dsh-chime
Restart dsh web after install (the client channel is scanned at startup). This plugin listens at host level — every agent/session (including subagents) triggers it on completion.
Usage
Nothing to do — it just works. Listen and debug:
curl http://127.0.0.1:3080/chime/debug
{"pendingCount":0,"recent":["done","question"],"runningCount":1}
recent = recent enqueue history; pendingCount = queue length (consumed by
the client every 250 ms); runningCount = live agent count.
Listen to a specific sound:
curl http://127.0.0.1:3080/chime/debug?play=done # done | question | error
FAQ
- No sound? Check the system volume and that the browser tab is not muted;
then visit
/chime/debug?play=doneto test. If it enqueues but does not play, refresh the page to reload the client player. - Subagent completions also chime? Yes — host-level listening covers all
agents, matching opencode semantics. Uninstall to stop:
dsh plugin --profile web remove dsh-chime. - Question sound missing? The question sound triggers when the question
tool starts (the moment the dialog appears); the plan-review sound
triggers when the
exit_plan_modetool starts. Non-standard question/plan channels that do not go through these tools will not trigger it. - Still active after restart? Yes — bundle plugins are assembled from the profile on startup.
License
Links
More in this category
xmanrui/dsh-im★ 1597
Connect IM bots to DeepSeek Harness via QR codes or bot credentials (9 channels: Feishu, WeChat, DingTalk, WeCom, QQ, Slack, Telegram, Discord, and WhatsApp).
shaobeichen/dsh-pocket★ 1521
Remote phone access to the DSH Web UI: scan a QR code for LAN or public (cloudflared tunnel) access with real-time sync, a mobile-adaptive layout, and a settings tab.
inclusionAI/Avernet#deepseek-harness-channel-bcn★ 658
Connects DeepSeek Harness to Avernet's Bot Collaboration Network over WebSocket V2, with automatic onboarding, isolated agent sessions, tool-call events, and multi-bot routing tools.
omdsh-dev/dsh-notification★ 85
Desktop notifications for turn completions, with per-outcome controls and keyword rules.
whyihaveyou/dsh-suite#plugin-notify★ 56
IM webhook and local notifications on turn completion, errors, or approval (Feishu/WeCom/DingTalk/Slack/Discord/custom).
omdsh-dev/dsh-lark★ 55
Lark/Feishu bot channel for DeepSeek Harness: each chat drives its own agent, and tool approvals, model questions, and plan reviews return as cards answered by a button or a reply. Switch workspace and model from the chat (`/cd`, `/model`, `/new`), and run several bots that keep separate sessions and can hand turns to each other in one group.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.