dsh-qqbot-send:让 DSH 智能体主动往 QQ 发消息

前言

在 DSH 里接 QQ,常见做法是装 dsh-qqbot 网关:用户从 QQ 发消息进来,智能体在会话里回复。若会话起自别的渠道(本地 CLI、Web、别的 IM),或任务跑完需要「推一条结果到 QQ」,单靠入站对话往往不够——你需要的是不依赖当前 inbound 消息、直接调用 QQ 开放平台 REST API 的出站能力。

dsh-qqbot-send(维护者 xuan25,社区分类:联网工具)就是为这类需求准备的 out-of-tree 插件:给 DSH agent 注册可调用工具,一次 tool call 就能把文本或 Markdown 推到 QQ 私聊、群、频道或公会 DM;与正在运行的 dsh-qqbot 网关可以并存,走纯 REST,不共享连接。

这是什么

一句话:dsh-qqbot-send 通过 QQ 开放平台 REST API,为 DSH profile 提供主动发消息与解析当前会话 QQ 目标两类工具,使任意 session 都能在 QQ 上触达用户,即使对话是从别处开始的。

仓库:github.com/xuan25/dsh-qqbot-send
目录页:skillhub.cn/plugins/xuan25/dsh-qqbot-send
许可证:MIT(见仓库 package.json);当前版本 0.1.0。社区目录星标为 0,与 DeepSeek / 幻方无官方从属关系,仅为独立插件站点条目。

核心功能

主动发送到任意 QQ 目标

工具 qqbot_send_message 可在没有入站消息的情况下发送内容:

  • target 格式:c2c:<openid>(私聊)、group:<group_openid>(群)、channel:<channel_id>(频道)、dm:<guild_id>(公会 DM)
  • content:正文(Markdown 或纯文本)
  • markdown(可选):c2c/群默认跟随配置项 markdownSupport;频道/DM 默认纯文本

长正文会在行边界自动分片发送;围栏代码块与表格行整段挪到下一 chunk,拼接后与原文一致。任一分片失败则停止后续发送;平台返回的 bizCode(若有)会写在结果的 note 字段。

解析当前会话的 QQ 对话

工具 qqbot_current_target 无副作用地解析当前 agent session 对应的 QQ 会话。若已安装并运行 dsh-qqbot 网关且 session 由其记录,会返回可直接用于 qqbot_send_message 的 target 字符串(例如 group:<group_openid>);未装网关或查不到时返回简短说明。

与网关并存

插件不占用 dsh-qqbot 的长连接,仅 REST 发消息与查 target,适合「网关收消息 + 本插件主动推送」的组合。

安装与启用

在目标 DSH profile 下执行官方安装命令(勿自行拼 github:owner/repo):

dsh plugin --profile <name> add dsh-qqbot-send

插件会自行注册。查看合成配置:

dsh --profile <name> --dump-config

然后启动或重启该 profile。

依赖: 需要宿主提供 dsh-tools 服务;没有则插件保持 inactive。Node.js >= 18;peer 依赖含 @deepseek-ai/cordis、@deepseek-ai/dsh-tools、@deepseek-ai/schemastery(版本见仓库 package.json)。

配置

当 profile 环境已提供 QQBOT_APPID 与 QQBOT_SECRET 时,可不写额外配置。也可在插件配置中直接填写或覆盖默认值:

Key Default Description
appId env QQBOT_APPID bot application id
appSecret env QQBOT_SECRET bot application secret
markdownSupport true c2c/group 是否默认 Markdown
chunkLimit 4500 单条消息最大字符数
chunkGapMs 500 分片发送间隔(毫秒)

消息与 token API 默认基址为 https://api.bot.qq.com,可用环境变量 QQBOT_BASE_URL、QQBOT_TOKEN_BASE_URL 覆盖。上表各键也可使用 __FROM_ENV__ 或 process.env.VARNAME 引用。

缺少凭证不会阻止注册:两个工具都会注册,真正发送时在执行阶段报错。安装前仍建议阅读源码与 MIT 许可证;插件以当前 dsh 进程权限运行。

典型用法

  1. 配置或导出 QQBOT_APPID、QQBOT_SECRET(及可选的 base URL 环境变量)。
  2. 安装插件并 --dump-config 确认项已合并,重启 profile。
  3. 在 agent 侧调用工具:
    - 已知 openid / 群 openid 等:对 qqbot_send_message 传入对应 target 与 content。
    - 会话来自 QQ 网关:先 qqbot_current_target 取 target,再 qqbot_send_message 回发同一对话。

README 未给出完整 JSON tool 入参示例;字段以工具 schema 与上表为准。

适用场景与注意

适合: 需要在非 QQ 起点会话里把结果推回 QQ;定时或后台任务完成后通知用户;与 dsh-qqbot 网关配合,用 qqbot_current_target 避免手写 target。

平台限制(README 明确说明): 主动消息受 QQ 开放平台配额约束(私聊 c2c 最严),且通常只能触达近期与 bot 有过互动的用户;本插件不能绕过这些限制。

质量与测试: 仓库以 pnpm build、pnpm typecheck、pnpm lint、node --test 为门禁;部署侧 token 冒烟测试在无 QQBOT_APPID / QQBOT_SECRET 时会跳过。

结尾

dsh-qqbot-send 补的是 DSH 在 QQ 侧的主动出站:REST 发消息、可选 Markdown、长文无损分片,并可与 dsh-qqbot 网关配合解析当前 QQ 会话。安装与配置以 README 为准;详情见 SkillHub 目录页 与 GitHub 仓库。

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

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

小夜