dsh-wecom-plugin:企业微信与 DeepSeek Harness 的双向连接

前言

DeepSeek Harness (DSH) 鼓励“一切皆插件”的架构。当需要在企业微信(WeCom)中直接与 DSH 智能体交互时,通常需要一个公网入口或 Webhook。dsh-wecom-plugin 是一个最小可行性插件,旨在将企业微信智能机器人(aibot WebSocket)与 DSH 双向连通。它支持长连接常驻,且每个企微会话对应一个持久的 DSH agent 会话。

插件定位

本插件由 zhengmz 维护,是一个可行性验证 demo。它通过实现官方 @wecom/aibot-node-sdk 协议,打通了从企微网关到本地 DSH 插件的链路。

安装与启用

在 dsh web profile 中安装插件时,必须使用 file: 前缀以确保 ESM 模块解析正确:

dsh plugin --profile web add "file:<本插件仓库路径>"

核心功能

插件通过以下模块实现核心能力:

  • 企微智能机器人 WebSocket 客户端:位于 src/aibot-client.js。实现了流式回复、回执等待、心跳 ack、事件回调、846608 降级、认证失败重试、防互踢等协议细节。
  • 会话路由:位于 src/bridge.js。将一条企微消息映射为一个 DSH agent 会话,支持回复采集、分块和流式回推。
  • 本地模拟网关:test/mock-wecom.js。用于本地开发测试,与真实网关行为一致(仅测试用,无 cmd 的 ack 帧)。

配置项

接入真实企业微信后,需要在配置文件中填入凭据。以下是关键配置项:

键 含义 默认值
botId / secret 企业微信智能机器人凭据 ''
websocketUrl 网关地址(本地 mock 测试时改) wss://openws.work.weixin.qq.com
allowedUserIds 允许对话的企微 userid,空=放行所有 []
agent.sessionScope 会话隔离模式:chat(群共享)/ chat-user(群成员隔离,推荐) chat
agent.groupMention 群聊提及门控:none(每条都回)/ at(仅 @机器人时回) none
approval.enabled 企微内授权总开关(权限请求转发到企微会话) true
agent.cwd agent 默认工作目录 dsh 进程 cwd

使用示例

  1. 快速验证:在安装插件后,可运行测试脚本验证协议和桥接功能:
    node test/smoke.mjs
此测试覆盖了 43 项协议与桥接功能,包括媒体处理。
  1. 端到端演示:运行 node test/live-demo.mjs。这会在一个隔离的 DSH 环境里加载插件并连接本地 mock 企微网关,验证“企微消息 → 真实 agent → 真实 LLM → 回复”的完整链路。

注意事项

  1. Demo 状态:当前版本为可行性验证 demo。
  2. 生产部署:必须使用 file: 前缀安装,避免 ESM 模块解析问题。
  3. 开发环境:如需使用裸路径开发,仓库根目录的 node_modules 必须链接到 DSH 安装目录,否则会报 ERR_MODULE_NOT_FOUND。
  4. 企微内授权:需要一次性授权码,用户在企微内回复关键词(如“同意”)进行批准。

参考资料

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

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

小夜