前言¶
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_ID 或 WECOM_BOT_SECRET 提交到倉庫。
如果憑證非空但無效,通常只是該通道離線,不會讓整個 DSH 啓動失敗。
典型用法¶
在 WeCom 會話中處理工具審批¶
當 Harness 需要工具審批時,插件會把審批請求發到原始會話中。你可以在同一個 WeCom 會話中回覆:
/approve <code>
或拒絕:
/reject <code>
這類 code 用於一次性工具審批,並且綁定原始會話。
切換持久會話¶
需要換上下文時,使用:
/new
或:
/reset
這兩個命令會讓插件請求取消當前生成,並切換到新的持久會話。舊會話歷史仍會保留。
控制圖片輸入¶
插件支持通過 imageInputMode 控制圖片處理方式,可選值爲:
autoalwaysnever
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只在嚴格的singleAllowFrom和groupAllowFrom策略下啓用。/export依賴 Web 下載側能力,在 WeCom 通道中不可用。approvalTimeoutMs必須小於responseTimeoutMs。maxInboundFileBytes和maxOutboundFileBytes默認都是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