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 會被截斷。

參考資料

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

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

小夜