dsh-plugin-wecom-bot:通过企业微信长连接接入 DSH Agent

DeepSeek Harness(DSH)采用插件化架构。开发者经常需要通过企业微信与智能体交互。现有的解决方案通常需要配置公网 URL、消息加解密或可信 IP 白名单。dsh-plugin-wecom-bot 专注于解决这些问题,通过建立长连接实现简单的消息路由。

核心功能

该插件通过企业微信「智能机器人」长连接收发消息,把发给机器人的文本当作任务下发给 DSH agent 执行,并把结果回传到企业微信。

主要能力包括:

  • WebSocket 长连接模式:基于官方协议建立连接,支持流式回复。
  • 零公网依赖:长连接由插件主动连出,不需要配置公网 URL、消息加解密或可信 IP 白名单。
  • 会话模式:支持 per-user(每个成员一个会话)和 per-message(每条消息新建 agent)两种模式。
  • 工作区与会话管理:支持在聊天中切换工作目录、管理多个命名会话。
  • 审批转发:将沙箱升级等权限操作请求转发到企业微信,通过回复指令完成审批。
  • 协议兼容:通过 ws 库处理 ALPN 握手问题,解决 Node.js 默认 WebSocket 客户端与企业微信网关的兼容性。

安装与启用

在插件源码目录执行以下命令。

  1. 安装依赖(插件依赖 ws 库):
    pnpm install
  1. 装进 web profile:
    dsh plugin --profile web add .

安装完成后,重启 dsh web 生效。

配置

在启动 dsh web 前,设置环境变量即可启用。需要填写企业微信后台获取的 BotID 和 Secret。

export WECOM_BOT_ID="wwxxxxxxxxxxxxxx"
export WECOM_BOT_SECRET="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
dsh web

使用方法

启动与验证

启动后,日志应显示连接成功:

wecom-bot: connecting
wecom-bot: subscribed
wecom-bot: connected

在企业微信中私聊机器人发送指令,例如:

帮我总结一下这个目录下 README.md 的主要内容

工作区切换

在 per-user 模式下,可以切换 agent 的工作目录。每个企业微信成员独立记住自己的目录。

  • 查看工作区:#ws 或 查看工作区
  • 切换工作区:#ws <名称或路径>
  • 查看当前目录:#cwd

示例:

#ws productv4-web

会话管理

在 per-user 模式下,支持创建和管理多个命名会话。

  • 列出会话:#sessions 或 会话列表
  • 新建会话:#new <名称>
  • 切换会话:#use <名称>
  • 删除会话:#rm <名称>

权限审批

当 agent 需要执行需要权限提升的操作(如沙箱升级)时,会发起审批。审批请求会转发到企业微信,直接在聊天中回复即可。

示例:

🔐 需要审批 #1
回复「同意 #1」批准,或「拒绝 #1」拒绝

支持的回复指令包括:
* 批准:同意、批准、允许、是、ok、y,可带编号 #1。
* 拒绝:拒绝、不同意、否、no、n,可带编号 #1。

配置项说明

配置键 默认值 说明
botId 环境变量 WECOM_BOT_ID 智能机器人 BotID
botSecret 环境变量 WECOM_BOT_SECRET 智能机器人 Secret
sessionMode per-user per-user 每个成员一个 agent 会话;per-message 每条消息新建 agent
cwd 进程 cwd agent 的工作目录
maxReplyChars 6000 最终回复最大字符数,超出截断
forwardAllApprovalsToWecom true 是否将任何会话的审批请求都转发到企业微信处理
approvalTimeoutMs 0 审批超时(毫秒),0=不超时

已知限制

  • 长连接限制:同一机器人同时只允许一个长连接。另一处连上时,本连接会收到 disconnected_event 并被断开。
  • 消息频率:受企业微信限制,约 30 条/分钟。
  • 文件支持:语音消息按转写文本处理;图片/文件消息暂不处理(会被忽略)。
  • ALPN 握手:企业微信长连接网关要求 TLS ClientHello 携带 ALPN http/1.1。本插件使用 ws 库解决了此问题,若使用其他客户端需注意此限制。
  • 回复截断:最终回复超过 maxReplyChars 会被截断。

参考资料

羽毛球分组比赛记分
小程序二维码

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

小夜