前言¶
在 DeepSeek Harness(DSH)裏跑 agent,常見入口是 Web 或 Desktop 會話。若希望把同一套 agent 接到微信裏、和用戶單聊收發消息,自行對接協議或走非官方客戶端往往成本高、合規風險也不清晰。
dsh-weixin-channel 是社區維護的 DSH 插件(維護者 ChencLi819,分類爲客戶端),通過騰訊官方 iLink Bot API(微信 ClawBot 通道)接入:掃碼授權機器人身份,不模擬個人號登錄、不讀通訊錄與朋友圈,只做「能收發消息的機器人」。微信用戶與 DSH 會話做確定性映射,並內置白名單與工具收口。
插件當前版本 0.1.0,許可證 MIT,GitHub 星標爲 0。目錄頁:https://www.skillhub.cn/plugins/ChencLi819/dsh-weixin-channel;源碼:https://github.com/ChencLi819/dsh-weixin-channel。
這是什麼¶
一句話:dsh-weixin-channel 把 DSH agent 接到微信單聊,走官方 Bot 通道,支持文本、圖片、語音、文件(及入站視頻)的收發,並把每個微信用戶映射爲獨立 DSH 會話。
與「PC 微信逆向 / 協議模擬」不同,通信基址默認爲 https://ilinkai.weixin.qq.com,依賴已開通 ClawBot / iLink Bot 通道的微信號完成掃碼登錄。
核心功能¶
下面能力均來自插件 README 的功能表與說明。
| 能力 | 說明 |
|---|---|
| 掃碼登錄 | 生成二維碼 PNG,微信掃碼授權;憑證落盤,重啓可免掃 |
| 入站消息 | 長輪詢接收文本、圖片、語音、文件、視頻;消息 ID 去重 |
| 圖片處理 | 入站圖片經 DSH attachments 服務轉爲原生圖片塊,進入模型視野 |
| 語音轉寫 | 優先使用平臺自帶轉寫文本,不依賴外部 ASR |
| 出站消息 | 文本按句子邊界切分;圖片與文件按擴展名路由 |
| 會話映射 | 微信用戶與 DSH 會話確定性映射,重啓後可續接上下文 |
| 白名單 | 默認僅放行登錄者本人;名單爲空時不會退化爲放行所有人 |
| 工具收口 | 微信會話可見工具限制爲白名單內若干項(默認 26 個) |
| 插件頁二維碼 | DSH 界面內可直接顯示登錄二維碼 |
協議側不提供羣聊能力;插件定位爲單聊渠道。
兼容性與依賴¶
使用前確認環境與賬號條件:
| 項目 | 要求 |
|---|---|
| DSH 宿主 | ^0.1.0-rc.6 或 ^0.2.0-rc.1(見 peerDependencies) |
| Node.js | >= 22 |
| 微信 | 已開通 ClawBot / iLink Bot 通道的微信號 |
@deepseek-ai/schemastery |
^3.18.1(配置校驗) |
silk-wasm |
可選,解碼 SILK 語音 |
| Python | 可選,僅用於二維碼解碼對照測試 |
安裝與啓用¶
通過 DSH CLI 安裝(推薦)¶
Web 與 Desktop 使用不同 profile;安裝後需重啓 DSH。
# 從 npm 安裝
dsh plugin --profile web add dsh-weixin-channel
# 或從源碼安裝
dsh plugin --profile web add github:ChencLi819/dsh-weixin-channel
# Desktop 版
dsh plugin --profile desktop add dsh-weixin-channel
以 link: 方式本地聯調時,需在插件目錄補指向宿主包的鏈接,並在 profile 的 package.json 的 dsh.profile.bundles 中加入 dsh-weixin-channel,細節見倉庫 README「3.2 通過倉庫腳本 / link 安裝」。插件會寫入體檢文件 ~/.dsh/wechat-channel/diagnostic.json。
升級與卸載¶
升級:重新執行上述 CLI 安裝命令;link: 方式更新源碼後重啓 DSH。
卸載:從 dsh.profile.bundles 移除並卸載依賴;若不再使用,可刪除 ~/.dsh/wechat-channel。
登錄流程¶
登錄依賴插件自身的長輪詢,不要用截圖代替插件發起的流程,也不要關進程後再掃——二維碼有時效,掃碼後憑證需在輪詢中接收。
- 調用
wechat_login(action=start)申請二維碼,返回 PNG 路徑(默認~/.dsh/wechat-channel/login-qr.png)。 - 用微信掃碼。
- 若手機提示輸入配對碼,調用
wechat_login(action=verify,code=<配對碼>)。
憑證保存在 ~/.dsh/wechat-channel/sdk/,之後啓動可自動登錄(受配置 login.autoLogin 控制)。action=logout 會停止輪詢並刪除憑證目錄。
工具與典型用法¶
插件註冊 3 個工具,輸出均爲 { text: string }。
wechat_login¶
管理登錄狀態:action 爲 start(生成二維碼)、verify(提交配對碼,需 code)、logout(清除登錄狀態)。
wechat_status¶
查詢渠道狀態:登錄情況、二維碼位置、收發計數、白名單。可選 selftest: true 真實建立一次會話,校驗工具收口名單有效性(日常不必開啓)。
wechat_send¶
向微信發送內容:userId 默認爲當前會話對端;text 與 file(http(s) 鏈接或本地絕對路徑)可同時提供,會拆成兩條消息(微信不支持圖文混合單條)。
回覆當前會話時不需要調用 wechat_send,agent 正文會自動發送。
配置要點¶
在 profile 的 cordis.patch.yml 中深合併覆蓋,示例:
- id: wechat-channel
config:
allow:
users: ['wxid_xxxxxxxx'] # 留空 = 只放行登錄者本人
send:
maxPerMinute: 6
session:
resetCommand: '/new'
tools:
restrict: true
allow: [wechat_login, wechat_status, wechat_send]
常用項摘要:
allow.users/allow.selfOnly:白名單;列表爲空時默認只放行掃碼登錄的微信號,不會全員開放。send.maxPerMinute:出站限流,默認12(示例裏改爲6)。session.resetCommand:默認/new重置會話。tools.restrict+tools.allow:微信會話工具收口;寫錯工具名時插件會向安全方向回退(移除無效名後重試),避免收口失敗導致工具面全開。stateDir:默認~/.dsh/wechat-channel,存放憑證、context token、日誌與媒體。
iLink 要求出站消息迴帶最近一次入站的 context_token;該 token 需持久化,重啓丟失會導致無法繼續發送。完整配置表見倉庫 README「6. 配置」。
安全模型與適用場景¶
三道邊界(默認)¶
- 誰能觸發:白名單,默認僅登錄者本人。
- 能做什麼:工具收口,默認 26 項(無 shell、文件編輯、子代理等)。
- 能聊什麼:僅單聊,不可配置成羣聊。
即便有上述邊界,插件背後仍是具備工具調用能力的 agent。不要把該渠道暴露給不可信的人。 安裝前請自行閱讀源碼與 MIT 許可證;插件以當前 DSH 進程權限運行,與 DSH 本體一樣,社區目錄站點與 DeepSeek / 幻方無官方從屬關係。
適合誰¶
- 已在 DSH 中跑 agent,且微信號已開通 ClawBot / iLink Bot,希望把單聊作爲輕量觸達通道。
- 需要官方 Bot 通道而非客戶端逆向,並願意接受白名單、限流與工具收口等默認安全策略。
- 需要圖片進模型、語音轉寫、會話續接與
/new重置等開箱行爲。
已知限制(節選)¶
- 單聊 only;出站文本有長度與每分鐘條數限制。
- 部分全局工具(如
web_search、write、pwsh)不在微信會話繼承鏈上,即使寫入allow也不會出現;聯網檢索走advanced_search/multi_search/research等已放行工具。 - 運維與故障排查、合規說明見倉庫 README 第 9–11 節。
結尾¶
dsh-weixin-channel 把 DSH agent 接到微信單聊:官方 iLink Bot API、掃碼登錄、多媒體與會話映射,並用白名單與工具收口收窄暴露面。安裝使用上述 CLI 命令,登錄走 wechat_login 實時流程,配置在 cordis.patch.yml 中按需覆蓋。