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:

  1. Audio prompts: Uses the Web Audio API to generate pentatonic scale notification sounds without loading external audio files.
  2. 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.
  3. 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.
  4. Remote IM Webhooks: Sends JSON-formatted Webhook requests to Feishu, WeCom, DingTalk, Slack, Discord, or custom endpoints.
  5. 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.
  6. 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

  1. Runtime environment: The plugin requires Node.js 20 or a newer version.
  2. 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.
  3. 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.
  4. 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.