DeepSeek-harness-wecom:給 DeepSeek Harness 接入 WeCom AI Bot 文本、圖片與文件通道

前言

DeepSeek Harness(DSH)把很多能力放到插件裏,但一個常見的斷點仍然在會話通道上:Web 裏可以用 Agent,WeCom AI Bot 裏收到的文本、圖片、文件如何進入同一個 Harness 會話,如何繼續處理審批、文件和訪問策略,仍然需要單獨接一層。

sliverp/DeepSeek-harness-wecom 做的是這個通道橋接:它使用官方 @wecom/aibot-node-sdk 長連接,把 WeCom AI Bot 的文本、圖片、文件消息接入 DeepSeek Harness,並保留持久會話、審批、文件路徑限制和訪問控制。下面按安裝、配置、使用和注意事項展開。

這是什麼

這是一個獨立的 DSH channel plugin,用於把 WeCom AI Bot 作爲 DeepSeek Harness 的文本、圖片、文件通道。倉庫路徑是 sliverp/DeepSeek-harness-wecom,許可證爲 MIT,package.json 中報告的版本爲 0.1.5

它主要解決三類問題:

  • 讓 WeCom 單聊、羣聊中的文本消息進入 Harness 會話。
  • 讓圖片和文件能被 Harness Agent 的工具體系使用,而不是隻停留在聊天消息裏。
  • 保持與 Web 會話相近的工具、提示詞和 skills 組合,並支持審批、會話輪換和訪問策略。

它不是 DeepSeek Harness 的官方應用商店應用,而是社區目錄中的獨立插件。目錄頁和倉庫地址見文末。

核心功能

會話與消息

  • 使用官方 @wecom/aibot-node-sdk 長連接。
  • 支持 Bot ID + Secret 認證、心跳和重連處理。
  • 支持 WeCom 單聊和羣聊文本消息。
  • 每個單聊或羣聊對應一個持久 Harness 會話。
  • 支持 Harness agent-preset 組合,使工具和 skills 與 Web 會話保持一致。
  • 如果 Web 已經打開了同一個活躍會話,WeCom 側可以複用該會話,不會開啓第二個 session writer。

圖片與文件

  • 支持文本和圖片混合輸入。
  • 支持官方加密的圖片、文件、視頻下載,並做 AES 解密。
  • 支持 Durable Harness image attachments。
  • 解密後的入站文件保存在 workspace 外,並以絕對路徑暴露給 Agent 工具。
  • 當所選模型不能接受圖片時,自動退化爲僅文本處理。
  • 支持文本、inline image 回覆,也支持其他圖片格式的上傳後主動發送。
  • 提供當前 WeCom 回合內可用的 wecom_send_file 工具,帶 workspace 邊界和文件大小檢查。

命令與審批

  • 支持 WeCom Markdown 回覆,走官方 stream response fields。
  • 支持同一會話內的 /approve <code>/reject <code> 一次性工具審批。
  • 支持 /new/reset,切換到新的持久會話,同時保留舊歷史。
  • 支持轉發當前 agent preset 註冊的 Harness 命令;/compact/goal/plan 默認啓用。
  • 提供 /bot-ping/bot-image-test/bot-file-test/bot-help/bot-status/bot-cancel 等通道命令。
  • 支持 WeCom enter_chat 事件下的可選歡迎語。

訪問與穩定性

  • 對單聊和羣聊流量提供 open、allowlist 或 disabled 訪問策略。
  • 支持按會話順序處理、去重、重試和有限超時。
  • Secret 通過 Harness credential service 解析,而不是隻放在插件配置裏。
  • 如果 Bot ID 或 Secret 未配置,通道保持 dormant,DSH 本身仍能完成啓動。

安裝與啓用

先確認運行環境

插件要求:

  • Node.js 22.19 或更高版本。
  • pnpm 10.33.4
  • DeepSeek Harness 0.1.0-rc.7 或更高版本。
  • 一個已啓用長連接的 WeCom AI Bot,並具備 Bot ID 和 Secret。

安裝插件

從 GitHub 安裝:

pnpm dsh plugin --profile web add github:sliverp/DeepSeek-harness-wecom

