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

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

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

Xiaoye