Bundle
@hto404/dsh-chime
Task-completion notification chime for the dsh web GUI: plays a sound when a root agent turn finishes, even while the tab is in the background. Persistent host+client plugin with 10 preset sounds, custom sound import, volume control and a Settings > Plugins panel.
- Source
- HtO404
- stars
- 1 stars
- License
- Apache-2.0
- Updated
- Updated 2 days ago
Readme
<div align="center">

[](https://www.npmjs.com/package/@hto404/dsh-chime)
[](https://www.npmjs.com/package/@hto404/dsh-chime)
[](https://github.com/HtO404/dsh-chime)
[](LICENSE)
[](https://github.com/topics/dsh-plugin)
[](https://github.com/HtO404/dsh-chime)
**A task-completion chime for the [DeepSeek Harness](https://github.com/deepseek-ai/dsh) (DSH) Web GUI.**
The moment a root agent turn finishes, it rings — **even while the tab is in the background**. Stop watching the task list; it will tell you the second you're done.
</div>
---
### Contents
[Features](#features) · [Quick Start](#quick-start) · [Usage](#usage) · [How It Works](#how-it-works) · [Presets](#presets) · [FAQ](#faq) · [Support](#support) · [Agent Install](#agent-install)
---
> You kicked off a 20-minute task, then switched tabs to watch a video.
> 20 minutes later you come back: the task finished **long** ago — and you have no idea when.
>
> — dsh-chime exists to fill that one second.
---
## Features
<table>
<tr>
<td width="33%" align="center"><b>⏱ Rings in the background</b><br/><sub>Web Audio playback; works when the tab is hidden</sub></td>
<td width="33%" align="center"><b>🎵 10 curated presets</b><br/><sub>Seeded on first run, ready out of the box</sub></td>
<td width="33%" align="center"><b>📂 Bring your own sound</b><br/><sub>wav / mp3 / ogg — use your own audio</sub></td>
</tr>
<tr>
<td width="33%" align="center"><b>🔊 Volume control</b><br/><sub>0–100% slider, preview on release</sub></td>
<td width="33%" align="center"><b>⚙️ One panel, everything</b><br/><sub>Settings → Plugins, preferences persist</sub></td>
<td width="33%" align="center"><b>♻️ Survives restarts</b><br/><sub>Auto-starts with DSH; settings shared across Web & DSH Desktop</sub></td>
</tr>
</table>
---
## Quick Start
### Option 1 — npm
```powershell
dsh plugin --profile web add @hto404/dsh-chime
```
### Option 2 — local folder
```powershell
dsh plugin --profile web add link:C:\path\to\dsh-chime
```
### Option 3 — manual
Place `dsh-chime` under `node_modules/@hto404/` in your web profile, then append to `~/.dsh/cordis.patch.yml`:
```yaml
- insert:
- id: chime
name: '@hto404/dsh-chime'
```
Restart DSH (`start-dsh.bat`).
**Using [DSH Desktop](https://github.com/anywhere-labs/deepseek-harness-desktop)?** Install into the desktop profile instead:
```powershell
dsh plugin --profile desktop add @hto404/dsh-chime
```
Settings are stored host-side (`~/.dsh/dsh-chime/prefs.json`), so your volume, mute state and chosen sound are **shared across every environment** — switch between the Web profile and DSH Desktop without re-configuring.
---
## Usage

**Live demo** — try the controls yourself: [docs/demo.html](docs/demo.html)

1. Restart DSH and open the Web GUI.
2. Go to **Settings → Plugins →「🔔 任务完成提示音」**.
3. Pick a preset, import your own sound, drag the volume, or mute — all applied and saved instantly.
4. From then on, every finished task rings — even in a background tab.
> Didn't hear anything the first time? Click **测试声音** once to unlock the browser's autoplay policy — everything works after that.
---
## How It Works

| Role | What it does |
| --- | --- |
| **Host** `lib/index.js` | Listens to `agent/status`; queues a notification when a root agent turns `idle`; serves `/dsh-chime/poll`, `/dsh-chime/presets`, `/dsh-chime/preset-audio` |
| **Client** `lib/client.js` | Polls `/dsh-chime/poll` every 2s; plays the selected sound with Web Audio; the control panel lives in the `settings.plugin.item` slot |
**Rule of thumb**: only **root agents (main sessions)** trigger the chime — intermediate subagent completions don't. A long task with a dozen subagents won't ping you mid-way; you hear it only when the final result lands.
---
## Presets
Preset directory: `$DSH_HOME/dsh-chime/sounds` (default `~/.dsh/dsh-chime/sounds`). The 10 bundled sounds are seeded there on first run. Drop any mp3/wav/ogg into that folder and restart the plugin to add your own.
| Preset | Vibe |
| --- | --- |
| 01-欢快铃声 · Cheerful Bell | Light and pleasant, like good news arriving |
| 02-双声蜂鸣 · Double Beep | Classic electronic, no-nonsense |
| 03-消息弹出 · Message Pop | Short and light, presence without noise |
| 04-确认音 · Confirmation | Steady and assured, the ritual of finishing |
| 05-数字短音 · Quick Tone | One crisp note, unmistakable |
| 06-快速叮咚 · Fast Ding | Bright and loud, hardest to miss |
| 07-气泡通知 · Bubble Pop | Playful, a little cute |
| 08-清亮提示音 · Clear Chime | Airy and mellow, for softer tastes |
| 09-吉他通知 · Guitar Alert | A warm chord, like someone calling you |
| 10-游戏成功 · Game Win | A rising sense of victory — task done! |
Bundled sounds come from [Mixkit Free Sound Effects](https://mixkit.co/free-sound-effects/alerts/) under the [Mixkit License](https://mixkit.co/license/) (free for commercial use).
---
## FAQ
<details>
<summary><b>The task finished but nothing rang — why?</b></summary>
Check, in order:
1. Is **Mute** on, or the volume dragged to 0?
2. Was it a **subagent**? dsh-chime only rings for root agents (main sessions).
3. Did the browser block autoplay? Click **测试声音** once to unlock it.
</details>
<details>
<summary><b>Can I hear it while the tab is in the background?</b></summary>
Yes. Web Audio playback doesn't depend on page visibility — that's the whole point of dsh-chime.
</details>
<details>
<summary><b>How do I use my own sound?</b></summary>
Two ways: click **导入声音** in the panel and pick a local audio file, or drop an mp3/wav/ogg into the preset directory — it appears in the dropdown after a plugin restart.
</details>
<details>
<summary><b>Do I need to re-enable it after a DSH restart?</b></summary>
No. dsh-chime is a static, composition-mounted plugin — it starts automatically with DSH, and your sound settings persist.
</details>
<details>
<summary><b>My settings don't carry over between the Web profile and DSH Desktop?</b></summary>
They do — since v0.1.2 the plugin keeps its preferences host-side in `~/.dsh/dsh-chime/prefs.json` (exposed via `/dsh-chime/prefs`), so volume, mute and the chosen sound are shared by every environment that mounts the plugin. If an old page still shows defaults, reload the page (or restart DSH Desktop).
</details>
---
## Agent Install
Running an AI agent and want it to install this plugin for you? Point it at the instructions:
👉 **[AGENT-INSTALL.md](docs/AGENT-INSTALL.md)** — starts with "Agent,看这里" and walks any agent through installing this repo into DSH end-to-end.
---
## Support
<div align="center">
**If it saved you from one extra glance at the task list —**
give it a ⭐ so more people who've been walked around by their agents find it.
> The point of a tool is to give your attention back to yourself.
> The eyes that used to watch the task list can rest now.
</div>
---
<div align="center">
[Apache-2.0](LICENSE) · Made for [DeepSeek Harness](https://github.com/deepseek-ai/dsh) · Sounds from [Mixkit](https://mixkit.co)
</div>
Install
dsh plugin --profile web add github:HtO404/dsh-chime
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install hto404-dsh-chime from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.