通到 QQ(dsh-qq-bridge):DSH 里的 AI 伙伴与 QQ 双向互通

前言

在 DSH 里和 AI 伙伴聊出来的结论,往往还停在桌面客户端里;而日常协作、随手追问,很多人习惯在 QQ 私聊或群里完成。两边各聊各的,就要反复复制粘贴,或者再开一套独立的 QQ 机器人栈。

下面介绍的 dsh-qq-bridge(仓库 Yuuyuko-uu/dsh-qq-bridge)走另一条路:不自己碰 QQ 协议,只通过本机 OneBot 11 HTTP 和一个现成的 QQ 后端(SnowLuma 或 NapCat)说话。伙伴在 DSH 里说完一整轮的最后一句,可以自动发到 QQ;你在 QQ 里新发的文字,也会被插件轮询进来,转进你指定的 DSH 会话,照常开一轮。维护者是 Yuuyuko-uu,在社区目录 SkillHub 上归类为「联网工具」,当前标注版本为 v0.2.0(MIT 许可证)。

这是什么

一句话:把 DSH 的「目标会话」和 QQ 私聊/群打通,发收都只依赖 http://127.0.0.1:3000 一类的 HTTP 接口。插件本身不实现 QQ 登录;你需要在本机另跑 SnowLuma 或 NapCat,并打开 OneBot 11 的 HTTP 服务(README 明确说明:只开 WebSocket、没开 HTTP 时插件连不上)。

两半能力在 README 里都已实现,且两侧都不需要再单独起一个 BOT 进程来中转 DSH 与 QQ:

  • DSH → QQ:盯着你选定的目标会话;伙伴在某一轮的最后一句说完后,把这句原文发到 QQ。
  • QQ → DSH:插件每 4 秒轮询后端(get_friend_msg_history / get_group_msg_history),发现你在 QQ 的新消息后,转进目标会话。

安全默认偏保守:总开关默认关、试运行默认开——不手动打开总开关时,一句都不会真的发到 QQ;试运行开着时只记账、不真发。

核心功能

设置页(不用改文件)

在 DSH 里打开 设置 → 通到 QQ,主要项如下(与 README 表格一致):

项 默认 说明
总开关 关 关着则一句都不发
试运行 开 开着只记账,不真发
目标会话 (未选) 下拉选择要绑定的会话,无需手填 id
转私聊 / 私聊 QQ 号 开 / 空 发到哪个私聊
转群 / 群号 关 / 空 发到哪个群
测试一句 — 真发一条测试句到已填的私聊/群(绕过试运行)

高级用户如需直接改配置,文件落在 %USERPROFILE%\.dsh\qq-bridge-config.json;一般只在设置页操作即可。

HTTP 接口(宿主侧)

插件在 DSH 进程里暴露这些路由,便于自查或脚本改配置:

  • GET /dsh-qq-bridge/state — 配置、日志、会话清单,以及当前连着的 QQ 号/昵称。
  • POST /dsh-qq-bridge/save — 保存配置(body 里给要改的键)。
  • POST /dsh-qq-bridge/test-send — 真发测试句(绕过试运行)。

README 还保留 /receive 作为备用入口,供其他程序把 QQ 消息灌进来;不依赖它也能按轮询方式正常运行。

QQ 后端要提供的 6 个接口

换后端时按下面列表核对 HTTP 是否齐全:

send_private_msg            发私聊
send_group_msg              发群消息
get_login_info              看登录的 QQ(设置页「✓ 连着的 QQ」)
get_friend_msg_history      收私聊(QQ → DSH)
get_group_msg_history       收群消息(QQ → DSH)

维护者在 README 中写明:SnowLuma 与 NapCat 均已实测可用;任选其一即可。

可选:文字以外的 QQ 语音条

主插件只处理文字。若希望朗读桥念出的声音变成 QQ 语音,仓库 tools/语音/ 下有附加脚本(依赖 Windows、dsh-tts-bridge、以及 QQ 后端支持发语音)。不装这一套,主插件仍可单独使用文字双向互通。细节见仓库内 tools/语音/README.md。

安装与启用

社区目录页:SkillHub — Yuuyuko-uu/dsh-qq-bridge。页面标注为可安装,版本 v0.2.0;GitHub 上 package.json 中 name 为 dsh-qq-bridge,通过 DSH 的 cordis.patch.yml 与 Web 端 slots 注入集成。

