What Is dsh-im? Connect Nine IM Bots to DeepSeek Harness
dsh-im is the IM bot integration plugin for DeepSeek Harness (DSH): a single "Settings → IM bots" entry manages nine IM channels — Feishu, WeChat, DingTalk, WeCom, QQ, Slack, Telegram, Discord, WhatsApp — plus AI Office Connector, and every channel accepts multiple bots. This article explains what dsh-im is, its core features, the full install/update/uninstall commands, typical usage, and common troubleshooting, so you can drive Harness from the IM apps you already use.
What Is dsh-im?
dsh-im solves two problems: scattered IM bot integrations, and a local Harness that cannot be reached from the public internet — it connects IM bots to DeepSeek Harness via QR code, App Manifest, or existing bot credentials, and makes the local Harness proactively connect to a public AI Office. The positioning and facts below all come from the official README (source).
dsh-im (GitHub repo xmanrui/dsh-im) is maintained by xmanrui and open sourced under the MIT license. It does not change DeepSeek Harness's core behavior; instead it registers an "IM bots" page in the top-level settings menu: Feishu, WeChat, DingTalk, and WeCom support QR-code or credential binding, Slack uses a prebuilt App Manifest, Telegram and Discord use Bot Tokens, and WhatsApp pairs via a QR code. Each channel can host multiple bots whose connection state, workspaces, and session bindings stay independent; AI Office Connector lets the local machine be invoked by a public AI Office without a public IP, port forwarding, or a WebSocket server. It is an out-of-the-box IM integration plugin in the DSH Plugin ecosystem, and its UI is bilingual (Chinese and English).
What Are the Core Features of dsh-im?
The core capabilities revolve around six things: nine-channel integration, multi-bot management, streaming replies, image and file delivery, AI Office Connector, and a bot command set — all covered by a single settings page. The capabilities below all come from the official README (source):
- Nine IM channels: Feishu, WeChat, DingTalk, WeCom, QQ, Slack, Telegram, Discord, and WhatsApp, with connection methods spanning QR codes, App Manifest, Bot Tokens, and credential binding.
- Independent multi-bot management: each channel can host multiple bots whose credentials, connection state, workspaces, Agent Presets, and session mappings stay independent.
- Streaming replies with progress hints: Feishu streaming cards, DingTalk AI Cards, WeCom native "thinking…" indicators, and Telegram rich-message previews render answers incrementally where the platform allows.
- Image and file delivery: all nine channels support JPEG/PNG/WebP images and GIFs sent as image files — 5 MB per image, 20 MB total per message; files are delivered as native channel attachments.
- AI Office Connector: the local Harness proactively connects to the public internet without a public IP, port forwarding, or WebSocket; heartbeat authentication plus an SSE downstream stream support task pulling, 90-second leases, human approval, and reconnection.
- Bot command set: /models, /model, /reasoning, /preset, /stop, /steer, /workspace, /session, /history, /repair, and 20+ more commands.
How to Install and Enable dsh-im?
Install with one npm command into the DeepSeek Harness Web profile, restart dsh web, then open "Settings → IM bots" and follow the built-in guide to scan a QR code or fill in credentials. The install, update, and uninstall commands below all come from the official README (source):
1. Install — the stable release is recommended from npm:
dsh plugin --profile web add -w @xmanrui/dsh-im
2. Enable — restart dsh web, refresh your browser, and open "Settings → IM bots" to scan a QR code or fill in credentials on the channel page. Secrets and tokens are submitted only to the local Host and stored in the protected credential store.
3. Update — click "Check for updates" in the top-right corner of the "IM bots" page, or run the following command to update to the latest release:
# update to latest
dsh plugin --profile web add -w @xmanrui/dsh-im@latest
After the update finishes, restart the Host manually for it to take effect; the page then shows "Installed, pending manual restart".
4. Uninstall — remove it from the Web profile:
dsh plugin --profile web remove @xmanrui/dsh-im
Typical dsh-im Usage
Once installed, chat directly with the bot in any IM app to drive Harness: daily Q&A, switching models and reasoning levels, binding an existing session, and switching workspaces all happen through chat commands. The command examples below all come from the official README (source):
1. Chat directly for streaming replies — send a normal message in a Feishu, WeChat, or other private chat, and the bot streams its thinking, tool progress, and final answer where the platform allows.
2. List and switch models — send /models to list every available model, then /model 2 to switch to the second one on the list:
/models
/model 2
You can also pick an exact ID directly: /model deepseek-official/deepseek-v4-pro max.
3. Switch the reasoning level — /reasoninglist to view, /reasoning 2 to switch, and /reasoning --default to restore the default:
/reasoninglist
/reasoning 2
/reasoning --default
4. Switch Agent Presets and workspaces — run /presetlist, then /preset 2 to pick the second Preset for the bot; /workspace switches to a specific directory:
/presetlist
/preset 2
/workspace /Users/alice/projects/my-app
5. Bind an existing Harness session to keep chatting — /sessionlist lists the sessions in the workspace, /session <Session ID> binds one, and /history shows the recent history:
/sessionlist
/session session-id
/history 5
6. Stop tasks and steer with extra instructions — /stop stops the current task immediately and keeps queued messages; /steer feeds extra instructions into the running task:
/stop
/steer only check the config file
dsh-im Troubleshooting
The most common dsh-im issues cluster in four places: no "IM bots" entry in the settings page, insufficient Feishu permissions, Telegram failing to reach the Bot API, and "pending manual restart" after an update. The troubleshooting notes below all come from the official README (source):
1. No "IM bots" entry in the settings page — the symptom is the entry missing after installation; the cause is the Host not being restarted or the browser not refreshed, since the plugin page no longer keeps the old entry. Fix: restart dsh web, refresh the browser, and open "Settings → IM bots".
2. Feishu cannot download images or files — the symptom is the bot failing to download images or files from user messages; the cause is the app missing im:message:readonly, im:resource, or card-callback permissions. Fix: DM the bot /repair, or click "Complete permissions" on the settings page and scan the QR code to add them incrementally.
3. Telegram reports that the Bot API is unreachable — the symptom is a connection error when binding the Token; the cause is the local machine not reaching the Telegram Bot API directly, or the proxy being misconfigured. Fix: use Node 22.21+, and before starting dsh web set NODE_USE_ENV_PROXY=1, HTTPS_PROXY=http://proxy:8080, and NO_PROXY=localhost,127.0.0.1; then restart the Host.
4. "Installed, pending manual restart" keeps showing after an update — the symptom is the page still asking for a restart after updating; the cause is the updater never restarting the Host for you. Fix: restart the Host/Desktop manually, then click "Refresh status" to re-read the Host state — the running version always follows what the Host reports.
Use Cases and Notes
dsh-im suits anyone who wants to drive DeepSeek Harness from the IM tools they already use: quick Q&A on the phone, team collaboration in a group, and remote tasks that reach the local Harness from the public internet. The scenarios and limits below all come from the official README (source).
- Use cases: chat with Harness from Feishu or WeChat on your phone anytime; have a team @ the bot in a group to fetch task results; start remote tasks from the public internet through AI Office Connector with human approval; limit Telegram and WhatsApp to trusted contacts with a whitelist.
- Notes: bot chat messages follow the Host's
languagesetting (Chinese by default; set it toenfor English); Telegram groups respond only when mentioned or replied to by default, and safe mode needs numeric User ID whitelists; WhatsApp replies only to self-chats by default; if Slack's desktop client intercepts / commands with its native Slash Command, add a leading space before sending; platform limits apply, such as 30 MB files on Feishu and daily quotas on QQ; secrets and tokens are submitted only to the local Host and stored in the protected credential store.
Project Links
dsh-im is an MIT open-source project maintained by xmanrui.
Plugin details: dsh-im plugin page.
This page is an independent guide rewritten from the plugin's official README — for the authoritative documentation and the latest changes, please refer to the source: xmanrui/dsh-im. Plugins are third-party code that runs on your machine after installation; listing here is not an endorsement — please review the source code yourself before installing.
FAQ
dsh-im scans a QR code on the "IM bots" settings page to create a Feishu bot and connect it, requesting the required permissions by default; you can also bind manually with App ID and App Secret. When permissions are insufficient, DM /repair or click "Complete permissions" on the settings page and scan a QR code to add them incrementally; both paths support streaming card replies.
dsh-im's AI Office Connector makes the local Harness proactively connect to the public AI Office without a public IP, port forwarding, or a WebSocket server. It speaks the office-harness.v1 protocol, authenticates via POST /api/harness/connector/heartbeat, and keeps a downstream SSE stream with automatic reconnection; the Device Token is stored only in the Harness credential store.
dsh-im ships with nine channels: Feishu, WeChat, DingTalk, WeCom, QQ, Slack, Telegram, Discord, and WhatsApp. Slack uses a prebuilt App Manifest to create an app, then takes the Bot Token and App Token; Telegram takes the Bot Token generated by @BotFather. Both support long connections and streaming replies.
dsh-im supports sending JPEG, PNG, and WebP images plus GIFs as image files on all nine channels, with 5 MB per image and 20 MB total per message. Files are delivered as native channel attachments and are subject to platform limits, such as 30 MB on Feishu and daily quotas on QQ.
dsh-im's Telegram bot defaults to compatibility mode: it answers private chats directly and only responds in groups when mentioned or replied to. Safe mode ignores all group chats and accepts only the numeric User IDs in a whitelist that is saved per bot; an empty whitelist rejects every inbound message for that bot.
dsh-im checks the npm registry when you click "Check for updates" on the "IM bots" page; after the update finishes, the Host must be restarted manually before the change takes effect, and the page shows "Installed, pending manual restart" based on the Host status. If it still shows after restarting, click "Refresh status" to re-read the Host state.
Related Terms
- dsh-im
- dsh-im is the IM bot integration plugin for DeepSeek Harness (DSH): one "Settings → IM bots" entry manages nine IM channels and AI Office Connector, connecting bots via QR code, App Manifest, or existing bot credentials.— dsh-im README
- AI Office Connector
- AI Office Connector is dsh-im's remote connection capability that makes the local Harness proactively connect to the public AI Office without a public IP, port forwarding, or a WebSocket server.— dsh-im README
- Feishu streaming cards
- Feishu streaming cards are dsh-im's streaming reply style on the Feishu channel, incrementally rendering thinking, tool progress, and the final answer inside a card.— dsh-im README
- Access modes
- Access modes are dsh-im's inbound controls for Telegram and WhatsApp bots: Telegram splits into compatibility mode and safe mode (private-chat whitelist), while WhatsApp offers self-only, specified contacts, and open replies.— dsh-im README
- Proactive delivery
- Proactive delivery is dsh-im's ability to push text messages to all nine IM channels using a stable botId plus targetId, shared with the same target configuration as HTTP POST, same-Host plugins, and Connection RPC.— dsh-im README
Sources
- xmanrui/dsh-im GitHub repository· GitHub