@lanbaolu/dsh-wechat-bridge:把微信接進本地 DSH Agent

前言

DSH(DeepSeek Harness)的理念是「一切皆插件」,Agent 跑在本機上處理代碼、文件和各種自動化任務。麻煩在於,這些任務往往不是幾秒鐘能結束的:跑一輪測試、批處理一批文件,期間你得守在終端前才能看到進展;如果 Agent 中途發起權限確認,人也必須在場。

用 SSH 或遠程桌面連回機器能解決「能操作」,但體驗割裂——在小屏幕上敲命令、翻會話,都不如日常聊天來得自然。

下面介紹的 @lanbaolu/dsh-wechat-bridge 走的是另一條路:它把微信接進 DSH。掃碼綁定個人微信後,在微信裏就能和本機 Agent 對話、收發文件、接收任務通知、完成權限審批。

插件概況

這個插件由 lanbaolu 維護,當前版本 0.9.0,MIT 許可證。微信協議層移植自 wechat-claude-code(iLink Bot 協議);DSH 側以 Host 插件實現,同時提供模型工具(CLI/Headless 可用)與 Web 管理面板(Web/桌面可用)兩個管理入口。

三端通用:Windows / macOS / Linux 的守護進程都用純 Node.js 進程管理,不依賴 launchd / systemd / Windows Service。

整體鏈路是:橋接守護進程處理微信協議,通過只監聽 127.0.0.1、帶隨機 token 鑑權的 HTTP + SSE 與 DSH Host Plugin 通信,再由後者創建或恢復 DSH Agent。

微信 App ←→ iLink Bot API ←→ bridge daemon (Node.js)
                                  │  HTTP + SSE (127.0.0.1, token 鑑權)
                                  ▼
                          DSH Host Plugin
                                  │  ctx.agents.create/resume + followup
                                  ▼
                          DSH Agent (本機 LLM + 工具)

倉庫代碼分三部分:src/bridge/ 是微信協議層與橋接守護進程,src/index.ts 是 DSH Host 插件(內部 API、Agent 生命週期、守護進程管理、模型工具),src/client/index.ts 是 Web 管理面板(經 settings.section 槽位註冊)。

下面分節展開功能。

對話與會話延續

微信掃碼綁定個人微信後,在微信裏直接與 DSH 本機 Agent 對話。每個微信賬號對應一個 DSH 會話,DSH Host 重啓後會自動 resume 原持久化會話,上下文不斷檔;/clear/new/stop/cwd/model/prompt 等斜槓命令可在微信內使用,完整列表見下文。

流式回覆、超時安撫與防卡死

DSH Agent 的 assistant/chunk 輸出通過本地 SSE 推送到微信,攢批聚合發送,長回覆不會刷屏。

當 DSH 超過 5 分鐘沒有輸出時,橋接會自動發一條「還在處理」的消息,避免你誤以爲它卡住了。這個行爲可以配置,見後文「超時安撫」。

防卡死方面,橋接會向微信會話自動注入通道約束提示詞,禁用瀏覽器端的交互式選項工具(手機上看不到,會永久阻塞),改用純文本編號選項。

主動通知與微信內審批

Agent 可以通過 wechat_notify 工具,在任務完成、失敗或需要確認時主動推送微信。通知內置節流:每小時最多 6 條、每日最多 50 條,超限排隊延遲發送,以規避個人號風控。

Agent 請求權限時,橋接會把審批消息推到微信:回覆 /yes 批准、/no 拒絕,超時自動拒絕(fail-closed)。只有綁定賬號本人可以裁決,且不影響桌面 GUI 會話。

文件與媒體雙向

媒體收發能力(截至 0.9.0 版本):

方向 文本 圖片 語音 文件 視頻
微信 → DSH 支持 支持,CDN 下載 + 解密落盤 支持,轉寫爲文本 支持,下載落盤交給 agent 支持,CDN 下載落盤交給 agent
DSH → 微信 支持,攢批聚合發送 支持,按擴展名路由直髮 不支持 支持,回覆提及自動推送 支持,按擴展名路由直髮(mp4/mov/webm/mkv/avi)

