Sound + popup when a task completes: a Web Audio chime, an in-page toast, and a system notification while the page is in the background (browser-only, cross-platform).
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-complete-notify
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:kaixinbaba/dsh-complete-notify
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. Only install sources you trust, and pin a commit (github:owner/repo#sha).
README
DeepSeek Harness(DSH)任务完成通知插件:任务完成时播放提示音并弹出小通知。
- 纯浏览器方案:音效用 Web Audio 合成、弹窗是页面内 toast、页面在后台时改用系统通知(Web Notification API)——零系统依赖、零音频文件,Windows / macOS / Linux 通用
- 不依赖任何系统通知命令(无 osascript / notify-send / PowerShell),通知权限是浏览器站点级授权,授权一次即可
- 与官方运行指示灯同源的完成检测:会话列表快照的
running/completed状态
安装
dsh plugin --profile web add link:/path/to/dsh-complete-notify
# 重启 dsh web 生效(launchd 托管时):
launchctl kickstart -k gui/$(id -u)/com.dsh.dsh-web
使用
- 任务完成后:听到「叮咚」提示音 + 右上角弹出「✓ 任务完成」小卡片(含会话标题,点击跳转到该会话,5 秒自动消失)
- 页面切到后台/其他标签页时完成任务:收到系统通知(点击通知会聚焦窗口并打开对应会话)+ 提示音 + 标签页标题闪烁
- 设置 → 任务完成通知:
- 启用提醒 / 提示音 / 系统通知(页面在后台时)开关、音量滑块
- 「测试音效」「测试通知」按钮;首次点「测试通知」会请求浏览器通知权限,点允许
- 全部设置保存在浏览器 localStorage(
dsh.completeNotify.v1)
行为细节
| 场景 | 行为 |
|---|---|
| 页面可见,任一会话完成 | toast + 音效 |
| 页面在后台,会话完成 | 系统通知 + 音效 + 标题闪烁 |
| 系统通知权限被拒 | 降级为长时 toast(30 秒,回来也能看到)+ 标题闪烁 |
| 一次完成 | 只提醒一次(按会话去重,重新运行后再完成会再次提醒) |
| 子代理(subagent)会话 | 不提醒 |
| 多会话同时完成 | toast 栈最多 3 条(FIFO) |
已知限制
- 标签页必须开着(浏览器限制);标签页关闭后系统通知也收不到。如需关页推送可后续接 Push API(需推送服务器)
- v0.1 不区分任务成功/失败,统一「任务完成」;后续可从会话快照的
turn/endreason 上色 - toast 为深色样式,暂未跟随明暗主题切换
- 浏览器自动播放策略:首次用户交互(点击/按键)后音效才可用——DSH 里发第一条消息时即自然解锁
开发
node --test tests/ # 完成检测状态机单测(通过 stub 执行同一份 client/client.js)
npm run check # 语法检查
结构:
lib/index.js # 宿主半空壳(无逻辑)
client/client.js # 客户端单文件(DSH 模块加载器格式;全部逻辑在此)
cordis.patch.yml # bundle insert 声明
tests/ # node --test 单测
卸载
dsh plugin --profile web remove dsh-complete-notify
License
MIT
Links
More in this category
omdsh-dev/dsh-notification★ 52
Desktop notifications for turn completions, with per-outcome controls and keyword rules.
omdsh-dev/dsh-open-in-vscode★ 45
Open DSH workspace directories in VS Code directly from the web GUI.
whyihaveyou/dsh-suite#plugin-notify★ 38
IM webhook and local notifications on turn completion, errors, or approval (Feishu/WeCom/DingTalk/Slack/Discord/custom).
THEWOLFWALKER/dsh-notifier★ 30
Unified notification & remote control for DSH: one `notify()` API, 25+ channels (Telegram / DingTalk / Feishu / WeCom / QQ bot / WxPusher / PushPlus / ServerChan / Bark / Discord / Slack / ntfy / webhook...), level routing (timeSensitive / active / passive) with tiered retry, multi-channel inbound approval (Telegram buttons, Feishu cards, QQ, WxPusher, WeChat iLink), official QR login for QQ/DingTalk/Feishu, a local web admin console, multi-agent routing, desktop notifications — and a mobile command center: `!status` / `!stop` / `!retry` agent control from your phone plus actionable notifications (view result / retry / logs buttons that call back into the agent). Secrets redacted, tool rate-limited, zero runtime deps — plus an open event source: other plugins can inject the notifier service (ctx.notifier) and subscribe to dsh-notifier/sent events, reusing notification without coupling.
omdsh-dev/dsh-lark★ 23
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.
bill9109/dsh-web-ui-notify★ 17
Desktop notification reminders.