前言¶
DeepSeek Harness(DSH)的插件生態強調「一切皆插件」。開發者想要在微信環境中運行 DSH Agent,傳統方式需要在宿主機上維護獨立進程、處理進程間通信與權限隔離。dsh-wechat-ai-bridge 通過 wechat-ai 提供的 MCP 服務,把微信私聊/羣聊 @ 消息交給持久化的 DSH Session,再把 Agent 的回覆發回微信。插件基於 DSH 0.2.x 開發,需要同時運行 DSH Web profile 和 wechat-ai 的 Streamable HTTP MCP 服務。
插件定位¶
- 名稱:dsh-wechat-ai-bridge
- 維護者:Windfarer
- 版本:0.4.0
- 許可證:MIT
- 分類:聯網工具
插件定位爲 DSH 與微信的橋接層:它不替代 wechat-ai 的功能,而是通過 MCP 協議將 wechat-ai 的消息讀寫能力注入 DSH Agent 的工作區,使 Agent 能在微信上下文中執行、讀取文件和調用工具。
核心功能¶
微信消息與回覆¶
- 私聊自動回覆。
- 羣聊只在被 @ 時回覆,並在回覆中 @ 回發送者。
- 每個微信會話(私聊或羣聊)對應一個 DSH Session,可在 Web UI 側邊欄查看。
- 接收文本、圖片、引用消息和文件;引用圖片會作爲附件轉發。
工作區隔離¶
默認按聯繫人和羣隔離工作區:首次需要 Agent 時才創建,也可切換爲共享工作區。
- 文件工具、命令沙箱、圖片發送和語音文件發送均限定在當前聊天的工作區。
- 工作區使用 bubblewrap 掛載,不掛載宿主機目錄。
- 啓用 Codex CLI 後,認證與配置保存在該聊天的
.codex/目錄,代碼可讀取該憑據。
語音合成與發送¶
插件支持兩種發送原生語音條的方式:
wechat_send_voice_text(text):把文本交給配置好的 TTS 服務合成,再以 base64 交給 wechat-ai 的send_voice_msg。wechat_send_voice(recipient_name, file_path):從當前聊天的工作區讀取已有音頻文件併發送。
音頻支持 WAV/MP3/M4A/OGG/FLAC 等,時長 1–55 秒、最大 10 MiB。
TTS 按照與 OpenAI 兼容的接口調用:
POST <tts.baseUrl>/audio/speech
Authorization: Bearer <tts.apiKey>
Content-Type: application/json
{"model":"<tts.model>","input":"要朗讀的文本","voice":"<tts.voice>"}
是否使用語音由 Agent 按系統提示判斷:只有發送人明確要求「發語音/用語音回覆」,或這條回覆確實更適合語音時才調用。
設置頁¶
安裝後打開 設置 → 微信橋接,可配置:
- 工作區模式(逐聊天 / 共享)
- MCP 地址、token 文件或環境變量
- 模型、TTS、自動回覆、圖片/文件、工具與 Codex
- 工作區根目錄、狀態、日誌路徑(只讀展示)
- TTS API Key 不會回顯,留空即保持不變
保存通過 configEditor 寫回 profile patch 並重載插件。
安裝與啓用¶
git clone https://github.com/Windfarer/dsh-wechat-ai-bridge.git
使用 DSH plugin_manager 的 install_bundle 安裝本目錄。插件會插入 preset-wechat、preset-wechat-work 和 wechat-ai-bridge 行,不覆蓋 DSH 的 permission 行,權限使用內置 workspace-write。
安裝後需要配置 MCP token:
tokenFile:包含WECHAT_AI_MCP_TOKEN=...的 dotenv 文件;- 或環境變量
WECHAT_AI_MCP_TOKEN; - 不建議在倉庫中寫死
token。
配置示例:
- id: wechat-ai-bridge
name: 'dsh-wechat-ai-bridge'
config:
mcpUrl: http://127.0.0.1:8100/mcp
tokenFile: /path/to/wechat-ai/.env
workspaceMode: per-chat
workspaceTitle: 微信橋接
agentPreset: wechat-work
permissionPreset: workspace-write
workspacePath 可選,默認 ~/.dsh/wechat-ai-bridge-workspace。
工作區與會話遷移¶
逐聊天模式使用 <workspacePath>/<安全用戶名>-<8位摘要>/,目錄鍵來自穩定的聯繫人或羣 username,顯示名變化不會改變目錄。用戶名經過字符過濾、去除前導點和連續點、長度限制,再附加原始 username 的 SHA-256 前 8 位摘要。羣內成員共用該羣的工作區,不會按羣成員分別建立目錄。
升級到 0.2.0 後,未指定模式的配置默認使用 per-chat。啓動時檢查已保存會話的工作目錄;切換模式或根目錄後,只清除不匹配的會話關聯,下次觸發創建新會話。舊會話歷史和舊工作區文件不會自動移動或刪除。
安全與權限¶
- 羣成員 @ 機器人即可驅動工作區內的 Agent;可用
reply.allowContacts/denyContacts限制觸發者。 - 從 0.2.2 起,橋接 Agent 的微信工具嚴格綁定到當前私聊或羣聊:
wechat_recent_messages、wechat_send_image和wechat_send_voice只接受當前會話的 username 或顯示名,實際 API 調用統一使用綁定的 username。 - 橋接 Agent 禁止調用
wechat_list_chats和wechat_search_contacts。聊天模式只保留當前會話消息讀取工具;工作模式的白名單保留當前會話消息讀取、圖片/語音發送、TTS 文字轉語音和原有非微信工具。 - 自定義 Agent 預設應避免啓用宿主機全局文件、終端等工具;微信會話範圍校驗不會放寬文件與命令的工作區隔離。
- 啓用 Codex 會在聊天首次使用工作區時複製認證,每次運行前刷新各自的認證副本。
- 插件不硬編碼任何賬號、wxid 或 token;自己的 wxid 從 wechat-ai 的
database.data_dir動態解析。
適用場景與注意¶
本插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。適合需要在微信環境中運行持久化 Agent、需要文件與命令隔離、或希望利用 TTS 語音合成能力的場景。社區目錄 https://www.skillhub.cn/plugins/Windfarer/dsh-wechat-ai-bridge 與 GitHub https://github.com/Windfarer/dsh-wechat-ai-bridge 是唯一的官方來源。