前言¶
在 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 进程权限运行。
典型用法¶
- 配置或导出
QQBOT_APPID、QQBOT_SECRET(及可选的 base URL 环境变量)。 - 安装插件并
--dump-config确认项已合并,重启 profile。 - 在 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 仓库。