兩點補充:

  • 視頻收發於 2026-08-29 補齊,2026-08-30 完成真機收發抽驗。
  • 語音出站(DSH → 微信)暫不支持,協議尚無公開實現參考。

另外,DSH 回覆中提到的本地文件會自動推回微信;微信裏也可以直接發圖片、文件給 DSH。

消息隊列與多用戶

處理中收到的普通消息會排隊,等當前任務結束後繼續處理。多用戶場景下按用戶獨立排隊,A 的長任務不會阻塞 B。

多用戶支持基於信任集加 per-user 會話:每個受信用戶擁有獨立的 DSH 會話、上下文、消息隊列和審批歸屬,互不可見;信任集可控、可吊銷。細節見「安全模型」一節。

安裝與啓用

安裝

三種安裝方式,任選其一。

方式一,npm 一鍵安裝(推薦):

npm install @lanbaolu/dsh-wechat-bridge
dsh plugin --profile web add @lanbaolu/dsh-wechat-bridge
dsh web

第一條命令安裝包,第二條把插件註冊進 DSH 的 web profile,第三條啓動 Web 界面。

方式二,本地路徑安裝(開發/個人使用):

git clone https://github.com/lanbaolu/dsh-wechat-bridge.git
dsh plugin --profile web add /path/to/dsh-wechat-bridge
dsh web

開發模式下還可以用超級注入器:

dev_inject_plugin /path/to/dsh-wechat-bridge

方式三,從源碼運行:

npm install
npm run build
npm run build:client
npm run typecheck

運行時要求 Node.js >= 18;注意 build:client 腳本使用 tsdown,需要 Node.js 22.18+ 或 24.11+(CI 用 22/24 驗證)。

掃碼綁定與啓動

推薦在 DSH Web 設置頁完成:

  1. 打開 Settings,進入「微信橋接」區塊。
  2. 填寫 DSH 工作目錄。
  3. 點擊「掃碼綁定」,用微信掃描頁面上的二維碼。
  4. 綁定成功後點擊「啓動」。

也可以在 DSH 所在機器的終端執行:

node lib/bridge/main.js setup

按提示用微信掃碼,完成後選擇 DSH 工作目錄。

守護進程管理

守護進程的啓動 / 停止 / 重啓 / 狀態 / 日誌全部由 DSH 插件管理,兩條路徑:

  • 模型工具:在 DSH 對話中讓模型執行 wechat_bridge_startwechat_bridge_statuswechat_bridge_logswechat_bridge_stop
  • Web 面板:在設置頁「微信橋接」區塊點擊啓動 / 停止 / 重啓。

經過上面的步驟,微信端和 DSH 端的通道就通了,日常操作都可以在微信裏完成。

微信端常用命令

