dsh-plugin-qq-bot:把 QQ 官方机器人接到 DeepSeek Harness

前言

DeepSeek Harness(DSH)的会话、预设和工作区都在本机进程里跑。想在手机上随手问一句、或在群里 @ 一下就能续接同一轮上下文,通常得再搭一层 IM 桥接:自己维护 WebSocket、消息格式和「QQ 用户 ↔ Session」映射,成本和联调面都不小。

dsh-plugin-qq-bot(维护者 23bear,分类:客户端)走 QQ 开放平台官方机器人通道:在 QQ 群或私聊里发消息,由 DSH 用固定 Session 处理,回答回到 QQ。一个 QQ 用户或一个群对应一个 DSH Session(如 session-qq-c2c-<openid>、session-qq-group-<group_openid>),多轮上下文交给 DSH 自己的会话持久化,插件不另建映射表,GUI 里也能直接看到并归档这些会话。

社区目录页:skillhub.cn/plugins/23bear/dsh-plugin-qq-bot(当前标注版本 v0.1.0,可安装客户端类插件)。源码与说明:github.com/23bear/dsh-plugin-qq-bot。许可:MIT;运行环境要求 Node >=22.15.0。

这是什么

插件把 q.qq.com 开放平台的官方机器人接成 DSH 的一个输入通道:收到 QQ 消息 → 唤醒或续接对应 Session → 把模型输出发回 QQ。简介原文:QQ 官方机器人通道插件 for DeepSeek Harness — talk to your DSH sessions from QQ groups and private chats.

核心功能

  • 群聊与单聊:在群里 @ 机器人或私聊发消息,均可触发 DSH 处理(需在 QQ 开放平台开启对应场景)。
  • Session 一一对应:按 openid / group_openid 生成稳定 Session id,多轮对话不依赖插件侧映射表。
  • 凭据热更新:推荐 ~/.dsh/qq-bot.json;补上或修改后数秒内自动连网关,一般无需重启 DSH(改 cordis.patch.yml 里的 config: 仍需重启进程)。
  • 可观测状态:~/.dsh/qq-bot-state.json 记录 ready / missing-credentials 等状态与 events 日志。
  • 消息与并发策略:同一会话内消息串行;不同会话并行;超长回复按 replyChunkChars 分片;超时与「正在处理」提示可配置。
  • 本地探活:/ping、/help 不占用 DSH 轮次,用于确认链路与会话 id。

先在 QQ 侧准备

下面按 README 顺序在开放平台侧做完,再配置 DSH。

  1. 打开 https://q.qq.com,用 QQ 号登录「QQ 开放平台」,创建机器人应用(个人主体也可)。
  2. 在「开发设置」获取 AppID 与 AppSecret(客户端密钥)。
  3. 在「功能配置」开启 单聊 和/或 群聊。群聊需在「沙箱配置」加入测试群(新版群/单聊机器人无沙箱域名时,管理员账号即测试账号,可直接用真实环境)。
  4. 群聊场景下将机器人拉进群;测试期建议只用小号或测试群。

官方 API 文档:bot.q.qq.com/wiki/develop/api-v2/。接口根地址自 2026-08-10 起统一为 https://api.bot.qq.com(插件配置项 apiBase 默认值即此)。

安装与启用

已抓取资料与目录页均未给出固定的 dsh plugin add … 安装命令,请勿凭仓库名自行拼接。将插件作为客户端类条目安装到当前 DSH 环境后,按下面方式交凭据并(可选)改配置。

凭据:三种方式(优先级:插件配置 → 环境变量 → 凭据文件)

推荐凭据文件,避免把密钥写进 profile 补丁:

// ~/.dsh/qq-bot.json
{
  "appId": "你的 AppID",
  "clientSecret": "你的 AppSecret"
}

或设置环境变量 DSH_QQ_APP_ID、DSH_QQ_CLIENT_SECRET。

也可在 profile 的 cordis.patch.yml 中写入:

