dsh-whale-wechat:把 DSH 陪伴角色接到微信里

前言

在 DeepSeek Harness(DSH)里搭好陪伴角色之后,常见做法是自己在终端或 Web 面板里来回对话。微信仍是很多人日常联系的入口,但 DSH 本身不直接驱动微信客户端。若希望角色能在私聊或群聊里读消息、回消息,还要尽量不打断你正在用的前台窗口,就需要一条专门的客户端适配层。

senumirai/dsh-whale-wechat(npm 包名 dsh-wechat-group)由 SenuMirai 维护,归类为客户端插件。它从同系列的 dsh-whale-qq 拆出并改写,记忆、人设、日记与 QQ 版独立,不和 QQ 那套混用。下面介绍它的定位、能力与在 Windows 上的安装启用方式。

这是什么

一句话:把 DSH 里的陪伴角色接到真实微信客户端,通过 UIA 与窗口消息收发消息,传输侧经 shim 转成 OneBot,插件本体仍走 DSH 的 Cordis 体系。

它是「DSH Whale 系」成员之一;与同前缀的 dsh-whale-world、dsh-whale-qq 等可单独安装,装在一起时记忆等能力可经 world 中枢衔接。npm 包 id 沿用 dsh-wechat-group,与系列内其他插件靠 id 联动,不宜随意改名。

核心功能

以下能力均来自项目 README 的功能表与架构说明。

能力 说明
私聊 / 群聊 一对一与群内接话;群聊默认先判断「这条该不该我说话」
@ 人 @ + 昵称,用备注名命中,选中后成为真正的 @ 对象
引用回复 被隔开回复时引用原消息,群聊里可见在回谁
连发多条 多条独立发送并逐条核对
发图 / 表情包 本地图片、微信表情、自建表情包目录
发语音 TTS → 虚拟声卡 → 微信「按住说话」,对方收到语音条
后台发送 窗口消息打字与点按钮,不抢前台焦点
主动搭话 久未说话可主动找话头;频率、时段、冷却可配
记忆 / 日记 / 人设 挂在 dsh-whale-world 记忆中枢;与 QQ 侧独立
一键启动 插件设置里「启动」按钮,拉起 shim、outbox、桥接并自动连接

README 同时标明:仅 Windows。UIA 驱动微信没有跨平台替代;微信大版本升级后桥接可能需等待适配更新。

架构概览

三个进程相互独立,任一挂掉不影响另外两个;插件内可查看各段是否存活。

微信客户端 (Weixin.exe)
   ↕  UIA / 窗口消息(不抢焦点)
桥接 bridge (whale_girl)      —— 读写数据库、收发消息、TTS
   ↕  HTTP + OneBot WebSocket
shim (onebot 3101 / webhook 8790)
   ↕
dsh-wechat-group 插件

安装与启用

1. 安装插件与 Python 依赖

先安装插件本体,再为桥接与 shim 准备 Python 3.12 环境与依赖(README 写明 Windows + Python 3.12):

# 1. 插件本体
dsh plugin add dsh-wechat-group

# 2. Python 运行时(桥接和 shim 要用)
#    Windows + Python 3.12,装依赖:
pip install -r requirements.txt

requirements.txt 随插件/仓库资源提供,在 README 所指目录执行上述 pip install,勿凭包名自行拼凑安装命令。

2. 在 DSH 里接 OneBot 并启动链路

在 DSH 设置中打开 微信 面板:

  1. 填写 OneBot 地址(默认 ws://127.0.0.1:3101)
  2. 点击「启动」——拉起整条链路,首次可能弹出一次 UAC
  3. 面板显示 link: online 表示已连接

README 强调:不要把 Python 运行时放在受管目录(例如 C:\DSHwork 下的 python.exe 可能被降权,导致对微信 OpenProcess 失败、UIA 树无法物化、发送报 tree_not_ready)。宜使用如 C:\Program Files\Python312\python.exe 这类官方路径。

配置说明

配置文件路径为 ~/.dsh/dsh-wechat-group/qq.json(沿用 QQ 版文件名)。README 列出的主要键如下:

键 含义
enabled 总开关
url OneBot WebSocket 地址
privates / groups 白名单:仅列出的会话会回复
wechat.windowHwnd 微信主窗句柄,0 = 自动
wechat.backgroundSend 后台发送(默认开)
wechat.accountGuard 认不出微信号时宁可不发
tts.* 语音合成网关与音色

插件还以 cordis.patch.yml 等形式参与 DSH 装配;修改此类配置后需重启 DSH 进程才会生效(README 踩坑条目中明确说明)。

典型用法与链路行为

经过上面的安装与启动步骤后,日常使用可以理解为:

  1. 白名单内的私聊或群聊出现新消息时,插件经 OneBot 收进 DSH,由陪伴角色生成回复计划。
  2. 需要 @ 或引用时,桥接按微信 UI 规则操作(备注名 @、引用条)。
  3. 文本、图片、语音等经桥接发送;默认走后台通道,尽量不夺走键鼠焦点。
  4. 若安装了 dsh-whale-world,长期记忆与人设、日记经 world 中枢维护,与 QQ 插件数据分离。

多平台同时使用时需注意 README 中的 outlet / ticket 说明:QQ 与微信不宜在 bridge 层互相广播同一条 reply,应按平台带 ticket 调用世界桥,避免串台。

适用场景与注意

适合谁

  • 已在 DSH 中配置陪伴角色或类似对话体,希望在微信私聊、群聊中与同一角色交互的开发者或高级用户。
  • 接受在 Windows 上运行微信 PC 版,并愿意为桥接进程配置 Python 与 OneBot 链路的环境。

使用前建议

  • DSH 插件以当前 DSH 进程权限运行;安装前请阅读仓库源码与 MIT 许可证,确认隐私与安全边界(桥接会读写微信相关数据与 UI)。
  • 首次启动涉及 UAC;之后「启动」可走计划任务,README 称不再每次弹窗。
  • 社区目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本介绍事实均以对应该仓库 README 为准。

README 还记录了受管目录 Python、UIA 多线程、错误窗口句柄、应用商店式启动命令等详细排障条目,部署若遇 tree_not_ready、发送失败或进程异常退出,应优先对照仓库「踩过的坑」章节,而非重复试错。

结尾

senumirai/dsh-whale-wechat(dsh-wechat-group)把 DSH 陪伴角色接到微信:支持 @、引用、语音与后台发送,传输经 OneBot shim 与 DSH 插件衔接。完整说明与更新以 GitHub 为准。

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

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

小夜