前言¶
DeepSeek Harness (dsh) 的插件体系允许把 agent 能力接到更多入口里。对需要在 IM 客户端中使用 dsh agent 的人来说,常见问题是钉钉、QQ、个人微信的消息协议、会话状态、审批请求、提问请求和长文本限制各不相同,单独适配每个渠道会分散精力。
@lijian-ui/dsh-im-gateway 针对这类场景提供一个网关插件:把钉钉、QQ、个人微信接入同一个 ctx.imGateway,让 agent 在聊天窗口里获得流式回复、工具审批、交互提问、长文本分片、多段合并等能力。
下面介绍这个插件的定位、核心能力、安装方式和典型用法。
这是什么¶
@lijian-ui/dsh-im-gateway 是一个为 dsh 提供多 IM 通道接入的网关插件,支持钉钉 / QQ / 个人微信。
它的主要能力包括扫码绑定、流式回复、工具审批、交互提问、长文本分片、多段合并和双语界面。维护者为 lijian-ui,许可证为 MIT,GitHub 仓库地址为 https://github.com/lijian-ui/dsh-im-gateway 。
核心能力¶
多通道与统一网关¶
插件支持以下通道:
- 钉钉
- 个人微信
多个通道会汇聚到统一的网关服务 ctx.imGateway,提供会话管理、斜杠命令、流式回复和状态广播。
它也支持多机器人实例:同一通道类型可以配置多个实例,每个实例使用各自独立的凭据。
插件会在 dsh web UI 内渲染「IM 通道」设置页,通道绑定和配置可以从这里完成。
流式回复与长文本处理¶
流式回复支持:
- 钉钉 AI 卡片
- QQ
stream_messages
如果渠道不支持流式回复,插件会回退为纯文本。
当回复超过渠道单条上限时,长回复会被自动切分,并带有分段前缀。
工具审批与交互提问¶
当 agent 调用需要审批的工具时,插件提供工具审批桥。用户可以在 IM 中直接回复批准或拒绝。超时后,请求会委托回 dsh 原生审批体系。默认审批超时为 approvalTimeoutSecs: 120 秒。
当 agent 调用 ask_user_question 时,插件提供交互提问桥。问题会同步推送到 IM,用户回复选项编号或文字即可作答。超时后会转回 Web 端。默认提问超时为 questionTimeoutSecs: 600 秒。
多段输入合并¶
用户连续发送多条消息时,插件会自动合并输入。
控制后缀如下:
- 无后缀:进入合并窗口
..:续传合并!!:立即提交
文件发送¶
插件提供 im_send_file 工具,用于把工作区文件发送到当前 IM 会话。
语言与权限¶
插件支持双语界面。配置 im-gateway.language 为 zh 或 en,可以切换用户可见回复的语言。
权限控制使用用户白名单:
allowAllUsersallowedUserIds
allowAllUsers 是全局放行所有用户,仅适合开发环境,生产环境不建议开启。
安装与启用¶
先安装插件:
dsh plugin --profile web add @lijian-ui/dsh-im-gateway
npm 包自带预构建的 lib/,无需构建授权。
如果从 Git 安装,拉取的是源码,首次安装需要批准包的 prepare 构建脚本。pnpm >= 10 场景下,按提示把包键加进 profile 的 pnpm-workspace.yaml 中的 allowBuilds。优先使用 npm 或 tarball 方式可以跳过这一步。
安装后可以用下面命令查看配置:
dsh --profile web --dump-config
然后启动 dsh web UI,打开「设置 → IM 通道」完成通道配置。
需要注意,插件对 dsh 相关依赖有版本范围要求。它会依赖 @deepseek-ai/cordis、schemastery 等包,并要求特定范围的 @deepseek-ai/dsh-agent、dsh-llm、dsh-session。安装前应确认当前 dsh 环境是否匹配。
Windows 环境下,如果修改了 src/,必须重新构建后再重启 dsh 进程:
npm run build
典型用法¶
添加通道¶
下面介绍在 dsh web UI 中添加通道的基本步骤。
1、打开 dsh web UI → 设置 → IM 通道。
2、点击添加通道,选择 QQ、个人微信或钉钉。
3、按通道完成绑定。
QQ:
- 点击扫码登录
- 用手机 QQ 扫码
- 凭据自动填入后保存
个人微信:
- 点击扫码登录
- 用手机微信扫码
- 如要求则输入配对码
- 凭据自动填入后保存
钉钉:
- 手动填写
AppKey/AppSecret - 或者直接编辑配置文件
- 保存配置
配置会存储在 ~/.dsh/settings.yaml 的 im-gateway.channels。在 UI 中保存配置会热重载通道,无需重启。
发送消息和斜杠命令¶
在 IM 客户端给机器人发消息后,回复会实时流式返回。
插件内置以下斜杠命令:
/help
/model
/status
/new
/reset
/stop
/sessions
/continue
/workspaces
/workspace
常见用法包括:
/model
/status
/new
/sessions
/continue <会话id>
/workspaces
/workspace <路径>
审批回复¶
当 agent 请求审批时,可以在 IM 中直接回复。
批准类回复:
批准
同意
yes
y
allow
拒绝类回复:
拒绝
no
n
reject
deny
多段输入¶
连续输入时使用后缀控制:
..
!!
.. 用于续传合并,!! 用于立即提交。
切换界面语言¶
配置 im-gateway.language 为 zh 或 en:
im-gateway:
language: zh
适用场景与注意¶
这个插件适合以下场景:
- 需要把 dsh agent 接到钉钉、QQ 或个人微信
- 希望在 IM 中直接处理工具审批和交互提问
- 需要多个机器人实例分别使用独立凭据
- 需要长回复自动分片和多段输入合并
- 需要在聊天窗口中发送工作区文件
使用注意:
- 个人微信仅支持单聊。
allowAllUsers仅适合开发环境,生产环境建议使用allowedUserIds做白名单。- 插件以当前 dsh 进程权限运行,安装前应检查源码和 MIT 许可证。
- 从 Git 安装时需要注意
allowBuilds构建授权。 - 如果本地修改了源码,需要重新构建后再重启 dsh 进程。
结尾¶
@lijian-ui/dsh-im-gateway 的价值在于把钉钉、QQ、个人微信三个通道统一到 ctx.imGateway,减少为每个 IM 单独维护消息、审批、提问和会话逻辑的成本。
当前资料未给出可用的目录页地址,因此这里不列出具体目录页链接。可直接使用 GitHub 仓库地址:
https://github.com/lijian-ui/dsh-im-gateway