DSH Plugins Marketplace

DSH Plugins

Plugins

/

Tools & Capabilities

/

dsh-qq-bot

d

dsh-qq-bot

Identified

Connects DeepSeek Harness to QQ over OneBot 11/12, Satori, Milky or the official QQ bot API, with a separate session per group or private chat and nine built-in tools: group management, chat history w

dsh-qq-bot —— 把 QQ 接到 DSH

把一个 QQ 机器人接进 DSH:QQ 消息进来 → 交给 DSH Agent → 回复发回 QQ。

  • 一套插件接五种协议:OneBot 11(默认)/ OneBot 12 / Satori / Milky / QQ 官方机器人,换协议只是设置里的一个下拉。
  • 每个群、每个人都有独立的 DSH 会话,会落盘、能像普通会话一样在 Web UI 里打开继续聊。
  • 零 npm 运行时依赖(适配器只用 Node 22 内置的 WebSocket / fetch)。

版本 0.12.2 · 要求 DSH ≥ 0.2.0-rc.2(0.2.1 系列实测通过) 设置入口:首页侧边栏 → 插件 → 已安装 → dsh-qq-bot。不再是「设置 → QQ 机器人」,现有配置无需迁移。 npm 包名 @sputnikzaychik/dsh-qq-bot · CHANGELOG · AI 生成声明 · MIT

它能做什么

能力说明
收发消息群聊(默认要 @)与私聊;回复 bot 也算 @;长回复按换行切成多条 ≤1200 字
五种协议OneBot 11/12、Satori、Milky、QQ 官方机器人,见协议与连接方式
群管理禁言、踢人、撤回、改名片 / 群名、设管理员、全员禁言;指令与工具共用一套权限
联网与媒体qq_websearch 多引擎搜索、qq_webfetch 抓网页(可走代理)、qq_imgsearch 图片反搜、qq_draw 生图直接发群
看图收到的图片用视觉模型识别后并入回答;群内近期图片由 AI 按需自取(不硬塞上下文)
主动发言(可选)到点看一眼群里聊什么,自己决定要不要接话;判断与发言可分用两个模型
流程授权(可选)子代理 / 队友 / 工作流被拦下时,私聊回一次 6 位动态码才放行
人格每个 QQ 会话可套自定义人格,或指定专属 agent preset

快速开始

1. 起一个 OneBot 11 协议端(推荐 NapCat)

NapCat 官方 Docker 镜像(支持 amd64 / arm64):

docker run -d --name napcat --restart=always \
  -e NAPCAT_GID=$(id -g) -e NAPCAT_UID=$(id -u) \
  -p 3000:3000 -p 3001:3001 -p 6099:6099 \
  mlikiowa/napcat-docker:latest
  • WebUI:http://<主机IP>:6099/webui,手机 QQ 扫码登录;登录 token 默认在 docker logs napcat 里。
  • 容器内 /app/napcat/config 与 /app/.config/QQ 建议挂卷,免得重启要重新扫码。
  • NapCat 的「网络配置」里开 OneBot 11:HTTP 服务器 3000(发消息)+ 正向 WebSocket 3001(收事件)。端口默认就和本插件一致,不用改。

2. 安装插件

# 从 npm 装(推荐)
dsh plugin --profile web add @sputnikzaychik/dsh-qq-bot

# 跟随仓库 main(想用最新、未发版的内容)
dsh plugin --profile web add github:arrow1031-dev/dsh-qq-bot

# 升级已有安装
dsh plugin --profile web update

--profile 换成你实际在用的:桌面版是 --profile desktop,dsh web 部署一般是 --profile web。 也可以在界面里装:插件 → 添加插件,填上面那行包名。

装完重启 DSH(桌面版重启应用 / CLI 重启 dsh web)。lib/client.js 是浏览器侧代码,重启后还要刷新页面。

3. 在 QQ 里试

  • 群聊:默认要 @机器人;回复(引用)bot 的消息也算 @,带图照常识图。
  • 私聊:默认直接回。
  • 中间发言(默认开):长回合里模型先说的那几句(「我先查一下」)单独发一条、不引用也不 @; 最终结论仍按规则引用你的消息。一个回合最多 4 条、两条间隔 2.5 秒,设置页可调,填 0 即关。
  • 会话名固定为 群聊_<群号> / 私聊_<QQ号>,不让模型自动起标题(可在设置里关)。

