dsh-qq-sticker:给 DSH 上的 QQ 机器人补全表情包能力

前言

用 DeepSeek Harness(DSH)接 OneBot v11 网关跑 QQ 机器人时,模型往往只能发文字或普通图片。QQ 收藏表情在协议里没有统一的「发收藏表情」action,但收藏条目本质是一张图——用 image 段就能当表情包发出去。真正麻烦的是:怎么拉收藏列表、怎么把表情 id 变成可下载的图、以及怎么让模型在合适时机选对的图。yr584 维护的 dsh-qq-sticker(分类:趣味换装)把这三块做成 MCP 工具,并附带可视化设置页;适用于 SnowLuma、NapCat、LLOneBot 等网关,不依赖 qq-bridge。

这是什么

dsh-qq-sticker 是 DSH 社区插件(当前 package 版本 0.2.2,MIT)。它给已接入 DSH 的 QQ 机器人增加:同步账号收藏、按备注或情绪检索、以图片消息发送,以及从 QQ 收藏删除;另带梗库查询与 设置 → 表情包 管理界面。插件以当前 DSH 进程权限运行,安装前建议在 GitHub 查看源码与许可证。

核心功能

给模型用的工具

工具 作用
sticker_sync 拉取账号收藏表情,合并进本地库
sticker_list 按备注/id 搜索,返回 id + 备注(命中梗库的还带用法)
sticker_send 发到群或好友;表情是单独气泡,不能和文字合并
sticker_delete 从 QQ 收藏里删除一张
meme_lookup 查梗:本地 6668 条词库优先,没收录才联网

本地梗库来自 astrbot_plugin_memewiki(MIT),随仓库分发时需保留其许可说明。

设置页

在 设置 → 表情包 中可:

  • 九宫格浏览图库(缩略图经宿主代理,避免直接踩 QQ CDN 防盗链)
  • 点选后发送到指定群/好友,或删除
  • 添加表情:网络 URL、本地图片(≤5 MB)、或本机路径(宿主直读)
  • 不填备注时自动起名:文件名 → 可选视觉模型 → 梗库比对,并支持备选名一键更换
  • 两个滑块配置「每分钟上限」「主动使用概率」(写入配置;运行时限流 README 标明待实现)

表情缓存文件:~/.dsh/qq-sticker/stickers.json。

安装与启用

下面介绍官方 README 中的安装方式。

dsh plugin --profile desktop add dsh-qq-sticker
# 或本地开发:pnpm add link:/path/to/dsh-qq-sticker

装完后重启一次 DSH(宿主半身和 MCP 行只在启动时挂载)。MCP 启动路径由插件内置 -e 启动器在运行时解析(依次尝试 cwd、$DSH_HOME/profiles/desktop、$DSH_HOME/profiles/web),无需 postinstall。

运行环境要求 Node.js >= 22(见 package.json engines)。

配置

首次使用前创建 ~/.dsh/qq-sticker/config.json:

{
  "onebot": { "url": "http://127.0.0.1:3000", "token": "你的 access token" },
  "sync": { "count": 100 },
  "send": { "maxPerMinute": 6, "autoProbability": 0 },
  "autoDesc": {
    "enabled": true,
    "baseUrl": "https://api.siliconflow.cn/v1",
    "apiKey": "sk-...",
    "model": "Qwen/Qwen3-VL-8B-Instruct"
  }
}
  • onebot.url / onebot.token:OneBot 网关地址与 access token
  • sync.count:同步时拉取数量上限(示例为 100)
  • send.maxPerMinute、send.autoProbability:发送频率与主动使用概率(配置项;限流逻辑 README 注明待实现)
  • autoDesc:可选;配置后才会用视觉模型自动起名,不配则用文件名/编号兜底

典型用法

经过上面的安装与配置,可按下面顺序让模型使用表情包:

  1. 调用 sticker_sync,把 QQ 账号收藏合并进 stickers.json。
  2. 对话中由模型调用 sticker_list 按关键词或情绪检索,拿到 id 与备注(及梗库用法)。
  3. 需要发送时调用 sticker_send 指定目标;需清理收藏时用 sticker_delete。
  4. 不确定梗含义时,模型可调用 meme_lookup 查本地词库或联网补充。

人工管理可走设置页:预览、添加、删除、试发,无需每次走工具。

适用场景与注意

适合谁:已在 DSH desktop(或 link 本地开发)接 OneBot v11、希望机器人在群聊/私聊里自然发表情包,并愿意维护 OneBot 网关与 access token 的开发者。

已知限制(来自 README):

  • 网关必须支持 fetch_custom_face_detail,否则 sticker_sync 可能报「返回不是数组」
  • 无 url 的表情会按 emoji_id 推导 gxh.vip.qq.com 地址,个别仍可能 404
  • 连发表情易触发 QQ 风控,建议配合 send.maxPerMinute 等自制上限
  • 表情消息为单独气泡,不能与文字合并成一条

DSH 生态是「一切皆插件」;社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-qq-sticker 把收藏同步、检索、发送和梗库查询收进一套工具与设置页,补上了 OneBot 侧「发收藏表情」没有标准 action 时的常见缺口。进一步了解可访问目录页与仓库:

  • 目录页:https://www.skillhub.cn/plugins/yr584/dsh-qq-sticker
  • GitHub:https://github.com/yr584/dsh-qq-sticker
羽毛球分组比赛记分
小程序二维码

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

小夜