Preface

When running long tasks in DeepSeek Harness (DSH), the model often needs to complete a full turn, wait for your confirmation, or wait for your reply via an ask-user tool. After switching windows or minimizing, it is easy to miss these nodes. Relying solely on watching the interface is not realistic; connecting reminders to system notifications or group bots is a more common practice.

The following introduces the community plugin dsh-plugin-notify (Maintainer: c-ling): It subscribes to session events on Web and Desktop clients, and sends reminders to in-page banners, desktop/browser native notifications, host machine system notifications, as well as Feishu, DingTalk, WeCom, or generic Webhooks based on configuration. It also provides a “Message Notifications” configuration page in settings.

What is this

dsh-plugin-notify is a message notification plugin for DeepSeek Harness, categorized as a network tool capability (Webhooks and host notifications initiate outbound connections). It applies to DeepSeek Harness 0.2.1+; 0.1.x is no longer a compatibility target. The current package version is v1.4.0, licensed under MIT. The project is open-source on GitHub: c-ling/dsh-plugin-notify; Community directory page: skillhub.cn plugin entry.

The plugin is loaded as a DSH plugin: the host side subscribes to session/event and exposes an authentication API, while the client registers the settings area and in-page reminder UI. Configuration is persisted in $DSH_HOME/storages/dsh-plugin-notify/config.json, and Web and Desktop share the same $DSH_HOME.

Core Features

Notification Channels

Channel Location Description
In-page Reminder (Banner) Client Text banner in the top right when the page is visible; supports multiple sessions and click-to-jump to session.
Desktop Notification / Browser System Notification Client Desktop uses Electron notification center; Web uses browser Notification API (requires authorization).
Host System Notification Host Machine macOS osascript, Linux notify-send, Windows PowerShell toast; can be received even if the browser is closed, optional notification sound.
Feishu / DingTalk / WeCom Group Bot Host Machine Text messages; Feishu and DingTalk support optional signature verification; customizable message templates for each channel.
Generic Webhook Host Machine Custom URL, headers, and JSON/text templates; can integrate with Slack, Discord, ntfy, Bark, Server 酱, PushPlus, etc.

The in-page banner is controlled by browser.enabled and browser.toast; desktop/browser system notifications are controlled independently by browser.native. The two do not gate each other.

Trigger Conditions

  • Turn End (turn/end): Filtered by triggers.turnEndKinds, supporting completed, blocked, aborted, error, max-tokens, interrupted; the first five are included by default, interrupted is optional.
  • Waiting for Approval (approval/asked): When a tool call requires user confirmation.
  • Model Question (tool/call, tool name ask_user_question): When waiting for an answer via the ask-user tool.

Browser channels also cover plan-review waiting for confirmation and support multi-session notifications. Host system and Webhook channels cover all sessions; browser channels can open the corresponding session when the banner or native notification is clicked.

Message Format

Webhook-type channels share placeholders: {{title}}, {{body}}, {{kind}}, {{sessionId}}, {{turn}}, {{toolName}}, {{reason}}, {{time}}. Feishu, DingTalk, and WeCom have default unified formats; if the generic Webhook template is left empty, plain text body is sent.

Installation and Activation

For 0.2.x, the Bundle method is recommended: the package has declared dsh.bundle, and dsh plugin will add it to the profile’s bundle list and activate it automatically.

# Install from GitHub pinned version (Web)
dsh plugin --profile web add "github:c-ling/dsh-plugin-notify#v1.4.0"

# Desktop
dsh plugin --profile desktop add "github:c-ling/dsh-plugin-notify#v1.4.0"

# When there is no global dsh (Web profile only)
npx @deepseek-ai/dsh plugin --profile web add "github:c-ling/dsh-plugin-notify#v1.4.0"

On the desktop, you can also fill in github:c-ling/dsh-plugin-notify#v1.4.0 in the sidebar Plugins → Add plugin to install and enable it. For local development, you can use link:/absolute/path/to/dsh-plugin-notify instead of the GitHub address.

After installation or update, restart the corresponding host and perform a hard refresh on the Web or reopen the desktop window. If you have already installed using the manual cordis.patch.yml loader method, do not enable it again with the bundle method in the same profile.

Uninstallation example:

dsh plugin --profile web remove dsh-plugin-notify
dsh plugin --profile desktop remove dsh-plugin-notify

Typical Usage

Verify if the route is registered

Unauthorized access to the configuration interface should return 401, indicating that the route is registered and protected by Connection:

curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:3080/api/dsh-plugin-notify/config
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:56928/api/dsh-plugin-notify/config

The old anonymous path /dsh-plugin-notify/config should return 404.

Configure and test in settings

Open Settings → Message Notifications, fill in the Webhook address, signing secret (Feishu/DingTalk), or generic Webhook template according to the channel, and select the turn end types to listen for. The settings page supports sending test messages per channel; on the desktop, you can verify if the badge and system notification center show test notifications.

Update version

dsh plugin --profile web add "github:c-ling/dsh-plugin-notify#v1.4.0"
dsh plugin --profile desktop add "github:c-ling/dsh-plugin-notify#v1.4.0"

After updating, restart the host and refresh the interface as well.

Scenarios and Notes

Suitable for developers who often run long turns in DSH and need to receive “Turn End”, “Pending Approval”, “Pending Answer” reminders even when leaving the main window. If the team already has Feishu/DingTalk/WeCom group bots, the same events can be pushed to the group; if local reminders are more important, prioritize enabling host system notifications or desktop native notifications.

Please note before use:

  • The plugin runs under the permissions of the current DSH host process. Webhooks and notify-send etc. will access the network or local shell; it is recommended to read the source code and MIT license before installation. Do not store irrelevant sensitive credentials in Webhook URLs or custom headers (addresses and headers are saved in plaintext locally in config.json).
  • Feishu/DingTalk signing secrets are write-only fields, masked in GET, and stored unencrypted in local configuration.
  • Browser native notifications depend on the page/host remaining running; when fully exited, please rely on host system notifications or Webhooks. Enabling both host system notifications and desktop notifications may result in duplicate reminders.
  • macOS/Windows system notification authorization status cannot be accurately read via Web API; the desktop provides an “Open System Notification Settings” entry. If Electron notifications are abnormal on Windows, you can switch to the host system notification channel.

Conclusion

dsh-plugin-notify unifies three common “need you to come back” nodes in DSH into a single configuration, combinable from page banners to group bots according to scenarios. The DeepSeek Harness ecosystem emphasizes “Everything is a plugin”; the community directory skillhub.cn and the GitHub repository are independent of each other and are not the official DeepSeek App Store. For details, Issues, or version history, please refer to the GitHub README.