说明: 已抓取资料与目录页均未给出固定的 dsh plugin add … 单行命令,安装步骤请以你当前 DSH 版本的插件管理界面或官方文档为准,从上述目录页指向的仓库安装,不要凭仓库名自行拼接命令。

安装或更新插件前,建议自行查看 GitHub 源码 与 MIT 许可证;插件以 当前 DSH 进程权限 运行,会访问本机 QQ 后端 HTTP 与配置目录。

准备 QQ 后端(二选一)

插件默认通过 http://127.0.0.1:3000 访问后端;端口不一致时,在插件设置里改「NapCat 地址」或等价配置项。

NapCat(README 中的步骤)

  1. 从 NapCat Releases 下载 Windows 版,解压到任意目录。
  2. 双击启动,打开网页后台(默认 http://127.0.0.1:6099)。
  3. 在网页里扫码登录要用的 QQ 号。
  4. 确认 HTTP 服务已开启,端口为 3000(否则改插件里的地址)。
  5. 回到 DSH → 设置 → 通到 QQ → 点「测一下」,应显示 ✓ 连着的 QQ:<昵称>(<号>)。

SnowLuma

同样思路:启动程序 → 登录 QQ → 开启 OneBot 11 HTTP → 端口与插件设置一致。菜单名称以 SnowLuma 仓库 文档为准;README 注明该后端为作者长期自测环境。

本机桌面侧通常只需:一个 QQ 后端 + DSH + 本插件。

典型用法

1. 接通并确认 QQ 身份

先保证后端 HTTP 在 3000(或你已改好的地址)上可用。在 设置 → 通到 QQ 点「测一下」,用 get_login_info 确认设置页能显示已登录 QQ。

2. 选目标会话并配置出口

在下拉里选中你要绑定的 DSH 会话(一般就是你平时和伙伴聊天那一间)。按需填写私聊 QQ 号或群号,打开「转私聊」或「转群」。在仍不放心时,可保持 试运行 = 开,观察日志是否记账;需要真发时关闭试运行并打开 总开关。

3. 发一条真测试

使用设置页的 测试一句(或 POST /dsh-qq-bridge/test-send),会向已配置的私聊/群 真发,且绕过试运行。确认 QQ 端收到后,再在 DSH 里正常对话,验证「一轮最后一句」是否会出现在 QQ。

4. 从 QQ 回灌到 DSH

在已配置的私聊或群里发一条新消息。插件约每 4 秒轮询历史接口;消息进入目标会话后,伙伴应照常开始新一轮。若收不到,先查后端是否实现了 get_friend_msg_history / get_group_msg_history,以及总开关、目标会话是否选对。

5. 仓库内自测脚本(不装插件也可跑半边逻辑)

维护者在 README 中提供:

node tests/宿主半边.mjs
node tests/网页半边.mjs

用于分别验证宿主与网页相关逻辑,便于排错。

适用场景与注意

适合谁: 已经在用 DSH 的 AI 伙伴、又希望同一套对话能延伸到 QQ 私聊或群的用户;愿意在本机维护 SnowLuma 或 NapCat,并接受 OneBot 11 HTTP 这一层抽象。

需要注意:

  • 默认 总开关关、试运行开,避免误发到 QQ;真发测试会绕过试运行。
  • 仅 HTTP 模式;不要只开 WebSocket。
  • DSH → QQ 只发每一轮对话的最后一句原文,不是整段流式中间结果。
  • QQ → DSH 依赖轮询,有约 4 秒量级的延迟,不是即时推送。
  • 语音相关能力在 tools/语音/,平台与依赖与主插件不同(Windows + 朗读桥等)。
  • 插件与 QQ 后端均跑在本机时,注意账号安全与谁可以往绑定的群/私聊发消息。

改动记录见仓库 CHANGELOG.md;版本号规则为每次改动 +0.0.1,末位满 10 进位。

结尾

dsh-qq-bridge 把 DSH 里选定的会话和 QQ 用 OneBot 11 HTTP 接在一起:伙伴说完一轮的最后一句可发到 QQ,你在 QQ 的新消息也会轮询进 DSH。后端用 SnowLuma 或 NapCat 均可,配置集中在设置页,并带有偏保守的默认开关。

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

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

Xiaoye