- id: qq-bot
  name: dsh-plugin-qq-bot
  config:
    appId: "..."
    clientSecret: "..."

凭据文件会被轮询(间隔由 credentialsPollMs 控制,默认 5000 ms);仅当修改 config: 下其它配置项时需要重启 DSH。

常用配置项

配置 默认 说明
enabled true 为 false 时只写状态文件、不连网关
appId / clientSecret "" 留空则走环境变量或凭据文件
apiBase https://api.bot.qq.com 官方接口根地址
intents 33554432 1<<25,覆盖群 @ 与单聊
agentPreset standard 这些会话使用的 Agent 预设
workspace ~/.dsh/qq-bot-workspace 会话工作目录;要操作某项目可改路径
allowOpenIds [] 非空时只响应列出的 openid / group_openid
replyChunkChars 1500 单条消息最大字符数,超出分片
maxWaitMs 900000 单轮最长等待,超时先发已有内容
ackAfterMs 12000 过久未答先回提示;0 关闭
ackText 收到,正在处理… 提示文案
credentialsFile ~/.dsh/qq-bot.json 凭据文件路径
credentialsPollMs 5000 凭据文件轮询间隔(毫秒)

典型用法:确认跑起来并在 QQ 里对话

1. 看状态文件

插件将运行状态写入 ~/.dsh/qq-bot-state.json,例如:

{
  "status": "ready",
  "lastMessageAt": 1760000000000,
  "lastSessionId": "session-qq-c2c-XXXXXXXX",
  "lastSummary": "[正常完成,12.3s]",
  "events": [ { "at": 1760000000000, "message": "info: access_token 已获取,有效期 7200s" } ]
}
  • missing-credentials:凭据未读到;补文件后会自动重试。
  • closed / reconnecting 反复:查 events。凭据错误常见提示含「AppID / AppSecret」或「机器人不存在」;4013/4014 多与 intents 权限有关(群 + 单聊需 33554432)。README 注明:对 api.bot.qq.com 用无效 AppID 请求 token 可能仍返回 HTTP 200,需看 body 里 code(如 10004 机器人不存在)。

2. 在 QQ 里发消息

群聊 @ 机器人或私聊发送内容,等待 DSH 处理。回复末尾会附一行状态(如 [正常完成,12.3s])。可先发 /ping 或 /help 做链路自检。

行为摘要(来自 README):

  • 被动回复优先:群 5 分钟内、单聊 60 分钟内可用 msg_id 被动回复(条数有上限);超出后改普通消息。
  • 单轮超过 maxWaitMs 会先发出已有文本并标注超时。

适用场景与注意

适合谁:已在用 DSH、希望用 QQ 官方机器人(而非第三方协议)做群/私聊入口的开发者;需要把固定 QQ 身份绑定到可归档 Session 的场景。

权限与安全:插件随当前 DSH 进程运行,具备该进程能访问的本机资源与网络能力。安装前请阅读仓库源码与 MIT 许可证,自行评估 AppSecret 存放方式(凭据文件权限、是否写入 patch 等)。allowOpenIds 可在联调期收窄可响应的群或用户。

改插件代码后:README 强调 ESM 模块缓存——重新挂载或 dsh plugin add 不等于加载新代码,需重启 DSH 进程;可用状态文件中的 codeVersion 或 node tools/check.mjs 核对当前进程版本(属开发联调说明)。

生态说明:DSH 社区插件目录(SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系;安装与命令以你环境中的 DSH 与目录页说明为准。

结尾

dsh-plugin-qq-bot 把 QQ 开放平台官方机器人收成 DSH 的一条客户端通道:凭据与配置按文档落地后,在群或私聊里即可对接本地 Session 与预设。目录:https://www.skillhub.cn/plugins/23bear/dsh-plugin-qq-bot;仓库:https://github.com/23bear/dsh-plugin-qq-bot。

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

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

Xiaoye