Introduction¶
DeepSeek Harness (DSH) can capture specific events in a session, such as task completion, errors, or pending approval. Without external intervention, these events only exist in the current session or window. If you run multiple parallel sessions at the same time, or minimize windows to the background, these events can easily be missed.
The goodandready/dsh-plugin-notify plugin is designed to solve this isolation problem. It extends event feedback from inside the session to outside the browser through five flexible notification layers.
Plugin Overview¶
The plugin is named @goodandready/dsh-plugin-notify, maintained by GooDAnDReaDY, and categorized as an online tool. It provides features such as audio prompts, cross-session pop-ups, native desktop pushes, remote IM Webhooks, and Web Push (PWA), covering scenarios such as task completion, errors, and pending approval.
Core Features¶
The plugin mainly provides the following capabilities:
- Audio prompts: Uses the Web Audio API to generate pentatonic scale notification sounds without loading external audio files.
- Cross-session pop-ups: Displays a floating banner on the screen. The banner includes a “Jump to session” button that can jump directly to the specific session that triggered the event.
- Desktop/OS pushes: Sends native notifications on Windows, macOS, Linux, and DSH Desktop through the HTML5 Notification API. Clicking a notification can focus the window or switch sessions.
- Remote IM Webhooks: Sends JSON-formatted Webhook requests to Feishu, WeCom, DingTalk, Slack, Discord, or custom endpoints.
- Web Push (PWA): Uses the W3C Push API and Service Workers to implement background pushes, allowing notifications to be received even if the browser tab is closed. This feature requires an HTTPS environment or localhost.
- Other features: Supports Do Not Disturb (DND) window settings, excludes specific session prefixes, and provides a real-time notification stream through Server-Sent Events (SSE).
Installation¶
Install using the DSH Web Profile:
dsh plugin --profile web add @goodandready/dsh-plugin-notify
After installation, restart the Web Profile to apply the changes. Then go to Settings → Plugins → Notify to configure the plugin.
Configuration and Usage¶
Webhook Configuration¶
All Webhook URLs must be configured in Settings → Credentials. In the plugin configuration card, only enter the corresponding credential name.
YAML Configuration Example¶
In the plugin configuration YAML, you can enable various notifications and set parameters:
- id: plugin-notify
name: '@goodandready/dsh-plugin-notify'
config:
enableSound: false
enableToasts: false
enableDesktopNotifications: false
notifyBackgroundOnly: false
webhooks:
feishu: NOTIFY_FEISHU_WEBHOOK
wecom: NOTIFY_WECOM_WEBHOOK
dingtalk: NOTIFY_DINGTALK_WEBHOOK
slack: NOTIFY_SLACK_WEBHOOK
discord: NOTIFY_DISCORD_WEBHOOK
custom: NOTIFY_CUSTOM_WEBHOOK
events: [task_done, error, approval_requested]
local: true
timeoutMs: 5000
dnd:
start: ''
end: ''
includeSession: true
includeDuration: true
excludeSessionPrefixes: []
webPush:
enabled: false
onlyWhenAway: true
subject: 'mailto:notify@localhost'
stateFile: ''
VAPID Key Management¶
If using the Web Push feature, VAPID keys are generated by default on first use and persisted. They can also be managed manually through environment variables:
* DSH_NOTIFY_VAPID_PUBLIC_KEY
* DSH_NOTIFY_VAPID_PRIVATE_KEY
Localization¶
The UI supports English and Chinese. The Russian interface is provided by the dsh-russian-lang runtime.
Notes¶
- Runtime environment: The plugin requires Node.js 20 or a newer version.
- Web Push limitations: Web Push requires HTTPS protocol support (except for local development). On iOS devices, the PWA must be added to the Home Screen (iOS 16.4+) to receive background pushes properly.
- Error handling: Failed Webhook requests are only logged; they are not retried and do not block DSH’s agent loop. Invalid subscriptions are cleaned up automatically.
- Style isolation: The injected stylesheet includes the
data-dsh-plugin="dsh-plugin-notify"attribute.
Summary¶
By moving DSH event notifications out of the session, this plugin provides multi-level feedback from local audio to remote IM. By configuring Webhooks, you can integrate automation workflows with existing IM tools and ensure that critical events are noticed promptly.