@lijian-ui/dsh-im-gateway:为 dsh 接入钉钉、QQ 和个人微信通道

前言

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 。

核心能力

多通道与统一网关

插件支持以下通道:

  • 钉钉
  • QQ
  • 个人微信

多个通道会汇聚到统一的网关服务 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.languagezhen,可以切换用户可见回复的语言。

权限控制使用用户白名单:

  • allowAllUsers
  • allowedUserIds

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/cordisschemastery 等包,并要求特定范围的 @deepseek-ai/dsh-agentdsh-llmdsh-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.yamlim-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.languagezhen

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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