4. 打开设置面板

插件 → 已安装 → dsh-qq-bot,面板分四档:连接 / 基本(准入与名单、发言与管理)/ 能力(识图与绘图、搜索与抓取、对话与人格)/ 高级。 改完点保存:连接项(模式 / 地址 / token)会自动重启适配器,其它项下一条消息生效。

  • 白名单是逗号分隔的文本框;布尔是勾选框;provider / model 都是下拉。
  • access_token 是只写字段:已设置时显示「已设置;留空则保持不变」,只有输入新值才覆盖。
  • 连接状态不在面板里显示,在对话里让 Agent 调 qqbot(action=status)看。

协议与连接方式

protocol协议端传输备注
onebot11(默认)NapCat / go-cqhttp / Lagrange正向/反向 WS + HTTP与 0.9 的配置完全兼容
onebot12OneBot 12 实现端正向/反向 WS + HTTP@ 是 mention、图片只有 file_id
satoriKoishi(Satori 服务端)WS /v1/events + HTTP RPC消息体是类 XHTML 元素串
milkyNapCat / Yogurt / Lagrange.Milky/event WS + /api HTTP无 echo;消息 id 是 message_seq
qq-officialQQ 开放平台机器人Webhook 或 WS 网关AppID/AppSecret 鉴权;无群管理动作

OneBot 11/12 的两种连接模式

场景用哪个配置
协议端与 DSH 同机 / 同容器正向 WS(默认)mode: forward,我们连 ws://127.0.0.1:3001
协议端在别的容器 / 只能它连出来反向 WSmode: reverse,我们监听 0.0.0.0:6199,协议端填 ws://<DSH主机IP>:6199/

反向 WS 的鉴权:请求头 Authorization: Bearer <token> 或 URL 上的 ?access_token=<token> 都接受。 其它协议的连接参数(protocols.onebot12 / protocols.satori / protocols.milky / protocols.qqOfficial)在设置页同名分组里。

能力边界:qq-official 没有踢人/禁言/改名片这类群管理动作,qqgroup 会明确回「不支持」;onebot12 的图片段只有 file_id,要做视觉识别建议用 OneBot 11。

配置

方式一:设置面板(推荐)

见上文「4. 打开设置面板」。几个要点:

  • 工作区自动管理:插件读取 DSH 默认工作区位置(<系统 Documents>/deepseek-harness),在同级建 QQ_msg 并注册为 Web UI 侧栏的「QQ 消息」分组,新 QQ 会话自动归入。带图消息的原图缓存在 QQ_msg/qq-images/<会话id>/,会话结算后删除。
  • 升级后失效的旧配置会被自动清掉:插件启动时和每次保存后会比对 schema,把本版本已不存在的键摘掉再写回(只动自己那一段,删掉的键连同旧值打进日志)。
  • 设置命名空间 = 条目 id(默认 dsh-qq-bot);条目被改名时客户端会回退匹配「以 qq-bot 结尾」的那个。

方式二:改 profile 的 cordis.patch.yml

不要改包内的 cordis.patch.yml(升级会覆盖)。写进你自己的 $DSH_HOME/profiles/<profile>/cordis.patch.yml,按 id 定向覆盖:

- id: dsh-qq-bot
  name: '@sputnikzaychik/dsh-qq-bot'   # 装 npm 包时用带作用域的包名;装 git 版也写它
  config:
    protocol: onebot11
    mode: forward
    onebot:
      wsUrl: 'ws://127.0.0.1:3001'
      httpUrl: 'http://127.0.0.1:3000'
      accessToken: ''
    group:
      enabled: true
      requireAt: true
      allow: []            # 群号白名单,空 = 所有群
    private:
      enabled: true
      allow: []            # 用户号白名单,空 = 所有人
    auth:
      owners: ['你的QQ号']  # 拥有者:全权限 + 永久授权
    reply:
      maxChars: 1200
      interim: true        # 中间发言

