yangzhe1991/dsh-task-notify
DSH插件:任务完成时播放提示音并更新标签标题提醒
项目介绍Project Overview
dsh-task-notify 是 DSH 浏览器插件,监听代理会话中的回合结束与后台任务完成事件,通过合成双音提示音(成功为升调 do→mi,失败或中止为降调 mi→do)和切走标签页时修改网页标题为「🔔 N 个任务完成 — 原标题」来提醒用户。适用于多任务并行、需切换标签页等待代理返回的场景。注意事项:浏览器自动播放策略要求首次点击或按键页面后才可发声,标题提示不受此限。
dsh-task-notify is a DSH browser plugin that alerts users when an agent turn or background job finishes in their session. It plays a synthesized two-tone chime (ascending do→mi on success, descending mi→do on failure or abort) and rewrites the tab title to "🔔 N tasks done — <original>" while the page is hidden. Use it when juggling multiple tabs or background work and waiting for agent output. Caveat: browsers require a one-time click or keypress on the page to unlock audio; the title alert is never affected.
请帮我了解并安装插件:【dsh-task-notify】【https://github.com/yangzhe1991/dsh-task-notify】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add @yangzhe1991/dsh-task-notify
把 yangzhe1991/dsh-task-notify 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-task-notify
A DSH (DeepSeek Harness) browser plugin that tells you when your agent finishes work — a completion chime, and a tab-title alert while you are on another tab.
Install (30 seconds)
Prereqs: the dsh CLI (DeepSeek Harness).
dsh plugin --profile web add @yangzhe1991/dsh-task-notify
Then restart the Web GUI and refresh the browser tab. That's it — the package ships prebuilt artifacts, so nothing compiles on your machine and no allowlist is needed. dsh plugin auto-appends the bundle to your profile's dsh.profile.bundles.
Other install methods (usually not needed):
Method Command Builds on install Notes npm registry (recommended) dsh plugin --profile web add @yangzhe1991/dsh-task-notifyNo Prebuilt, quickest tarball dsh plugin --profile web add ./dsh-task-notify-0.1.0.tgzNo Offline-friendly git dsh plugin --profile web add github:yangzhe1991/dsh-task-notifyYes (via prepare)Requires one-time allowBuildsinpnpm-workspace.yaml
What it does
- 🎵 Completion chime — a synthesized two-tone chime (no audio files) when:
- an agent turn finishes in your current session (normal reply, error, or abort) — this covers ordinary conversations;
- a background job settles in any session (
completed/failed/killed— background bash/pwsh, subagents, workflows, …). - Success: ascending do → mi. Failure / kill: descending mi → do.
- 🔔 Tab-title alert — while the page is not the active tab (
document.hidden), a finished task changes the title to🔔 N 个任务完成 — <original title>; switching back to the tab restores it. - ✅ No false positives — switching sessions, loading history, or refreshing the page never re-alerts for old turns. Only work that actually finishes while you are watching the current session triggers.
First-run note: click the page once
Browsers block audio until the user has interacted with the page (autoplay policy). Click or press a key anywhere in the page once — chimes are unlocked from then on. The tab-title alert is never affected.
FAQ
Q: I finished a task but heard nothing. A: You likely haven't interacted with the page yet (see above), or the task was a plain foreground tool call — those don't trigger; only agent turns and background jobs do.
Q: It beeped when I switched to another session.
A: That was a bug in early versions, fixed since — old turns in the newly opened session were mistaken for fresh completions. Update the plugin (dsh plugin --profile web update @yangzhe1991/dsh-task-notify) and refresh the page; only turns that finish while you're in the session will alert now.
Q: Which tasks exactly trigger the chime? A: (1) The agent completing a turn in your current session — every round of work, whether it answered, errored, or was aborted; (2) any background job settling in any session.
Q: Can I change the sound or turn things off? A: See Customization below.
Q: What does the plugin actually install?
A: A profile bundle: a config layer (cordis.patch.yml) plus a browser-half bundle (lib/client.js) that the DSH web app discovers automatically — no manual configuration, no UI added.
Customization
Tunables live at the top of src/client/index.tsx; edit and re-run npm run build (or send a PR 🙂).
| Constant | Default | Meaning |
|---|---|---|
SOUND_ENABLED |
true |
Play the chime on completion |
TITLE_ENABLED |
true |
Change the tab title while hidden |
ALERT_PREFIX |
'🔔' |
Prefix of the alert title |
Development
git clone git@github.com:yangzhe1991/dsh-task-notify.git
cd dsh-task-notify
npm install
npm run build # produces lib/index.js (node half) + lib/client.js (browser half)
npx tsc --noEmit # type-check
├── package.json # dsh.bundle (profile config layer) + dsh.client (browser half) declarations
├── cordis.patch.yml # plugin-row config layer
├── build.mjs # esbuild build: node half + browser half
├── src/
│ ├── index.ts # node half (empty apply placeholder)
│ └── client/index.tsx # browser half: turn/job listeners, chime, title alert
└── lib/ # build output (gitignored)
Uninstall
dsh plugin --profile web remove @yangzhe1991/dsh-task-notify
License
MIT
ruvnet/ruflo
amruthpillai/reactive-resume
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/colleague-skill
nocobase/nocobase
Tencent/WeKnora
anywhere-labs/deepseek-harness-desktop