dsh-super-wechat-bot: OCR Screen Reading + Standalone Bridge Process WeChat Automation DSH Plugin

前言

在 DSH 里让智能体「代回微信」,常见做法是每轮对话里再调一层工具,检测、决策、发送都挤在 agent 轮次里,既占上下文,也难做稳定的轮询与限流。微信桌面版又是 Qt 自绘界面,UIA 树为空,靠无障碍读消息这条路基本走不通。

下面介绍的 dsh-super-wechat-bot(维护者 gautema8-hash)是 DSH 生态里的客户端类插件:用 PrintWindow 截图 + Windows OCR 读气泡文字,检测→决策→发送跑在独立桥进程里,不占 DSH 的 agent 轮次;在 DSH 会话里通过 wechat_* 工具启停、看草稿、批准发送。插件当前在 GitHub 上星标为 0,版本以发行包为准(资料中 package.json 为 0.2.1,MIT 许可证)。

这是什么

一句话:用主人本人口吻替你回微信桌面版,只在标题匹配的目标会话里工作,支持 draft(草稿人工批准)与 auto(自动发)两种模式。

  • 读消息:PrintWindow + Windows OCR(绿色气泡 #95EC69 判为自己,白/浅灰为对方;底色读不出则丢弃该行,不按位置猜)
  • 回复:预置短语约 1–1.5s 直达,模型生成约 2.5–4s(资料称 flash 首包约 1.5s);拟人延迟、连发合并、被催时快档等可配置
  • 安全:会话标题校验、身份分级 T0–T3、连续升级停手、每分钟限流、全量审计

仅支持 Windows 10 / 11、微信桌面版 4.x(进程名默认 Weixin),DSH 版本要求 >= 0.2.1-rc.5 < 0.3.0-0,Node.js >= 20。

核心功能

独立桥与 DSH 工具

插件本体在 lib/index.js,暴露 9 个 wechat_* 工具并管理桥进程;常驻逻辑在 bridge/daemon.mjs,截图与 OCR、键鼠在 bridge/psagent.ps1(PowerShell + WinRT OCR)。

工具 作用
wechat_status 模式/标题/统计/最近事件
wechat_start 启动(draft 或 auto)
wechat_stop 停手
wechat_scan 只读抓一屏
wechat_drafts 草稿与升级待办
wechat_approve / wechat_reject 批准发送 / 丢弃
wechat_send 强制发一条(校验标题)
wechat_config 读写配置

设置与本地面板

装好后可在 DSH 设置 → 微信代聊 调整:会话与角色、节奏与拟人、限额与安全、话术、识别规则、预置短语、模型与密钥、自定义角色 JSON。保存前会经 bridge/validate.mjs 校验,坏正则、越界数值、空会话名不会写入运行时;会话名与微信窗口标题不一致时状态条会标红。

另有只监听 127.0.0.1 的面板:http://127.0.0.1:47821/,功能与设置页一致。

身份分级(内置策略)

级别 触发示例 动作
T0 是不是机器人、你是谁啊、怎么秒回 固定话术 → 立即停手
T1 咋这么怪、不对劲 「这会在忙」→ 转人工
T2 钱/借/合同/验证码/约见等 「晚点细说」→ 转人工
T3 普通闲聊 自动回

同一会话累计 2 次升级会强制改为 draft,不再自动发。角色预设(friend、teacher、engineer 等)还会附加禁区话术,避免代答报价、成绩、工期等敏感承诺。

已知限制

图片/视频/语音无法解析,只能处理文字气泡。OCR 依赖 Windows 中文语言包 zh-Hans-CN。发送需短暂占用前台(约 200–400ms)。微信不宜最小化到托盘;改版后布局比例可能在 bridge/psagent.ps1 的 $script:Cfg 里调整。

安装与启用

在 DSH 里安装发行包(推荐):

dsh plugin --profile web add https://github.com/gautema8-hash/dsh-super-wechat-bot/releases/latest/download/dsh-super-wechat-bot.tgz

或从 GitHub 源码安装:

dsh plugin --profile web add github:gautema8-hash/dsh-super-wechat-bot

装完重启 DSH,wechat_* 工具会出现在会话中。插件市场收录后也可在 设置 → 插件 → 市场 搜索安装。

配置文件默认路径:~/.dsh/dsh-super-wechat-bot/config.json(不存在会自动创建)。apiKey 留空时可复用 ~/.dsh/.credentials.yaml 中的 DEEPSEEK_API_KEY;默认模型为 deepseek-flash。maxRepliesPerMinute 默认 6,设为 0 即全停发,且不可被任何调用绕过。

安装前请自行查看仓库源码与 LICENSE,确认权限与合规;插件以当前 DSH 进程权限运行,会操作本机微信窗口与键盘输入。

典型用法

  1. 先在微信里打开目标会话(仅当窗口标题与会话名匹配时工作,防止发错人)。
  2. 调用 wechat_start,contact 填标题中的昵称,mode 选 draft(默认)或 auto。
  3. 用 wechat_drafts 查看拟稿,wechat_approve 发送或 wechat_reject 丢弃。
  4. 需要时用 wechat_stop 停手。

更省事时可打开 http://127.0.0.1:47821/ 填会话名、切 draft/auto、逐条批准草稿。

离线自测(不碰微信、不联网):

node test/offline.test.mjs

适用场景与注意

适合需要在 Windows 上临时代聊单会话、又希望决策与限流脱离 agent 轮次的开发者或个人用户。不适合依赖 UIA、Hook 或官方 API 的集成方案;也不适合必须处理图片/语音消息的场景。

DeepSeek Harness 的理念是「一切皆插件」;SkillHub 目录页 是社区收录站点,与 DeepSeek / 幻方无官方从属关系。使用前请理解代聊风险:标题校验与 T0–T3 策略能降低误发与身份暴露,但不能替代人工判断。

链接

  • 目录页:https://www.skillhub.cn/plugins/gautema8-hash/dsh-super-wechat-bot
  • 仓库与 README:https://github.com/gautema8-hash/dsh-super-wechat-bot
羽毛球分组比赛记分
小程序二维码

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

Xiaoye