如果使用本地 checkout:

pnpm dsh plugin --profile web add /absolute/path/to/DeepSeek-harness-wecom

安裝本身不要求立即配置憑證。如果 Bot ID 爲空,或引用到的 Secret 不存在、爲空,通道會保持 inactive,DSH 仍會完成啓動。之後配置好憑證並重新加載或重啓 DSH,再接入 WeCom。

配置憑證

開發環境可以先用環境變量啓動:

export WECOM_BOT_ID='your-bot-id'
export WECOM_BOT_SECRET='your-bot-secret'
pnpm dsh --profile web

如果要做持久化配置,把 WECOM_BOT_ID 放到 ~/.dsh/.env,並通過 Harness credential settings surface 保存 WECOM_BOT_SECRET。不要把 WECOM_BOT_IDWECOM_BOT_SECRET 提交到倉庫。

如果憑證非空但無效,通常只是該通道離線,不會讓整個 DSH 啓動失敗。

典型用法

在 WeCom 會話中處理工具審批

當 Harness 需要工具審批時,插件會把審批請求發到原始會話中。你可以在同一個 WeCom 會話中回覆:

/approve <code>

或拒絕:

/reject <code>

這類 code 用於一次性工具審批,並且綁定原始會話。

切換持久會話

需要換上下文時,使用:

/new

或:

/reset

這兩個命令會讓插件請求取消當前生成,並切換到新的持久會話。舊會話歷史仍會保留。

控制圖片輸入

插件支持通過 imageInputMode 控制圖片處理方式,可選值爲:

  • auto
  • always
  • never

auto 適合大多數情況:圖片能力可用的模型接收圖片附件,不能接收圖片的模型退化爲文本信息。always 只適合確定路由接受圖片的場景,never 則強制走文本 fallback。

查看通道命令

在 WeCom 中發送:

/help

或:

/bot-help

可以列出當前可用的通道命令。

調整策略與連接行爲

插件行可以放在:

~/.dsh/profiles/web/cordis.patch.yml

中覆蓋,用於調整策略或連接行爲。下面這些配置項會經常涉及:

singleAllowFrom
groupAllowFrom
imageInputMode
inboundFileDirectory
maxInboundFileBytes
maxOutboundFileBytes
approvalTimeoutMs
responseTimeoutMs
maxReplyBytes

幾個需要特別注意的約束:

  • 如果 workspace 中包含非公開數據,應使用 allowlist 策略。
  • /permission 只在嚴格的 singleAllowFromgroupAllowFrom 策略下啓用。
  • /export 依賴 Web 下載側能力,在 WeCom 通道中不可用。
  • approvalTimeoutMs 必須小於 responseTimeoutMs
  • maxInboundFileBytesmaxOutboundFileBytes 默認都是 20971520 字節,即 20 MiB。
  • maxReplyBytes 默認是 20000 字節。

入站文件會保存在 inboundFileDirectory 下,並帶 owner-only 權限。默認目錄可能位於操作系統臨時目錄下;如果文件需要保留,不要依賴臨時目錄的默認位置。

適用場景與注意

這個插件適合在以下場景使用:

  • 你已經有 DeepSeek Harness 會話,希望在 WeCom AI Bot 中繼續使用。
  • 你需要在單聊或羣聊中處理文本、圖片、文件。
  • 你需要把 Harness 的工具審批接入聊天會話。
  • 你需要對 WeCom 流量做訪問控制、會話輪換和文件大小限制。

使用前注意:

  • 插件會隨當前 dsh 進程權限運行,安裝前應檢查源碼和許可證。
  • wecom_send_file 只在當前 WeCom 回合內激活,並且路徑要落在 cwd 內部。
  • WeCom 消息進入後,模型、工具和文件訪問仍然受當前 Harness 配置約束。
  • 社區目錄頁不是 DeepSeek Harness 的官方應用商店,安裝時仍應按普通第三方插件對待。

參考

  • 目錄頁:https://www.skillhub.cn/plugins/sliverp/DeepSeek-harness-wecom
  • GitHub 倉庫:https://github.com/sliverp/DeepSeek-harness-wecom
羽毛球分组比赛记分
小程序二维码

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

小夜