前言¶
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 |
使用示例¶
- 快速验证:在安装插件后,可运行测试脚本验证协议和桥接功能:
node test/smoke.mjs
此测试覆盖了 43 项协议与桥接功能,包括媒体处理。
- 端到端演示:运行
node test/live-demo.mjs。这会在一个隔离的 DSH 环境里加载插件并连接本地 mock 企微网关,验证“企微消息 → 真实 agent → 真实 LLM → 回复”的完整链路。
注意事项¶
- Demo 状态:当前版本为可行性验证 demo。
- 生产部署:必须使用
file:前缀安装,避免 ESM 模块解析问题。 - 开发环境:如需使用裸路径开发,仓库根目录的
node_modules必须链接到 DSH 安装目录,否则会报ERR_MODULE_NOT_FOUND。 - 企微内授权:需要一次性授权码,用户在企微内回复关键词(如“同意”)进行批准。