Preface

Running agents in DeepSeek Harness (DSH) often presents a practical problem: tasks run in the background while you’re away from your computer. Session endings, approval requests, and runtime errors go unnoticed without reminders, forcing you to repeatedly open the terminal or web interface to check.

Integrating webhooks from various platforms can push messages, but each channel’s API differs. Handling approval callbacks, multi-session routing, and do-not-disturb settings requires additional layers of development. Maintainer THEWOLFWALKER’s dsh-notifier consolidates this into a unified solution: a notify() API in the front, supporting 27 channel adapters at the back, with two trigger lines—automatic push of session events and active tool invocation by the model.

What Is This

dsh-notifier is a unified notification push plugin for DSH, classified as a networked tool. It adapts and routes between Harness and channels like Telegram, DingTalk, Feishu, WxPusher, PushPlus, ServerChan, Bark, and webhooks, while providing capabilities for remote approval, remote session management, and long-task heartbeats. The plugin has zero runtime dependencies (using only fetch, node:crypto, and native WebSocket), requires Node.js 22+, and is licensed under MIT. As of writing, the GitHub repository has approximately 61 stars and 4 forks, with the npm package version at 0.8.5.

Core Features

Dual Trigger Lines

One line automatically pushes session events from Harness: turn/end, approval/asked, agent/error, etc., which are deduplicated and debounced before sending. The other line is model-facing: agents can invoke the notify tool, passing parameters like message, channel, and title to push messages actively.

Multi-Channel Outbound

The README lists 27 outbound channels, covering Telegram, Slack, Discord, Feishu, DingTalk, WeCom, QQ Bot, Bark, PushPlus, ServerChan, WxPusher, webhook, desktop notifications, and more. Messages are processed through a unified pipeline: level routing (timeSensitive / active / passive) → multi-agent routing matrix → channel adapter (resolve(cfg) + send(msg)), with tiered retries, segmentation, and do-not-disturb settings.

Inbound: Approval and Sessions

Six inbound channels support returning feedback from mobile devices: Telegram buttons, Feishu cards, QQ/WxPusher/WeChat iLink/DingTalk replies with 1/2 for approvals; plain text can trigger followup/inject, and the ! prefix can redirect mid-turn. From v0.5, long tasks default to sending heartbeats (starting at 15 minutes) and stuck reminders (10 minutes without events). Telegram/Feishu notification cards can include a one-click stop button.

Identity and Multi-Agent

v0.7 introduces a runtime identity system: pairing codes (/pair <code>), composite key binding (channel:userId), role management; it starts in guided mode when no whitelist is configured. From v0.3.2, it supports an agent × channel bidirectional routing matrix, with automatic session registration, manageable via /agent command family or the route.mjs CLI.

Admin Console and Open Interface

With admin.enabled: true, a local (127.0.0.1) web admin console is provided, featuring six pages: dashboard, notification stream, members, bindings, sessions, and channels, with mobile responsiveness. From v0.6, other plugins can use the notifier service for outbound and subscribe to dsh-notifier/sent events.

Installation and Activation

From DSH 0.1.0-rc.6, plugin installation requires specifying a profile:

dsh plugin add dsh-notifier --profile <profile-name>

Replace <profile-name> with your actual running profile (e.g., web).

Add channel configurations in the profile’s cordis.patch.yml, for example:

insert:
  - id: dsh-notifier
    name: dsh-notifier
    config:
      channels:
        - type: telegram
          botToken: "123456:ABC-DEF..."
          chatId: "987654321"
        - type: dingtalk
          webhook: "https://oapi.dingtalk.com/robot/send?access_token=..."
          secret: "SEC..."
        - type: bark
          key: "your-device-key"

Once configured, turn/end, approval/asked, and agent/error will be pushed to enabled channels; models can also push messages via the notify tool.

Typical Usage

Automatic Notification for Session Events

After completing the above installation and channel configuration, no additional code is needed—Harness session events will be outbound automatically. Long-task heartbeats and stuck reminders are enabled by default in v0.5.

Active Model Push

Agents can invoke the notify tool during runtime, for example:

notify({ message: "Build complete, please check logs", channel: "telegram", title: "CI Result" })

Refer to the plugin documentation for specific parameters.

Remote Approval and Stopping

Once approval requests reach the mobile device, operate according to channel conventions (e.g., Telegram buttons, DingTalk replies with 1/2). During long tasks, you can terminate the current turn via the stop button on Telegram or Feishu notification cards.

Identity Pairing (v0.7)

Send /pair <code> in any supported private channel to complete binding; see the full process in the repository docs/guide.md (Chinese).

Use Cases and Notes

Suitable for scenarios where status, approvals, and errors need to be pushed to mobile or IM during DSH agent operations, with occasional command return from mobile. Common channels in China, such as DingTalk, Feishu, WxPusher, PushPlus, and ServerChan, are all supported.

Before installation, please note:

  1. The plugin runs with the current DSH process permissions, with network access and inbound listening; before installation, read the source code and MIT license to confirm credential configuration methods.
  2. Inbound approvals and remote sessions involve identity binding; for production environments, it’s recommended to complete pairing and whitelist configuration using the v0.7 identity system.
  3. The web admin console listens only on the local loopback address by default; assess risks yourself before exposing it to external networks.
  4. The SkillHub plugin directory (skillhub.cn) is a community site with no official affiliation to DeepSeek /幻方; refer to the GitHub repository for versions and features.

Conclusion

dsh-notifier consolidates DSH notifications, approval callbacks, and multi-channel routing into a single plugin, reducing the work of writing adapters for each IM platform. If you’re running long tasks on DSH or need mobile intervention, you can install and configure one or two commonly used channels by profile for a trial.

  • Directory: https://www.skillhub.cn/plugins/THEWOLFWALKER/dsh-notifier
  • GitHub: https://github.com/THEWOLFWALKER/dsh-notifier