完整字段清单(含主动发言、流程授权、生图、图片反搜、moli 渲染等全部配置项)见 DEVELOPMENT.md。

权限与指令

权限是三路并行取并集,任一路给到即拥有(/whoami、/perms 会如实列出来源):

路径谁能做什么
auth.owners拥有者全部权限 + 永久授权 + 可走独立的拥有者会话
auth.superAdmins后台设定的高级管理员群管理权限(不能永久授权)
动态授权被临时授权的人仅被授予的项,仅限本群、带时限
本群身份该群的管理员 / 群主群管理权限(可用 admin.requireGroupAdmin 关掉)

指令(不需要 @,但前缀必须在消息首位):

指令权限作用
/help /whoami—指令表 / 我的身份与权限来源
/perms [@某人] /members /infoquery权限来源 / 成员列表 / 群信息
/grant @某人 权限[,权限] [分钟|forever] /revoke /grantsgrant本群动态授权(永久授权只有拥有者能给)
/mute /unmute /kick /recallmute / kick / recall禁言、解禁、踢人、撤回(回复某条再发 /recall 可省 id)
/banall on|off /card /admin /renamesettings全员禁言 / 名片 / 管理员 / 群名

上线顺序建议:先在设置里填 auth.owners → 打开 admin.dryRun 在群里试几条指令 → 关掉 dryRun,再按需加 superAdmins。 非拥有者默认不能用 DSH 内部工具(白名单 auth.guestToolAllow 之外一律拦),确实要放开再改 auth.guestDshTools。

Agent 能用的工具

插件向 DSH 注册 9 个工具(访客只看到白名单里的):

工具用途
qqbot连接状态 / 主动发消息(可带一张本地图片)/ 中断回合
qqgroup群管理:成员、群信息、禁言、踢人、撤回、名片、群名、管理员、戳一戳
qq_websearch联网搜索(多引擎组合,走配置的代理)
qq_webfetch抓网页原文,内网地址一律拒绝;可切 Moli 无头浏览器渲染 SPA
qq_imgsearch图片反搜(公网 URL 或本地上传),支持 kind=comic 漫画模式
qq_history读聊天记录(当前群/私聊直读,跨群按权限),窗口内图片自动识别
qq_draw按描述生图并直接发到当前会话
qqconfig仅拥有者私聊:在 QQ 里改白名单 / 发言参数等设置(两步确认)
qqauth仅拥有者私聊:流程授权的申请与状态查询

细节(每个工具的参数、引擎顺序、失败策略)见 DEVELOPMENT.md。

常见问题

现象检查
日志一直「OneBot 未连接」NapCat 的「正向 WebSocket」是否开在 onebot.wsUrl;reverse 模式下 NapCat 是否指向 ws://<DSH>:6199/;防火墙;token 是否一致
能连上但收不到消息OneBot 版本要选 v11;不能只开 HTTP,必须开正向或反向 WS
群里 @ 了也不回group.enabled、group.allow 白名单、self_id 是否一致(logAdapterFrames: true 看原始帧)
回「(本轮没有产生文字回复:…)」括号里是 turn/end 的原因,据此定位(模型路由、额度、工具报错)
发送失败NapCat 的 HTTP 服务器(默认 3000)是否开着;accessToken;看日志里的「发送失败」
网页端整个插件报错 / 设置面板空白0.12.1 的已知问题,升到 0.12.2 即可
日志在哪插件前缀 [dsh-qq-bot],适配器前缀 [dsh-qq-bot]/adapter,都打到 DSH Host 的 stdout

本插件不与 AstrBot 同时接:AstrBot 也是 OneBot 的消费方,两边一起接会让同一条消息被两个大脑各回一次。对端只要是 OneBot 11 实现(NapCat / OneDisc / Lagrange)就行。

升级与卸载

dsh plugin --profile web update                                     # 升级
dsh plugin --profile web remove @sputnikzaychik/dsh-qq-bot          # 卸载
  • 升级不丢配置:配置在 profile 的 cordis.patch.yml 里,不随包走。跨版本删掉的老字段会被自动清理。
  • 升级后要重启 DSH + 刷新页面(适配器是子进程、客户端是浏览器 bundle)。
  • 任一版本的功能变化见 CHANGELOG.md。

