Skip to content
dsh-market Browse plugins GitHub 中文

173787247/dsh-wsl-im

Bridges Feishu, WeCom, DingTalk, QQ, Slack, Discord, Telegram and Mattermost into dsh agents (outbound WS/Stream/Gateway/long-poll/webhook), with im_status, optional local Whisper ASR, plain-text outbound for QQ/DingTalk/Telegram/Mattermost, and env CSV allowlists (DSH_IM_*_ALLOWED_USER_IDS). Empty allowedUserIds means EVERYONE can drive your agent — set a whitelist before exposing a bot.

Stars ★ 1 Category WSL & Windows Interop Listed 2026-09-20

Install

Inside DeepSeek Harness, with dsh-market

dsh plugin --profile web add dshmarket

Or from the command line

dsh plugin --profile web add github:173787247/dsh-wsl-im

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

DeepSeek Harness plugin: chat with dsh from Feishu / WeCom / DingTalk / QQ / Slack / Discord / Telegram.

中文说明 → README.zh.md

Messages go: IM → this plugin → ctx.agents → reply.


Compatibility

Field Value
Plugin dsh-wsl-im 0.3.8
Minimum dsh ≥ 0.1.2
Latest verified See dsh-wsl-kit Compatibility
Kit set not in install.sh (optional)
Cloud Flash deepseek-flash — not configured here

Architecture

Not in install.sh. Wire behavior follows vendor docs.

flowchart TB
  chats["Feishu / WeCom / DingTalk / QQ / Slack / Discord / Telegram"] --> im["dsh-wsl-im"]
  im --> ws["one workspace per IM"]
  im --> agents["ctx.agents"]
  agents --> reply["reply text back to that chat"]

Each IM gets ~/.dsh/im-workspace/{feishu,wecom,dingtalk,qq,slack,discord,telegram,mattermost}, registered on plugin start. One session per chat, not one session for the whole platform. Suite diagram: dsh-wsl-kit. This plugin is 0.3.7 (optional, not in install.sh).

Adapters

Adapter Mode Creds
feishu Long connection FEISHU_APP_ID / FEISHU_APP_SECRET
wecom 智能机器人 WSS WECOM_BOT_ID / WECOM_BOT_SECRET
dingtalk Stream DINGTALK_CLIENT_ID / DINGTALK_CLIENT_SECRET
qq Official Gateway QQ_APP_ID / QQ_APP_SECRET
slack Socket Mode SLACK_BOT_TOKEN (xoxb-) / SLACK_APP_TOKEN (xapp-)
discord Gateway WSS DISCORD_BOT_TOKEN (+ optional DISCORD_APPLICATION_ID)
telegram Long-poll getUpdates TELEGRAM_BOT_TOKEN (+ optional TELEGRAM_BOT_USERNAME)
mattermost Outgoing Webhook + Bot REST MATTERMOST_URL / MATTERMOST_TOKEN (+ optional webhook path/port)
mock Local HTTP DSH_IM_MOCK=1 → POST http://127.0.0.1:18999/mock

Enable with DSH_IM_FEISHU=1 / DSH_IM_SLACK=1 / DSH_IM_DISCORD=1 / DSH_IM_TELEGRAM=1 / DSH_IM_MATTERMOST=1 (etc.) or adapters.*.enabled: true in patch config.

Feishu peer dependency

# inside the dsh profile / plugin install tree
npm i @larksuiteoapi/node-sdk

WeCom proxy

openws.work.weixin.qq.com often needs HTTPS_PROXY/HTTP_PROXY. The adapter uses https-proxy-agent (ws ignores NODE_USE_ENV_PROXY). One Bot = one live WS — stop any other client on the same Bot while testing.

Discord / Telegram notes

  • Discord: enable Message Content Intent; guild messages require @bot (set DISCORD_APPLICATION_ID or wait for READY). CDN downloads honor HTTPS_PROXY.
  • Telegram: outbound long-poll only (no webhook). Groups need @bot when TELEGRAM_BOT_USERNAME is set.

Install

# track default branch; do not pin 0.2.0
dsh plugin --profile web add github:173787247/dsh-wsl-im

Awesome: entry draft in docs/awesome-entry.yml — submit to awesome-dsh-plugin after the repo is ≥1 day old (CI gate).

Source env (see examples/dsh-wsl-im.env.example), restart web, new session. Tool: im_status.

Mock smoke (no real bot)

export DSH_IM_MOCK=1
# restart dsh web, then:
curl -s http://127.0.0.1:18999/mock -H 'content-type: application/json' \
  -d '{"text":"/status","chatId":"t1"}'

Security

Empty allowedUserIds = everyone. Set a whitelist before exposing bots. IM input can drive tools on the host.

License

MIT

Content from the project README on GitHub ↗

Comments

Comments live in GitHub Discussions. Sign in with GitHub to post or react.