Preface¶
Running long tasks in DeepSeek Harness (DSH) often leads to switching away to do other things, only to realize upon returning that it finished long ago. More commonly, an Agent is waiting for you to reply, review a plan, or approve something, but you momentarily forget which session is blocked. The plugin introduced below, “Task Notifier” (polunzh/dsh-task-notifier), solves this: it synthesizes a chime at the end of each session round, sends browser or system notifications, and provides a three-column dashboard in the sidebar to easily filter pending replies, running tasks, and completed unread tasks.
Positioning¶
- Type: DSH Web Plugin, package name
@polunzh/dsh-task-notifier, current version1.2.0. - Maintainer: polunzh; 0 GitHub Stars; License: MIT.
- Dependencies:
engines.dshrequires>= 0.2.0-rc.2, Node>= 20. - Solves: Pushes “Task Completed” and “Waiting for You to Handle” events to where you can see them, rather than making you manually flip through the session list.
Core Features¶
Session End Sound¶
At the end of any session round, the browser synthesizes an upward chime (G5→C6), no audio assets need to be prepared. The panel provides a “Preview Sound” button to listen directly.
Dual-Channel Notifications¶
Notifications are sent via two channels, using a heartbeat mechanism to check for duplicates and prevent double sending:
- Page is open and browser notifications are authorized → Uses browser
Notification, clicking jumps back to the corresponding session. - Page is closed or notifications are not authorized → Host uses
osascriptto trigger system notifications on macOS.
Pending Reply Status¶
When the Agent asks you a question, waits for plan review, or waits for approval, the sidebar icon lights up with an amber pulsing dot, and the panel “Pending Reply” column is highlighted. Clicking opens directly to the session waiting for your decision.
Three-Column Dashboard Panel¶
Opening the task panel via the sidebar icon (with an unread badge) displays three columns at once:
- Pending Reply: Sessions waiting for your input.
- Running: Tasks currently executing.
- Completed Unread: Tasks finished but not yet opened.
Top chips allow filtering a specific column individually, and the “Completed Earlier” at the bottom expands history. The panel supports searching by title, marking all as read, previewing the sound, and testing system notifications.
No Lost Unreads¶
State is written to $DSH_HOME/storages/dsh-task-notifier/state.json and persists after restart. Directory permissions 0700, file permissions 0600.
Bilingual Support¶
Panel and system notification text follows the host language (zh / en).
Installation & Activation¶
Four installation methods, choose based on your scenario.
Method 1: Open Plugin Market (Recommended, can like in market)¶
Enter “Plugins → Experimental Plugins” in DSH, open “Custom Plugin Market”, then go to “Discover → Add Index Source”, paste:
https://dshopen.org/index.json
Then search for “Task Notifier / 任务通知台” to install. This market is categorized as “Workflow & Collaboration,” and the plugin has passed source-level verification. See dshopen plugin page.
Method 2: Self-hosted Index Installation (Can auto-detect updates)¶
Paste at “Discover → Add Index Source” as well:
https://dsh.127.dev/index.json
When a new version exists, the list will show it as updateable. Uninstalling is done in “Installed”. Index refreshes every 6 hours with npm. Source code at dsh-plugins-index.
Method 3: npm Installation¶
dsh plugin --profile desktop add @polunzh/dsh-task-notifier
Method 4: Local Directory Installation (Development/Debugging)¶
Use install_bundle from plugin_manager in DSH, fill target with the absolute path of this repository.
Configuration¶
All configuration items can be omitted, just write them in the profile’s cordis.patch.yml:
- insert:
- id: polunzh-task-notifier
name: '@polunzh/dsh-task-notifier'
config:
osNotify: auto # auto | always | off
sound: true # Browser-side chime switch
osSound: Glass # macOS system chime name
osTitle: DeepSeek Harness # System notification title
| Field | Default | Description |
|---|---|---|
osNotify |
auto |
auto=Page online leaves it to browser notifications, offline falls back to system notifications; always=Constantly send system notifications; off=No notifications |
sound |
true |
Browser synthesized chime |
osSound |
Glass |
macOS built-in chime name (Glass / Ping / Pop, etc.) |
osTitle |
DeepSeek Harness |
System notification title |
Typical Usage¶
Combining the panel and notifications, the full flow is:
- Start a long task in DSH, switch away to do other things.
- Hear the chime when the task round ends, and receive a browser notification (page open) or macOS system notification (page closed).
- Open the sidebar task panel, first check the “Pending Reply” column for blocked sessions, then use the top chip to switch to the “Completed Unread” column to view results.
- Click the notification or item in the panel to jump directly back to the corresponding session to continue.
To make system notifications more prominent, set osNotify to always and change the sound name with osSound; if you want to be completely undisturbed, set osNotify: off and sound: false.
Scenarios & Notes¶
Applicable Scenarios:
- Run long tasks in DSH frequently and want to know completion immediately.
- Sessions are blocked waiting for replies, reviews, or approvals, and need quick location.
- Access via Web UI cross-platform and mainly receive system notifications on macOS.
Notes:
- Plugin runs with the permissions of the current dsh process. Check source code and MIT license before enabling, especially when installing from third-party index sources.
- System notifications currently only support macOS (
osascript). Other platforms only send browser notifications. - Browser notifications require manual user authorization. The plugin will not request permission in the background.
- Privacy: The plugin has no outbound requests, telemetry, or remote resources. Session titles are local-only. Does not read
~/.dsh/.credentials.yaml,.env, keychain, or SSH keys. Nopreinstall/postinstall/preparescripts inpackage.json. - Since 1.1.1, the browser module ID has changed to the package name
@polunzh/dsh-task-notifier, and the patch row ID has changed topolunzh-task-notifier. If you previously installed usinglink:or version 1.1.0 or earlier, please keep only one copy: Uninstall the old version in “Plugins → Installed” first, then install the new version.
Conclusion¶
Task Notifier does not change DSH’s task execution logic; it just pushes “Completed” and “Pending Reply” events—easy to miss—where you can see them. If you are often interrupted by long tasks and blocked sessions, it is worth installing to try.
Directory page: skillhub directory page; Open source repo: GitHub: polunzh/dsh-task-notifier.