DeepSeek Harness 微信橋接插件

前言

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 是唯一的官方來源。

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

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

小夜