dsh-qq-stack:为 DSH 管理 LinuxQQ 与 NapCat,对外提供 OneBot 11 接口

前言

在 DeepSeek Harness(DSH)上做一个能收发 QQ 消息的机器人,绕不开三件事:装 LinuxQQ、装 NapCat 这类 OneBot 实现、再分别处理登录态和启动。这三件事分散在命令行与多个进程之间,换台机器就要重做一遍,登录态也容易丢。下面介绍的 dsh-qq-stack 就是把这一整套流程收进一个插件里:下载、解包、配置、启动交给插件,登录态托管起来,对外只暴露标准的 OneBot 11 接口。

这是什么

dsh-qq-stack 是 DSH 的 QQ 协议端插件,维护者为 2008BingYu。它解决的是上面说的重复劳动:把 LinuxQQ 与 NapCat 的安装、启动、登录交给插件管理,对上提供 OneBot 11 正向 WebSocket,供任意兼容客户端接入。仓库版本为 1.1.0,许可证 MIT。

核心功能

插件的能力按职责拆开看主要有六项:

  • 随引擎启动:引擎拉起后自动检查运行环境,缺失时后台安装,就绪时直接启动 QQ
  • 标准协议端:OneBot 11 正向 WebSocket,默认监听 127.0.0.1:3001
  • 登录态托管:扫码一次后保存账号,后续启动使用快速登录
  • 安装过程可见:分步显示 LinuxQQ、NapCat 的下载与解压状态,以及镜像测速进度
  • 配置可在页面修改:监听地址与访问令牌保存后自动生效
  • 运行环境可清理:页面内一键停止 QQ,并删除已下载的客户端与登录数据

安装启用

安装命令来自 README 原文:

dsh plugin --profile web add dsh-qq-stack

也可以在插件页的「添加插件」中填入包名,或使用 Release 中提供的压缩包。安装完成后需要重启一次引擎。

需要注意:插件不会自动安装运行环境。引擎启动后约 2 秒会检查 ~/.dsh/qq-bot:已安装则直接启动 QQ;未安装时只在设置页提示,需要点击「开始安装」后才会执行下面这几步:

  1. 下载 LinuxQQ 客户端(约 198MB)
  2. 检查系统依赖,缺失时按当前发行版安装对应软件包
  3. 测试多个下载源,选择可用且最快的一个下载 NapCat(约 34MB)
  4. 解包、写入 OneBot 配置、生成启动脚本
  5. 启动 QQ

安装过程与结果记录在 ~/.dsh/qq-bot/logs/install.log,页面会同步显示当前步骤和进度。

典型用法

设置页分「登录」和「设置」两个页面。登录页在未登录时显示二维码,用手机 QQ 扫码并在手机上确认后,二维码区域会显示当前状态;登录成功后显示头像、昵称与 QQ 号,可切换账号。设置页包含连接设置(监听地址与访问令牌,修改后自动保存并重启 QQ 生效)和清理运行环境(停止 QQ 并删除 ~/.dsh/qq-bot)。

配置文件为 ~/.dsh/qq-bot/config.env,各键如下:

键 默认 说明
DSH_QQ_UIN 登录后自动写入 用于快速登录的 QQ 号
DSH_QQ_HOST 127.0.0.1 OneBot 监听地址
DSH_QQ_WS_PORT 3001 OneBot 监听端口
DSH_QQ_TOKEN 空 访问令牌;留空表示不校验

安装目录默认是 ~/.dsh/qq-bot,可通过环境变量 DSH_QQ_ROOT 修改。

接入 OneBot 客户端时,任意兼容 OneBot 11 的客户端都可以连接:地址 ws://127.0.0.1:3001,令牌与 DSH_QQ_TOKEN 一致,该值为空时无需填写。

出问题时看日志,路径如下:

路径 内容
~/.dsh/qq-bot/logs/plugin.log 插件操作日志:按钮请求、状态变化、保存/应用/登出等(令牌已脱敏,超过 2MB 轮转)
~/.dsh/qq-bot/logs/install.log 安装过程与各步骤进度
~/.dsh/qq-bot/logs/qq.log QQ 与 NapCat 运行日志

页面上的每个操作都会记进 plugin.log,也可以直接取尾部内容:

http://127.0.0.1:3080/api/plugins/qq-stack/log?n=200

日志里的令牌一律替换为 ***。

适用场景与注意

环境要求是 Linux(aarch64 / amd64),可安装 apt 软件包;Android 上的 DSH 运行环境同样适用;Node ≥ 22.5;首次安装约需 250MB 磁盘空间与相应下载流量。插件启动的 Linux 版 QQ 客户端依赖 xvfb-run 与 dbus-run-session,因此不支持 Windows。

几个容易踩的点:

  • 扫码后仍显示未登录,需要先在手机上确认登录,仅扫码不构成登录
  • 卸载或清理运行环境会删除登录数据,重装后属于全新安装,需要重新扫码
  • 一段时间后掉线时,引擎启动会重新拉起 QQ 并用已保存账号快速登录;登录态失效则需重新扫码
  • 群里没有回复时,消息处理由接入的对话插件负责,本插件只维护 QQ 在线与协议接口
  • 提示登录失败或账号受限属于 QQ 账号侧限制,需在 QQ 安全中心完成身份验证后再尝试登录

另外要注意权限边界:插件以当前 dsh 进程的权限运行,安装前应先检查源码与许可证,再决定是否引入。

卸载插件不会自动删除运行环境,删除方式二选一:卸载前在设置页点击「清理运行环境」,或手动执行:

bash ~/.dsh/qq-bot/stop-qq.sh && rm -rf ~/.dsh/qq-bot

结尾

dsh-qq-stack 的价值在于把「装环境、起 QQ、管登录、暴露协议」做成一条可复现的链路,让 QQ 机器人接入 DSH 时不必再手工维护 LinuxQQ 与 NapCat。目录页在 https://www.skillhub.cn/plugins/2008BingYu/dsh-qq-stack,源码在 https://github.com/2008BingYu/dsh-qq-stack。该目录为社区站点,与 DeepSeek / 幻方无官方从属关系。

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

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

小夜