前言¶
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。 - 企微內授權:需要一次性授權碼,用戶在企微內回覆關鍵詞(如“同意”)進行批准。