Skip to content
dsh-market Browse plugins GitHub 中文

AbcdefgXW/dsh-msg-hub

IM channel bridge: WeChat (ilinkai) / QQ / Feishu with proactive push — wake the channel bot from scheduled tasks and deliver AI replies to your phone.

Stars ★ 2 Category Notifications & Integrations Listed 2026-08-16 npm dsh-msg-hub

Install

Inside DeepSeek Harness, with dsh-market

dsh plugin --profile web add dshmarket

Or from the command line

dsh plugin --profile web add dsh-msg-hub

Installing runs third-party code with your own permissions — it can read your files, use your credentials and reach the network. Review the source first, and pin a commit (github:owner/repo#sha) when you can.

README

English | 简体中文

An IM channel bridge plugin for dsh (DeepSeek Harness): connects WeChat (ilinkai) / QQ (Open Platform) / Feishu (Open Platform) messages into dsh agent sessions, with proactive push support (wake the channel bot and deliver the AI reply back to your phone — for scheduled tasks etc.).

Features

  • 📱 WeChat: ilinkai simulated protocol (QR login), text send/receive
  • 💬 QQ: Tencent Open Platform official WebSocket channel, text send/receive (C2C / group)
  • 📡 Feishu: Feishu Open Platform official API (app credentials), text send/receive (P2P / group)
  • 🧩 Proactive push service (dsh-channels-push cordis service):
    • push({channel, peerId, text}): send text directly to IM
    • task({channel, peerId, prompt}): wake the channel agent to run a task; the AI reply is delivered back to the IM automatically
    • Consumed by plugins like dsh-toolbox-web's scheduled heartbeat (channel push is unavailable without this plugin; everything else is unaffected)
  • 📡 Remote monitoring (keep an eye on tasks away from the computer):
    • Remote approval: when the bound session's agent requests approval, the request is pushed to IM (tool name / reason / command detail); reply "批准" or "拒绝" to answer; 5-minute timeout falls back to rejected (safe default)
    • Turn push: task started / finished / errored / blocked notifications for the bound session
    • Session commands: /sessions lists the 5 most recent sessions (name+ID), /bind <sessionId> binds, /status shows the binding

Requirements

  • dsh runtime (cordis plugin, registered in the dsh web profile)
  • Node.js ≥ 22.13
  • Per-channel credentials: WeChat QR / QQ AppID+Secret / Feishu AppID+Secret

Installation

Installation

# Option 1: npm package (recommended)
dsh plugin --profile web add dsh-msg-hub

# Option 2: GitHub repository
dsh plugin --profile web add github:AbcdefgXW/dsh-msg-hub

# Option 3: manual
git clone https://github.com/AbcdefgXW/dsh-msg-hub.git
cd dsh-msg-hub && npm install


```bash
git clone https://github.com/USER/dsh-msg-hub.git
cd dsh-msg-hub && npm install
cd $DSH_HOME/profiles/web && pnpm link /path/to/dsh-msg-hub

Register in cordis.patch.yml:

- insert:
    - id: dsh-msg-hub
      name: dsh-msg-hub

Restart dsh web.

Channel connection guide

WeChat (ilinkai QR login)

node scripts/weixin-login.mjs login
  1. A QR code appears in the terminal — scan it with the WeChat app
  2. On success the token is saved to state/weixin/; restart dsh to activate
  3. A dedicated WeChat account is recommended (simulated protocol — see "Safety Notes" for risk-control warnings)

QQ (Open Platform official bot, two options)

First register a bot app on the QQ Open Platform to get AppID and AppSecret:

# Option A: credentials directly (recommended once the bot exists)
node scripts/qq-login.mjs --appid <AppID> --secret <AppSecret>

# Option B: QR binding (requires an existing bot under this QQ account)
node scripts/qq-login.mjs

Restart dsh after configuring. ⚠️ Proactive pushes additionally require applying for "proactive message permission" on the Open Platform, otherwise they fail silently (passive replies are unaffected).

Feishu (Open Platform enterprise self-built app)

  1. Create an "enterprise self-built app" on the Feishu Open Platform → enable the bot capability → publish the app
  2. Copy AppID and AppSecret from the app's "Credentials & Basic Info" page (needs app admin permission)
node scripts/feishu-login.mjs --appid <AppID> --secret <AppSecret>

Restart dsh after configuring.

Credentials are stored under the plugin state/ dir (gitignored, never committed); all three channels can run simultaneously.

Environment Variables

Variable Purpose Default
DSH_CHANNELS_STATE_DIR channel state dir (credentials/logs/data) plugin state/ dir
DSH_CHANNELS_CWD channel agent workspace root /workspace

Safety Notes

  • WeChat (ilinkai) uses a simulated web protocol (not an official API) — frequent proactive messaging carries account risk-control risk; keep push frequency low (scheduled interval ≥ 15 minutes)
  • QQ proactive messages require applying for "proactive message permission" on the Open Platform; without it, proactive pushes fail silently (passive replies are unaffected)
  • Feishu uses the official API — compliant and safe
  • Credentials live in state/ (excluded via .gitignore) — never commit them

License

MIT

Content from the project README on GitHub ↗