dsh-weixin-channel:用官方 iLink Bot API 把 DSH Agent 接進微信單聊

前言

在 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。

登錄流程

登錄依賴插件自身的長輪詢,不要用截圖代替插件發起的流程,也不要關進程後再掃——二維碼有時效,掃碼後憑證需在輪詢中接收。

  1. 調用 wechat_login(action=start)申請二維碼,返回 PNG 路徑(默認 ~/.dsh/wechat-channel/login-qr.png)。
  2. 用微信掃碼。
  3. 若手機提示輸入配對碼,調用 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. 配置」。

安全模型與適用場景

三道邊界(默認)

  1. 誰能觸發:白名單,默認僅登錄者本人。
  2. 能做什麼:工具收口,默認 26 項(無 shell、文件編輯、子代理等)。
  3. 能聊什麼:僅單聊,不可配置成羣聊。

即便有上述邊界,插件背後仍是具備工具調用能力的 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 中按需覆蓋。

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

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

小夜