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), andapproval/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.
- Obtain the SendKey: First activate the service on the official ServerChan website (ServerChan Turbo or ServerChan³), then obtain the SendKey or full push URL.
- Enter configuration: Input the SendKey on the plugin settings page.
- 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.
- Network and links:
- Network proxy: Optional HTTP/HTTPS proxy.
- Jump link: Leave blank by default. Enter
dsh://opento attempt launching the desktop client (requires protocol registration on the desktop), or enterhttp(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 iskey.binin 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.