Kreatur-ECHO/dsh-task-complete-notifier ↗★ 1
dsh-task-complete-notifier
任务完成置顶通知与音效提醒插件 适合需要在任务结束时获得弹窗或声音提醒,并直接输入下一步指令的用户。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Kreatur-ECHO/dsh-task-complete-notifier说明文档
阅读完整 README ↗⚙️ Configuration
Add config to the plugin's mount row in your profile's cordis.patch.yml (id-targeted override):
- id: task-complete-notifier
config:
title: '✓ Task Completed' # title text
body: 'The current DeepSeek Harness task has finished. Please proceed to the next step.' # body text
settleMs: 3000 # confirm delay after idle (guards against goal-round false positives)
cooldownMs: 10000 # minimum gap between toasts
autoCloseMs: 60000 # auto-close timeout
placeholder: '输入下一步指令,Enter 发送…' # input placeholder
sendLabel: '发送' # submit button label
laterLabel: '稍后' # dismiss button label
soundEnabled: true # default sound state (card button overrides it and persists)
soundToggleTitle: '音效开关' # sound button tooltip
soundFile: '' # custom sound file (absolute path to an mp3/wav/ogg/m4a)
soundVolume: 1.0 # sound volume 0~1
🎛️ Full configuration reference
Every key lives under config: in the plugin's mount row. All keys are optional — omit any key to use its default.
| Key | Type | Default | What it does |
|---|---|---|---|
title | string | '✓ Task Completed' | Title text at the top of the card |
body | string | 'The current DeepSeek Harness task has finished. Please proceed to the next step.' | Body text |
settleMs | number | 3000 | Wait after the idle edge before showing the card — guards against goal-round false positives |
cooldownMs | number | 10000 | Minimum gap between two toasts |
autoCloseMs | number | 60000 | Auto-close timeout for the card |
placeholder | string | '输入下一步指令,Enter 发送…' | Input box placeholder |
sendLabel | string | '发送' | Submit button label |
laterLabel | string | '稍后' | Dismiss button label |
soundEnabled | boolean | true | Default sound state; the card's 🔊/🔕 button overrides it and persists |
soundToggleTitle | string | '音效开关' | Tooltip for the sound button |
soundFile | string | '' | Absolute path to your own sound file (mp3/wav/ogg/m4a); empty = built-in ding |
soundVolume | number | 1.0 | Sound volume, 0–1 (e.g. 0.5 = half volume) |
🔔 Custom sound
By default the toast plays a built-in synthesized "ding". You can replace it with your own audio file — set soundFile to an absolute path of any Chromium-supported audio (mp3 / wav / ogg / m4a …):
- id: task-complete-notifier
config:
soundFile: 'D:\Music\my-notification.mp3'
soundVolume: 1.0
The host half serves that file to the card over the same-origin /task-notifier/sound route (loopback-fenced). Leave soundFile empty to fall back to the built-in ding. The sound fades in over 0.1s and starts 0.1s early so the fade doesn't feel delayed.
🔊 Volume
soundVolume scales loudness from 0 (silent) to 1 (full). Use 0.5 for half volume — handy when the default ding or your custom sound is too loud. It applies to both the built-in ding and a custom soundFile:
- id: task-complete-notifier
config:
soundVolume: 0.5 # 50% volume
🎛️ Full configuration reference
Every key lives under config: in the plugin's mount row. All keys are optional — omit any key to use its default.
| Key | Type | Default | What it does |
|---|---|---|---|
title | string | '✓ Task Completed' | Title text at the top of the card |
body | string | 'The current DeepSeek Harness task has finished. Please proceed to the next step.' | Body text |
settleMs | number | 3000 | Wait after the idle edge before showing the card — guards against goal-round false positives |
cooldownMs | number | 10000 | Minimum gap between two toasts |
autoCloseMs | number | 60000 | Auto-close timeout for the card |
placeholder | string | '输入下一步指令,Enter 发送…' | Input box placeholder |
sendLabel | string | '发送' | Submit button label |
laterLabel | string | '稍后' | Dismiss button label |
soundEnabled | boolean | true | Default sound state; the card's 🔊/🔕 button overrides it and persists |
soundToggleTitle | string | '音效开关' | Tooltip for the sound button |
soundFile | string | '' | Absolute path to your own sound file (mp3/wav/ogg/m4a); empty = built-in ding |
soundVolume | number | 1.0 | Sound volume, 0–1 (e.g. 0.5 = half volume) |