前言¶
DeepSeek Harness(简称 dsh)是 DeepSeek 开源的智能体运行时,官方仓库写明核心理念是「一切皆插件」:模型、工具、会话、沙箱、UI 都可以在配置层替换,不必改核心源码。实际用起来,很多人会碰到另一件事:agent 跑在本机终端或 Web 界面里,人却经常不在电脑前。工具调用要批准、交互提问要选选项、改一行配置也得回到浏览器。手机上的微信、飞书、Telegram 反而才是真正常开的入口。
社区插件 dsh-im-gateway 做的就是这件事:在 dsh 进程里挂一个聚合 IM 网关,把入站消息归一化成 agent 会话,再把回复、审批请求和提问推回聊天软件。它由 zhuiyueya 维护,TypeScript 实现,MIT 许可证,当前 npm 版本为 0.1.0。社区目录把它归在「会话与消息」。2026-08-17 查询 GitHub 仓库为 21 星。需要说明的是,DSH 插件库 是独立社区站点,与 DeepSeek / 幻方没有官方从属关系,不要把它当成官方应用商店。
下面按目录页、GitHub README 和源码能核对到的内容,介绍它是什么、装什么命令、连上之后怎么用。
这是什么¶
dsh-im-gateway 是一个标准的 dsh.bundle 插件。安装后会往当前 profile 插入 im-gateway 这一行,并在 Web GUI 的设置页注册「IM 网关」面板。package.json 里客户端声明的平台是 web,也就是说它主要挂在 Web 配置上,而不是单独做一个聊天客户端。
它要解决的问题可以收成三句:
- 人在微信、飞书、Telegram、Discord、QQ 等聊天软件里发消息,就能驱动同一个 dsh agent。
- 不同聊天窗口默认对应不同会话,也可以用命令切工作区、继续旧会话,或绑定本机已有的 live 会话。
- agent 请求工具批准、或调用
ask_user_question时,问题可以同步到 IM;在聊天里回复即可,不必盯着浏览器。
仓库地址是 zhuiyueya/dsh-im-gateway。社区里还有名称接近的其他 IM 插件,安装时请认准这个 GitHub 路径,不要混用。
核心功能¶
按 README 和 src/index.ts 的说明,网关侧已经落地的能力大致如下。
每聊天一个会话。 默认 sessionMode 为 per-chat:一个聊天窗口对应一个 agent 会话,群里说话就是在驱动 agent,回复会实时回推。也可以改成 bound 模式,用 /bind 把某个 IM 聊天绑到本机已有会话上。重启后会尝试恢复该聊天上次绑定的会话。
远程审批。 agent 走到需要用户批准的工具调用时,网关把请求推到聊天里。回复「批准 / 拒绝」(也认 yes / no / 同意)即可。超时后转回本机批准体系;README 里默认超时是 120 秒,对应配置项 approvalTimeoutSecs。审批应答会校验会话归属,不是任意一条消息都能放行。
交互式提问。 当 agent 调用 ask_user_question 时,Web GUI 上的结构化问题会同步到该会话绑定的全部 IM 聊天。Web 和 IM 都可以答,第一份有效答案生效,其余渠道会收到已回答通知。单选可回编号或标签,多选用逗号或顿号分隔,多个问题按 问题序号: 答案 分行。IM 侧等待窗口由 questionTimeoutSecs 控制,README 默认 600 秒;超时后 Web 上仍可继续回答。
手机输入合并与长回复分片。 消息以 .. 结尾表示还有后续,以 !! 结尾立即提交;裸文本有 5 秒合并窗口(mergeTimeoutSecs)。回复按各渠道字数上限切开,优先在换行或句号处断开,并带 (i/n) 序号。
可视化连接。 打开 dsh Web GUI(README 写的默认地址是 http://localhost:3080)→ 设置 → 「IM 网关」。微信 / WhatsApp 可以点「连接(扫码)」弹出二维码;飞书、Telegram、QQ 机器人、Discord、Slack 等则填 token 或 App 凭据后保存连接。连接后不必再为渠道本身重启;安装插件本身需要重启一次 dsh。登录态会落盘,重启后已配置渠道会尝试自动重连。
媒体。 README 写明微信渠道支持图片、语音(服务端转文字)、文件和视频。agent 可调用 im_send_file,把工作区里的文件发到当前聊天。
访问控制。 源码里 allowAllUsers 的 Schema 默认值是 true,注释写的是个人或小团队开箱即用。需要管控时改为 false,再用 allowedUserIds 按渠道(或 * 全局)写白名单。不在名单里的用户会收到未授权提示,同时在设置面板登记「有用户请求访问」,管理员点允许即可,不必手工翻用户 ID。
支持哪些渠道¶
目录页和 package.json 都写的是「20+ 聊天平台」。GitHub README 给了一张状态表,完整可用(收发)的包括:
- Telegram(Bot API 长轮询,需要 @BotFather token)
- Discord(Gateway WebSocket)
- Slack(Socket Mode,需要
xoxb-与xapp-token) - 飞书 / Lark(官方 SDK 长连接,App ID + Secret)
- 微信(iLink 扫码登录;README 建议用专用小号)
- QQ 机器人(官方 WebSocket,AppID + Secret)
- LINE、Matrix、Mattermost、IRC、Twitch
- Signal(依赖本机
signal-cli) - Nextcloud Talk、Synology Chat、Zalo
- iMessage(macOS,依赖 imsg / osascript)
另外两类不要和上面混为一谈:
- 动态依赖: WhatsApp 需要额外安装
@whiskeysockets/baileys再扫码;Nostr 需要@noble/curves。 - 实验性或骨架: Teams、Google Chat,以及 Tlon / 元宝 / 语音。README 写明启用前应阅读源码,其中部分还需要公网地址或专用基础设施。
微信走的是腾讯 iLink Bot 协议。README 的安全说明里写:仅私聊、一个账号一个 poller,建议专用小号;使用即表示同意微信相关功能条款。这不是网页版微信的非官方协议包装,但仍然要把号和 dsh 进程权限一起当作敏感资源来看。
安装与启用¶
插件以当前 dsh 进程的权限运行,安装时可能执行代码。装之前先看仓库和许可证;生产环境建议固定 commit,而不是一直追 main。
社区目录页给出的安装命令是:
dsh plugin add github:zhuiyueya/dsh-im-gateway
需要可复现安装时,按目录页的写法把 commit 哈希接在后面:
dsh plugin add github:zhuiyueya/dsh-im-gateway#<commit>
GitHub README 面向 Web GUI 的推荐写法带了 --profile web,并且已经发布到 npm:
dsh plugin --profile web add dsh-im-gateway
也可以从仓库直装:
dsh plugin --profile web add https://github.com/zhuiyueya/dsh-im-gateway.git
本地开发或需要先构建时:
git clone --depth 1 https://github.com/zhuiyueya/dsh-im-gateway.git
cd dsh-im-gateway
npm install && npm run build
dsh plugin --profile web add "$(pwd)"
装完后重启一次 dsh web。之后打开设置里的「IM 网关」,按渠道扫码或填凭据即可。面板上「断开」只是临时停用,重启仍会按已保存配置恢复;「删除配置」才会清掉凭据。
凭据也可以写在 ~/.dsh/profiles/web/cordis.patch.yml 的 im-gateway 配置里,或用环境变量。README 列出的常用变量包括 DSH_TELEGRAM_TOKEN、DSH_DISCORD_TOKEN、DSH_FEISHU_APP_ID / DSH_FEISHU_APP_SECRET、DSH_QQ_APP_ID / DSH_QQ_APP_SECRET 等。微信和 WhatsApp 是扫码启用,不靠这类 token 环境变量。
通用配置示例(摘自 README,默认值以源码 Schema 为准):
- id: im-gateway
config:
sessionMode: per-chat
cwd: /path/to/workspace
allowAllUsers: true
allowedUserIds:
telegram: ['123456789']
'*': ['u-common']
mergeTimeoutSecs: 5
approvalTimeoutSecs: 120
questionTimeoutSecs: 600
summaryOnTurnEnd: true
cwd 是 agent 工作目录。provider / model 不写则跟随当前 dsh;源码默认值分别是 deepseek-official 和 deepseek-v4-flash。状态目录默认在 $DSH_HOME/dsh-im-gateway(未设置 DSH_HOME 时即 ~/.dsh/dsh-im-gateway)。
典型用法¶
渠道连上之后,在对应聊天里给机器人发消息即可。以 / 开头的是命令,普通文本会交给 agent。
/help
/status
你好,帮我看看当前工作区
README 中的命令如下:
| 命令 | 作用 |
|---|---|
/help |
帮助 |
/status |
当前会话 id、工作区、待批准情况 |
/new 或 /clear |
per-chat 模式下开启新会话 |
/workspaces |
列出工作区 |
/workspace <路径> |
切换工作区,后续 /new 生效 |
/sessions [all\|路径] |
列出会话 |
/continue <会话id> |
继续已有会话,可跨渠道、跨工作区 |
/bind |
bound 模式下绑定本机 live 会话 |
/unbind |
解绑 |
/channels |
各渠道连接状态 |
批准 / 拒绝 |
应答待批准请求 |
输入比较长时,可以分几条发,最后一条以 !! 结束;中间用 .. 表示还没说完。
适用场景与注意事项¶
比较对口的用法是:人经常离开电脑,但希望用已经在用的聊天软件盯着 agent;或者同一套工作区要在微信私聊、飞书群、Telegram 之间切换,又不想为每个平台单独写机器人。远程审批和交互提问,适合那些工具调用频繁、又不能在本机一直点「允许」的情况。
使用前有几条必须看清楚。
第一,这是第三方社区插件,不是 DeepSeek 官方组件。它以当前 dsh 进程权限运行,能接触工作区文件、已配置的模型密钥,以及你填进去的 IM token。安装前应阅读仓库源码和 MIT 许可证,敏感环境建议先用独立的 DSH_HOME 试。
第二,不要让多个 dsh 进程共享同一个 DSH_HOME。README 写明:并发恢复同一会话会写出重复 seq 并损坏历史;网关会拒绝第二个实例。测试请用独立目录,例如 DSH_HOME=/tmp/dsh-test-8788 dsh web。
第三,微信请用专用小号,不要拿常用个人号去扫。WhatsApp、Signal、iMessage 各自还有本机依赖或系统限制。实验性渠道不要直接当生产入口。
第四,目录页上的星标、最近推送时间可能滞后于 GitHub。本文渠道列表、命令和配置以 2026-08-17 打开的 GitHub README、package.json 和 src/index.ts 为准。
小结¶
dsh-im-gateway 把 dsh 的会话从 Web 界面延到常用 IM:统一路由、远程审批、交互提问、扫码连微信,这些在仓库文档里都能对上。安装入口以社区目录为准:
dsh plugin add github:zhuiyueya/dsh-im-gateway
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-im-gateway/
GitHub:https://github.com/zhuiyueya/dsh-im-gateway
DeepSeek Harness 官方仓库:https://github.com/deepseek-ai/deepseek-harness