DeepSeek Harness (DSH) usually relies on a browser connection to receive notifications while waiting for human interaction (such as approval, plan review, or Q&A). If you close the tab or leave your computer, these reminders are interrupted. This plugin fills this gap by listening to the host-side event stream and sending mobile push notifications through ServerChan after a timeout.

Plugin Overview

This is a third-party plugin developed by MaRi23333 (MIT License). It monitors three types of native waiting scenarios and sends reminders through ServerChan (supports ServerChan³ App or ServerChan Turbo/WeChat) after a timeout.

Core Capabilities

  • Host-side monitoring: Listens to the persistent session event stream, without relying on a browser connection. As long as the DSH process is running, monitoring continues.
  • Three native waiting types: Supports ask_user_question (Q&A), exit_plan_mode (plan review), and approval/asked (tool approval/sandbox escalation).
  • Restart recovery: After DSH restarts, the plugin resuspends un-closed waiting items from the session log and continues timing from the original start time.
  • Local encrypted storage: The SendKey is stored locally as AES-256-GCM ciphertext and does not enter the repository or logs.

Installation and Enablement

We recommend installing the stable version via npm:

dsh plugin --profile web add dsh-serverchan-watchdog

After installation, restart dsh web from the terminal to activate the plugin.

Configuration

After restarting, open the DSH Settings page → Plugins → ServerChan Push Assistant.

  1. Obtain the SendKey: First activate the service on the official ServerChan website (ServerChan Turbo or ServerChan³), then obtain the SendKey or full push URL.
  2. Enter configuration: Input the SendKey on the plugin settings page.
  3. Basic settings:
    • Master switch: After saving, pause or resume reminders without restarting.
    • Threshold: Defaults to 5 minutes. Changes only affect waiting periods that start afterward.
    • Repeat reminder interval: Defaults to 0, meaning no repeats after one successful delivery.
    • Push title: You can customize the title; leave blank to use the default.
  4. Network and links:
    • Network proxy: Optional HTTP/HTTPS proxy.
    • Jump link: Leave blank by default. Enter dsh://open to attempt launching the desktop client (requires protocol registration on the desktop), or enter http(s):// to open it in a browser.

You can also inject credentials via the environment variable DSH_SERVERCHAN_SENDKEY, which is suitable for environments that already have external credential management.

Data Flow and Security

  • Storage location: The SendKey is saved in $DSH_HOME/serverchan-watchdog/state.json, and the encryption key is key.bin in the same directory. Both files have tightened permissions, but a local account that can read both files can still recover the SendKey.
  • API security: The configuration, status, and test endpoints accept only localhost loopback requests. Do not expose DSH directly to the public internet; configure authentication and access control externally.
  • Push content: The push body includes the interaction type, session ID, summary, and wait duration. Do not place sensitive information, such as keys, in text or links awaiting confirmation.

Notes

  • Third-party nature: This plugin is an independent community project and has no affiliation with ServerChan or the official DSH.
  • Local file risk: The SendKey is saved in local files and can be read by local accounts. Do not place keys in push content.
  • Edge-case limitations:
    • If the host crashes in a very short window after a human has responded but before the result has been written to the session log, restart recovery may cause one extra reminder.
    • When DSH restarts, multiple waiting items that have already exceeded the threshold and remain unprocessed may resume timing simultaneously, potentially sending multiple reminders in a short period.