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.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:173787247/dsh-wsl-im
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
DeepSeek Harness plugin: chat with dsh from Feishu / WeCom / DingTalk / QQ / Slack / Discord / Telegram.
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_IDor wait for READY). CDN downloads honorHTTPS_PROXY. - Telegram: outbound long-poll only (no webhook). Groups need
@botwhenTELEGRAM_BOT_USERNAMEis 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
Links
More in this category
6Mikao9/dsh-wsl-workspace★ 106
Add a WSL workspace from the web GUI without needing to install dsh or related tools again inside WSL. Bash commands and file read/write operations run within the local WSL distribution on the host machine, while Windows files remain accessible.
XINY11451/dsh-wsl★ 10
Extends the working range of DSH into WSL. Files in the distribution can be read, written, edited and searched by DSH directly. Depending on the task, the AI chooses for itself: run a one-off command, or open its own terminal and run several commands there to finish the job. Typing `dsh` in a WSL terminal calls DSH (type `dsh help` there for details), fusing WSL and DSH deeply. Every terminal you open can collaborate visually with the AI.
Edge-Echo/dsh-win-toolkit★ 4
Windows-native tools for DSH agents: clipboard read and write, system notifications, hosts file inspection and network diagnostics, each returning structured data with UI cards from injection-safe PowerShell.
173787247/dsh-wsl-env★ 3
Injects WSL distro, Linux path mapping, /mnt/c CRLF and git caveats, and NODE_USE_ENV_PROXY into the system prompt.
173787247/dsh-wsl-open★ 3
Opens WSL Linux paths from DeepSeek Harness chat in the Windows default app or Explorer.
Han-1413141/dsh-wsl-native★ 3
Use Windows and native Linux DSH sessions in one Windows window, with WSL environment switching and bidirectional system tools.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.