MIT-licensed, zero-runtime-dependency notification plugin that integrates natively with DeepSeek Harness via `dsh plugin add`: 27 outbound channels, six inbound channels for approvals/questions, and a loopback-only web console.
DSH integration
Native runtime
Author-claimed
Safety audit
Unaudited
Last verified
2026-08-28
License
MIT
01What can it help you accomplish?
Reach your DeepSeek Harness agent from your phone
Automatic push of session events plus model-called `notify()` messages to 27 channels (Telegram, Slack, Discord, Feishu, DingTalk, WeCom, QQ bot, Bark, Pushover, ntfy, WxPusher, PushPlus, Server酱, webhook, bell, desktop, …) — zero runtime deps
DeepSeek Harness (dsh) users who run long or unattended tasks and want session status, approvals and questions delivered to the chat apps they already use
Approve, answer and steer DSH sessions from anywhere
Remote approval (buttons · reply 1/2), remote multi-choice questions (option cards, v0.8), remote conversation (followup/inject/steer), and heartbeat ⏱ / stall ⚠ cards with a ⏹ stop button
DSH operators who need approvals, questions and mid-turn steering handled remotely while away from the desk
02How to install into DeepSeek Harness
Prerequisites
- DeepSeek Harness DSH 0.1.0-rc.6+ — the install command requires the `--profile` flag
- A named DSH profile to install into (e.g. `web`)
- Channel credentials (bot tokens / webhooks / push keys) for each channel you want to enable
Installation steps
- 01
Run `dsh plugin add dsh-notifier --profile <profile-name>` from your DeepSeek Harness environment
$ dsh plugin add dsh-notifier --profile <profile-name>
- 02
Add channel credentials to your profile patch (`cordis.patch.yml`) under `config.channels` — e.g. telegram with `botToken` + `chatId`, dingtalk with `webhook` + `secret`, or bark with a device `key`
Verify the integration
Not specified by the author
03DSH integration and capability boundaries
Native plugin installed via `dsh plugin add dsh-notifier --profile <profile-name>`; session events auto-notify and the model calls a `notify` tool directly — no MCP bridge, no extra runtime.
Dual trigger lines
DSH session events (`turn/end` · `approval/asked` · `agent/error`) and model-facing `notify()` tool calls→Level-routed pushes to every configured channel (`timeSensitive` / `active` / `passive`) with tiered retries
27 channel adapters
message + target channel→Delivery to 27 channels — Telegram, Slack, Discord, Feishu, DingTalk, WeCom, QQ bot, OneBot, Teams, Mattermost, Google Chat, Bark, Pushover, ntfy, WxPusher, PushPlus, Server酱, Qmsg, 息知, webhook, bell, desktop and more
zero runtime depsRemote approval, questions & conversation
inbound messages over six channels (`telegram`, `feishu`, `qq-bot`, `wxpusher`, `wechat`, `dingtalk`)→approval buttons / numbered-reply fallback; remote multi-choice questions (option cards, v0.8); followup / inject / steer
Silence never approves.QQ GROUP / missing `chatType` / unknown sources fail closed; the `routeUnsafe` bypass is blocked.Mobile command center
long-running turns and silent turns in DSH sessions→heartbeat ⏱ (default 15min) and stall ⚠ (default 10min) cards; Telegram/Feishu cards carry a ⏹ stop button
`/quiet` · `/unquiet` mute or restore a session's pushes from your phoneLoopback web admin console
browser session to 127.0.0.1 with a Bearer token→six pages — dashboard / notify / members / bindings / sessions / channels
loopback only (127.0.0.1)browser opens in personal mode
04Who is it for? When not to use it?
Good for
- DeepSeek Harness (dsh) users who run long or unattended tasks and want session status, approvals and questions delivered to the chat apps they already use
- DSH operators who need approvals, questions and mid-turn steering handled remotely while away from the desk
Not for
- Installing requires the `--profile` flag: `dsh plugin add dsh-notifier --profile <profile-name>` targets a named DSH profile (DSH 0.1.0-rc.6+), so you must point it at the profile you actually run (e.g. `web`).
- QQ control ingress is source-marked and fails closed: C2C is single-chat, while GROUP chats, messages missing `chatType`, and unknown source metadata are rejected; the conversation `routeUnsafe` bypass is blocked.
05Compatibility, maintenance and safety notes
- Installing requires the `--profile` flag: `dsh plugin add dsh-notifier --profile <profile-name>` targets a named DSH profile (DSH 0.1.0-rc.6+), so you must point it at the profile you actually run (e.g. `web`).
- QQ control ingress is source-marked and fails closed: C2C is single-chat, while GROUP chats, messages missing `chatType`, and unknown source metadata are rejected; the conversation `routeUnsafe` bypass is blocked.
- Inbound control needs no public IP — channels use long-lived connections or long polling — except the WxPusher callback, which does require one.
- The local `desktop` notification channel relies on `osascript` / `notify-send` / PowerShell toast; on Windows it needs the BurntToast module.
MIT · actively developed (v0.9.0, 1352 tests, last push 2026-08-23)
06Frequently asked questions
How do I install dsh-notifier into DeepSeek Harness?
Run `dsh plugin add dsh-notifier --profile <profile-name>`. The `--profile` flag is required on DSH 0.1.0-rc.6+ because plugin installs target a named profile — use the one you run (e.g. `web`).
What reaches my phone, and which channels are supported?
Session events (`turn/end` · `approval/asked` · `agent/error`) auto-notify and the model can push on its own with `notify({ message, channel, title })`. There are 27 adapters — Telegram, Slack, Discord, Feishu, DingTalk, WeCom, QQ bot, Bark, Pushover, ntfy, WxPusher, PushPlus, Server酱, webhook, bell, desktop and more — configured under `config.channels` in your profile patch.
Can I approve agent actions from my phone?
Yes. Six channels open inbound (telegram, feishu, qq-bot, wxpusher, wechat, dingtalk). Approvals arrive as Telegram/Feishu cards or QQ native buttons in 1:1 chats, with a numbered-reply fallback elsewhere — and silence never approves.
Does it need its own server or a public IP?
No — the README advertises zero runtime deps and "no second runtime to deploy". Inbound channels use long-lived connections or long polling, so no public IP is required (only the WxPusher callback needs one).
What is the web admin console for?
With `admin.enabled: true` you get a loopback-only (127.0.0.1) console with six pages — dashboard / notify / members / bindings / sessions / channels — for managing credentials, identity bindings and routing.
07Related DSH workflows
awesome-gpt-image-2
by freestylefly
Prompt-as-Code engine and template library for GPT-Image2, with 470+ reverse-engineered cases, 20+ production templates and distilled agent skills.
voyager
by voyager-crew
A browser-extension suite for Gemini, AI Studio, Claude, ChatGPT, and DeepSeek, with a prompt manager that works on any website, including DeepSeek Harness.
dsh-im
by xmanrui
把 IM 机器人接入 DSH:统一管理飞书/微信/钉钉/企业微信/QQ/Telegram/Discord/WhatsApp 八个渠道,扫码或凭据接入、流式回复与设置页管理
wegent
by wecode-ai
Plan, build, and deliver with an open-source, self-hostable AI workspace for coding, collaboration, and automation.
08Data and sources
dsh plugin add dsh-notifier --profile <profile-name>
session events (`turn/end` · `approval/asked` · `agent/error`) auto-notify, the model calls a `notify` tool directly
`--profile` is required (DSH 0.1.0-rc.6+): plugin installs target a named profile — use the one you run (e.g. `web`).
This page is generated from the project’s public documentation, repository metadata and a structured parse of DSH Plugins; last verified on 2026-08-28. Found an error? Submit a correction.
Best DeepSeek Harness Plugins
Twelve plugins worth installing first — picked from the whole catalog, across every category.
