前言¶
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 設置頁完成:
- 打開 Settings,進入「微信橋接」區塊。
- 填寫 DSH 工作目錄。
- 點擊「掃碼綁定」,用微信掃描頁面上的二維碼。
- 綁定成功後點擊「啓動」。
也可以在 DSH 所在機器的終端執行:
node lib/bridge/main.js setup
按提示用微信掃碼,完成後選擇 DSH 工作目錄。
守護進程管理¶
守護進程的啓動 / 停止 / 重啓 / 狀態 / 日誌全部由 DSH 插件管理,兩條路徑:
- 模型工具:在 DSH 對話中讓模型執行
wechat_bridge_start、wechat_bridge_status、wechat_bridge_logs、wechat_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.json 的 calm 節:
{
"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,需要每人獨立的會話與審批邊界(注意上文的多用戶驗證狀態)。
使用前有幾點注意:
- 項目免責聲明寫明:僅用於個人學習與自動化,使用非官方微信協議存在賬號風險,需自行評估並承擔後果。
- 語音出站尚不支持;多用戶路徑真機驗證待補,
bootstrap/manual模式請先在受控環境使用。 - 插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證(本項目採用 MIT)。
結尾¶
總體來看,這個插件把微信接入了 DSH 的對話、通知與審批流程,安裝、綁定、啓動、配置都有明確的命令與面板入口,守護進程統一由 DSH 插件管理,三端可用。如果你也需要在外出時夠到本機的 Agent,可以按上文「安裝與啓用」一節試一試。
- 社區目錄頁:https://www.skillhub.cn/plugins/lanbaolu/dsh-wechat-bridge
- GitHub 倉庫:https://github.com/lanbaolu/dsh-wechat-bridge