DeepSeek Harness QQBot 插件:把 QQ Bot 接入持久 Harness 会话

前言

做 DeepSeek Harness(DSH)渠道插件时,常见的问题是:Web 侧会话已经可用,但 QQ 侧缺少一个可直接运行的 channel 插件;要自己接 Gateway、处理消息、文件、审批和会话持久化,成本不低。

下面介绍 sliverp/DeepSeek-harness-qqbot。它是一个 out-of-tree DeepSeek Harness channel plugin,用官方 @tencent-connect/qqbot-nodejs Gateway client 把 QQ Bot 接入 persistent Harness agents,覆盖 C2C 和群聊文本、图片、文件、审批与命令。

这是什么

  • 插件名:sliverp/DeepSeek-harness-qqbot
  • 维护者:sliverp
  • 许可证:MIT
  • 定位:DSH channel plugin,将 QQ Bot Gateway 接到 persistent Harness agents。

核心功能

会话与消息

  • C2C 和群聊文本消息。
  • 每个 C2C 或群聊会话对应一个 persistent Harness session。
  • /new/reset 会保留旧历史,并切换到新的 durable session。
  • 入站 PNG、JPEG、WebP、GIF 图片会作为 durable Harness attachments 处理。
  • 如果所选模型不接受图片输入,会自动退化为纯文本。
  • 入站语音转写文本和非图片附件元数据会携带临时 QQ 下载 URL。
  • 出站支持助手文本、图片和本地 workspace 文件。

文件发送

  • 提供 QQ-turn-scoped qq_send_file 工具,用于在当前 QQ 轮次发送文件。
  • 工具限定在 workspace 内,并做文件大小检查。
  • 只接受 cwd 内的 regular files,解析符号链接,拒绝大于 104,857,600 字节(100 MiB)的文件。

QQ 能力

  • QQ Markdown 回复默认开启;需要 QQ Markdown permission,否则 QQ API 会拒绝 Markdown 消息。
  • 支持 typing indicators、长回复拆分、按会话排序、去重、发送重试和有界超时。

审批与访问控制

  • 对需要 Harness approval 的操作,会发送 requester-bound QQ 审批消息,带 one-shot Allow 和 Reject 按钮。
  • 只有发起当前轮次的 QQ 用户可以批准或拒绝。
  • 审批超时默认 120,000 毫秒,未答复会被拒绝。
  • 支持 fallback 到另一个 composed approval channel。
  • C2C 和群聊流量可使用 open、allowlist 或 disabled access policy。
  • 含非公开数据的 workspace 建议使用 allowlist;被允许的 QQ 用户也能访问所选 agent preset 提供的工具。

DSH 集成

  • 密钥通过 Harness credential service 解析,而不是直接写在插件配置里。
  • AppID 或 AppSecret 未配置时,插件以 dormant 方式启动,不阻塞 DSH。
  • 无效 QQ credentials 只会让 QQ channel offline,不会导致 DSH 启动失败。
  • 支持 Harness agent-preset composition,用于 tools、prompts、skills。
  • 如果 Web 已经打开了同一个 live session,QQ 侧会安全复用,不会创建第二个 session writer。

环境要求

  • Node.js 22.19 或更高版本
  • pnpm 10.33.4
  • DeepSeek Harness 0.1.0-rc.7 或更高版本
  • QQ Bot AppID 和 AppSecret,且启用 C2C 和/或 group message events
  • 如需 QQ 审批按钮,需要 Inline Keyboard permission
  • package.json 声明版本为 0.1.5

安装与启用

从 GitHub 安装:

pnpm dsh plugin --profile web add github:sliverp/DeepSeek-harness-qqbot

如果已有本地 checkout,也可以直接安装路径:

pnpm dsh plugin --profile web add /absolute/path/to/DeepSeek-harness-qqbot

开发时可以在启动环境中设置凭据:

export QQBOT_APP_ID='your-app-id'
export QQBOT_APP_SECRET='your-app-secret'
pnpm dsh --profile web

如果要长期运行,可以把 QQBOT_APP_ID 放入 ~/.dsh/.env,并通过 Harness credential settings surface 保存 QQBOT_APP_SECRET。两个值都不要提交到代码仓库。

也可以通过覆盖 ~/.dsh/profiles/web/cordis.patch.yml 中的插件行,调整访问策略或限制。

典型用法

1、启动 DSH,等待日志出现 QQ Gateway connected

2、给机器人发送:

/bot-ping

3、发送普通文本或图片。消息会追加到对应会话的 durable Harness session,模型回复会回到 QQ。

4、发送 /new,确认机器人报告新的会话。

5、发送已注册命令,例如:

/goal
/plan
/compact

其他可用命令包括:

/bot-ping
/bot-image-test
/bot-file-test
/bot-help
/bot-status
/bot-cancel

适用场景与注意

适合需要在 QQ C2C 或群聊中使用 DSH agents 的场景,尤其是希望复用持久会话、agent preset、文件发送和审批流程的团队。

注意:

  • 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
  • 如果 workspace 含非公开数据,使用 allowlist 策略。
  • QQ Markdown 权限未开启时,关闭 Markdown 回复,避免 QQ API 拒绝消息。
  • qq_send_file 只发送 cwd 内的常规文件,且受 100 MiB 限制。
  • 审批按钮依赖 Inline Keyboard permission;超时默认 120,000 毫秒。

结尾

sliverp/DeepSeek-harness-qqbot 把 QQ Bot 的收发、会话、文件和审批接到 DSH 的持久 agent 会话上,适合作为 QQ 渠道插件的起点。

GitHub:https://github.com/sliverp/DeepSeek-harness-qqbot

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

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

小夜