命令 說明
/help 顯示幫助
/clear 清除當前 DSH 會話
/new 開啓全新會話(等價 /clear
/stop 停止當前任務並清空排隊消息
/status 查看會話狀態
/cwd [路徑] 查看 / 切換工作目錄
/model [名稱] 查看 / 切換模型
/prompt [內容] 查看 / 設置系統提示詞
/history [數量] 查看最近對話
/send <路徑> 發送本地文件到微信
/trust <userId> [備註] 添加信任用戶(manual 模式;僅 owner)
/distrust <userId> 吊銷信任用戶(僅 owner)
/trustlist 查看信任集(僅 owner)
/trustmode [模式] 查看/切換信任模式(owner-only / bootstrap / manual)

可選配置

插件數據目錄默認在 ~/.dsh/wechat-bridge/,可通過 DSH_HOME 環境變量調整。下面兩項配置都在該目錄下的 config.json 中編輯。

超時安撫

DSH 長時間沒有產出時,橋接會主動發「還在處理」的消息(默認靜默 5 分鐘後觸發)。如果嫌頻繁或想自定義文案,編輯 config.jsoncalm 節:

{
  "calm": {
    "enabled": true,        // 是否啓用安撫,默認 true
    "silenceMs": 600000,    // 首次靜默多久後安撫(毫秒),默認 300000(5 分鐘)
    "intervalMs": 900000,   // 兩次安撫最小間隔(毫秒),默認同 silenceMs
    "maxCount": 3,          // 每輪任務最多安撫次數,0/省略 = 不限制
    "messages": [           // 自定義文案(隨機取一條),留空用內置默認
      "還在處理中,這個問題有點複雜,請再稍等一下",
      "馬上就好,正在收尾"
    ]
  }
}

保存後即時生效(最長延遲數秒),無需重啓守護進程。也可以在 Web 面板的「超時安撫」區塊調整。

防休眠

默認關閉。開啓後,守護進程運行期間會抑制系統休眠——鎖屏 / 合蓋不掛起,微信消息持續響應,適合掛機跑長任務。編輯 config.json

{
  "preventSleep": true
}

也可以用 Web 面板的「防休眠」開關。切換後需重啓守護進程生效,在面板點「重啓」即可。平臺實現:macOS 用 caffeinate,Linux 用 systemd-inhibit,Windows 用 SetThreadExecutionState,均爲盡力而爲。

安全模型

先明確一個前提:iLink 協議的掃碼綁定是 bot 自身登錄(不是與用戶配對),所以「多用戶」的邊界是在協議層之上劃定的——把可信微信用戶的 from_user_id 加進信任集,據此放行或拒絕入站消息。

信任有三種模式,默認 fail-closed:

模式 行爲 適用
owner-only(默認) 只認綁定賬號 owner 本人,陌生人一律拒絕 單用戶
bootstrap 首個聯繫的陌生人自動入信任集(一次性),之後不再自動 快速開號試用
manual 僅 owner 用 /trust 或 Web 面板顯式添加的人可對話 正式多人使用

幾條補充規則:

  • 陌生人消息只記日誌、不回覆,不泄露內部信息;可選設置 notifyRejected: true,讓 owner 收到「陌生人嘗試聯繫」的提醒。
  • 信任集持久化在 trust.json(權限 0600),mode 是唯一真相源。
  • 通過 /distrust 或面板吊銷後,該用戶新消息立刻被拒絕;其歷史會話文件保留只讀,不丟歷史。

隔離方面,每個受信用戶(含 owner)有一套獨立的東西:DSH 會話(以 ${botAccountId}::${userId} 爲 key)、會話文件、消息隊列、上下文 token,以及 /history/status/cwd/model 的作用範圍。A 的 /yes/no 只裁決 A 自己 agent 的待審批事項,B 無權替 A 裁決。

驗證狀態需要如實說明:多用戶路徑(bootstrap 入集、雙用戶隔離併發)的真機驗證尚未完成,需要第二個微信賬號走查;在此之前,請僅在受控環境開啓 bootstrap / manual 模式。

憑證安全方面:守護進程與 DSH 插件之間的內部 API 只監聽 127.0.0.1,使用隨機 token 鑑權;微信賬號憑證僅保存在本機 ~/.dsh/wechat-bridge/accounts/,權限爲 0600;日誌中的 token / secret / password 會自動脫敏。

適用場景與注意

適合這些場景:

  • 需要掛着長任務、人離開電腦,還想隨時收到進展並處理審批;
  • 想把個人微信作爲輕量控制入口,與 CLI、Web 面板配合管理 DSH 會話;
  • 多人共用一個 bot,需要每人獨立的會話與審批邊界(注意上文的多用戶驗證狀態)。

使用前有幾點注意:

  1. 項目免責聲明寫明:僅用於個人學習與自動化,使用非官方微信協議存在賬號風險,需自行評估並承擔後果。
  2. 語音出站尚不支持;多用戶路徑真機驗證待補,bootstrap / manual 模式請先在受控環境使用。
  3. 插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證(本項目採用 MIT)。

結尾

總體來看,這個插件把微信接入了 DSH 的對話、通知與審批流程,安裝、綁定、啓動、配置都有明確的命令與面板入口,守護進程統一由 DSH 插件管理,三端可用。如果你也需要在外出時夠到本機的 Agent,可以按上文「安裝與啓用」一節試一試。

  • 社區目錄頁:https://www.skillhub.cn/plugins/lanbaolu/dsh-wechat-bridge
  • GitHub 倉庫:https://github.com/lanbaolu/dsh-wechat-bridge
羽毛球分组比赛记分
小程序二维码

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

小夜