Preface

During DSH session execution, multiple types of events requiring human attention are continuously generated: pending approvals, waiting for replies, background job completion, subagent termination, and workflow completion. If you only check status in the current webpage, it’s easy to miss events after switching windows.

dsh-task-notify pushes these events to the browser’s system notification center and provides an in-app bell panel, Toast overlay, and cleanup entry points, allowing you to stay aware of critical status even when you leave the current page.

What This Is

dsh-task-notify is a DeepSeek Harness (DSH) client plugin maintained by kaotusi, licensed under MIT.

It addresses the notification problem during DSH operation: pushing events such as approvals, reply waiting, and task completion to the system notification center, while retaining an in-app bell panel, Toast, diagnostic status, and cleanup buttons.

Core Features

The following are the main capabilities it provides.

  • Listens to the following events:
  • approval/request
  • agent/turn-stopping
  • subagent/end
  • workflow/end
  • Background job onJobDone
  • Pushes unread notifications to the browser’s system notification center via the Notification API, and plays categorized Web Audio synthesized alert tones.
  • Provides an in-app bell panel, Toast overlay, test notification, resend, mark all as read, and cleanup buttons.
  • The panel header displays a diagnostic row showing system notification permission, mounting, and polling status.
  • The host composite row listens to all session events, with an in-process queue capped at 300 entries.
  • The client polls via endpoints such as /api/taskNotify/pull, uses localStorage for deduplication, and pushes at most 3 new notifications per round.
  • Registers the taskNotify Remote service, including pull, ack, clear, purge, and diag.
  • Registers the ntfy_status diagnostic tool.
  • Provides bilingual Chinese/English interface, following the DSH locale.

Installation and Activation

Node.js and pnpm are required before installation. The dsh plugin command invokes pnpm under the hood.

First, run the following command to install the plugin:

dsh plugin --profile web add git+https://github.com/kaotusi/dsh-task-notify.git

If your actual profile name is not web, replace --profile web with your actual profile name.

After installation, restart dsh web and then refresh the page.

If your network has unstable access to github.com, you can configure a proxy first, or follow the manual copy method described in the repository README. When copying manually, the directory name must be exactly dsh-task-notify and located under the @deepseek-ai/ scope.

Typical Usage

Enable notification permission:

  1. Restart dsh web and refresh the page.
  2. Click the bell icon at the bottom of the sidebar.
  3. Choose “Allow” in the browser’s notification permission dialog.
  4. Verify that the diagnostic row at the top of the panel shows System Notification: granted.

Verify notifications:

  1. Trigger a background job, approval, subagent, or workflow.
  2. Check whether a corresponding banner appears in the browser’s system notification center.
  3. Confirm whether the alert tone plays.
  4. View the notification list in the in-app bell panel.

Clean up notifications:

Click the “Clean” button in the panel to clear all notifications from both the panel and the host queue.

Applicable Scenarios and Notes

Suitable for scenarios where DSH runs tasks requiring approvals, waiting for replies, background jobs, subagents, or workflows—especially when the page is not in the foreground, window switching is frequent, and you need to promptly identify statuses where “action is needed from you.”

Notes before use:

  • The plugin runs with the permissions of the current dsh process. Review the source code, dependencies, and license before installation.
  • Browser notification permission is required. After authorization, the diagnostic row should display granted.
  • The host queue is capped at 300 entries.
  • The client pushes at most 3 new notifications per round, with pushed IDs deduplicated via localStorage.
  • After modifying plugin files, restart the Harness for changes to take effect; the typert manifest is cached by package name.
  • peerDependencies include:
  • @deepseek-ai/cordis
  • @deepseek-ai/dsh-tools
  • @deepseek-ai/dsh-typert-protocol
  • react
  • zod
  • The client RPC intentionally uses the low-level connection seam, such as /api/taskNotify/pull. Do not fall back to ctx.remote.<ns> calls.

Conclusion

dsh-task-notify extends events requiring human attention in DSH to system notifications, while retaining in-app panels, Toast, diagnostics, and cleanup entry points.

Repository address:

https://github.com/kaotusi/dsh-task-notify