更多文档

文档内容
DEVELOPMENT.md本地开发与测试(28 套件 / 1018 项)、完整配置参考、工具细节、文件清单、设计取舍、发布流程、部署备注
ARCHITECTURE.md分层图、模块职责、关键数据流、身份契约、已知边界
CHANGELOG.md0.1.0 → 0.12.2 的完整演进
AI-DISCLOSURE.mdAI 生成方式、验证到什么程度、尚未验证清单(用前务必读)
SECURITY.md安全模型与漏洞报告方式(别在公开 issue 里贴细节)
CONTRIBUTING.md贡献流程与代码约定

许可与致谢

MIT,见 LICENSE。维护者 @arrow1031,核心贡献者 @nd002723。

  • NapCat —— 提供灵感、OneBot v11 接口与文档。没有它把 NTQQ 的能力按 OneBot 规范暴露出来,这个项目根本无从起步。
  • 梁圣 —— 忠!橙!

问题、PR、Discussions 都在 arrow1031-dev/dsh-qq-bot;QQ 群 1091766276(报错请带上 [dsh-qq-bot] 开头的日志与复现步骤)。

Comments

Loading…

Similar plugins

dsh-qqbot-dafeiyu

QQ Bot (QQ 机器人) IM channel plugin for DeepSeek Harness (dsh): per-peer sessions, group @-mention and keyword triggers, image generation, TTS voice replies, attachment handling.

Tools & CapabilitiesManifest valid

★ 0

dsh plugin --profile web add dsh-qqbot-dafeiyu

by gcry13067381632-jpg

QQ official bot channel for DeepSeek Harness (feature-rich fork of tencent-connect/dsh-qqbot): group and private chat with the full agent, sticker library with auto-tagging and AI meme replies, group

Notifications & IntegrationsManifest valid

★ 42

↓ 3.1k/wk

MIT

TypeScript

Oct 8, 2026

dsh plugin --profile web add @zaofan/dsh-qqbot

by 988hj7tczd-oss

QQ official bot (q.qq.com) integration for DeepSeek Harness: chat with the full agent from private chats, groups and channels — WS long connection (heartbeat / reconnect / RESUME), per-chat session is

Security & AuditNotifications & IntegrationsTerminal & ClientsManifest valid

★ 2

↓ 57/wk

MIT

JavaScript

Aug 22, 2026

dsh plugin --profile web add dsh-im-qq

by CCYellowStar2

Drive a local DeepSeek Harness agent from QQ and other IM channels through AstrBot: send tasks with /dsh, continue by quoting or @-mentioning the bot, answer approvals and ask_user_question prompts fr

Tools & CapabilitiesTerminal & ClientsManifest valid

★ 0

MIT

JavaScript

Sep 27, 2026

dsh plugin --profile web add dsh-astrbot-ingress

by QQPilotOrganization

把 QQPilot 的 QQ 消息接入 DeepSeek Harness(DSH)的桥接插件: 对 QQPilot 暴露一个 OpenAI Chat Completion 兼容端点,由 DSH 里配置的模型通过智能体工具决定 「回复什么 / 不回复 / 附带图片」;提供 工具 / 兼容 / 静默 三种运行模式,并在设置页内置 可视化聊天动态(实时看到收到的 QQ 消息、AI 的决定、回复内容、耗时

Manifest valid

★ 0

MIT

JavaScript

Oct 24, 2026

dsh plugin --profile web add qqpilot-dsh-plugin

by zaofan-make

AI 统管 QQ 群组:审核放行、群发文件、沟通其他 web 会话的 AI! ;气氛组担当:表情包自动入库、AI 自己决定开口、多预设多人格轮班陪聊!; 远程办公:权限审批、提问卡片转发到 QQ。; 自定义互动按钮:AI 帮你轻松搭文字游戏 —— 卡片逻辑由 AI 帮你写 ;省 token 设计:群聊价值评分后才唤醒 AI,上下文自动压缩。

Notifications & IntegrationsTerminal & ClientsManifest valid

★ 139

↓ 3.1k/wk

MIT

TypeScript

Oct 27, 2026

dsh plugin --profile web add @zaofan/dsh-qqbot