DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

lixian292 /

lixian292/easy-qqbot

Verified

简洁易用的 DeepSeek Harness QQ 机器人插件

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@1479d03a

easy-qqbot 在 DeepSeek Harness 侧边栏的入口

easy-qqbot

简洁易用的 DeepSeek Harness QQ 机器人插件
预算可控 · 长期记忆 · 上下文压缩 · 个性化 · 批量表情包打标与回复

License: MIT Node DeepSeek Harness

装一个插件,DSH 就是你的 QQ 机器人。 不用记端口、不用另开网页:左侧栏一个入口,控制台直接占用会话区域;配置、表情包打标、预算、记忆、日志都在里面。


目录

  • 为什么叫 easy-qqbot
  • 功能
  • 截图
  • 快速开始
  • 批量导入表情包并打标签
  • QQ 内命令
  • 配置说明
  • 数据与隐私
  • 常见问题
  • 项目结构
  • 开发
  • 参与贡献
  • License

为什么叫 easy-qqbot

  • 装得简单:一条 plugin_manager install_bundle 命令,不需要改 DSH profile 文件。
  • 找得到入口:DSH 左侧插件栏出现「QQ 机器人」图标,点开就是仪表盘;控制台内嵌在会话区域,退出即回聊天。
  • 配得简单:首次打开控制台填 AppID / AppSecret,保存即重连,页面上直接「测试 QQ 凭证」「测试 LLM」。
  • 用得简单:默认人设、默认预算、默认记忆策略开箱即用;想改什么都在图形界面里。
  • 数据简单:配置、记忆、表情包、预算、日志全部在插件目录 data/,一个文件夹备份/迁移。

功能

功能 说明
💰 预算控制 记录每次模型调用的 token 与费用;支持 日 / 月 / 单会话 三级 token 限额、每日调用次数、超限冷却提示;控制台可视化用量与按会话明细
🔌 QQ 官方机器人 AppID + AppSecret,WebSocket 长连接(鉴权 / 心跳 / 断线重连 / Resume),文本与富媒体收发,被动回复窗口管理,超时自动转主动消息
🧠 长期记忆 每个会话的完整历史(JSONL)、滚动摘要、LLM 定期抽取的长期事实、用户画像;群聊按发言者 ID 分别存储长期事实并在回复时注入当前发言者的事实
🗜 上下文压缩 上下文超过阈值时自动把旧消息总结进滚动摘要,只保留最近若干条原文,控制长度与成本
🎭 个性化 全局人设(名字 / 系统提示 / 风格 / 回复长度 / 表情频率),支持按会话、按用户覆盖模型、温度、记忆与压缩开关
🎛 多模态识别(可选) 统一配置 图片 / 音频 / 视频 识别:图片走视觉模型;语音支持 OpenAI 兼容转写(Whisper 风格)或直接音频理解;视频支持 ffmpeg 抽帧识别或 video_url 模式
🖼 表情包系统 目录批量导入或网页多选上传 → 去重入库 → 逐张打标签、写描述 → 移入正式库 → 聊天时模型按标签挑图回复;支持自动抓取聊天图片、负面库与回收站
🛠 管理后台 7 个页面:概览、配置、表情包、预算、会话、人员、日志;可从 DSH 侧栏直接打开,也可浏览器访问 /qqbot/

多模态识别默认关闭:不配置时机器人只能看到 [图片 800×600 image/jpeg] / [语音] / [视频 video/mp4] 这类占位;在「配置 → 多模态识别」启用对应模态后,才会把媒体内容转成文字描述注入上下文。

截图

应用内入口与概览

侧边栏入口与概览

表情包打标(核心页面)

表情包管理

会话记忆与上下文

会话与记忆

预算与配置

预算仪表盘 配置页

快速开始

1. 前置要求

  • DeepSeek Harness(>= 0.2.1-rc.2)已安装并运行
  • Node.js ^22.19.0 || >=24.0.0
  • 一个 QQ 机器人开放平台 应用(拿到 AppID 与 AppSecret),并已将机器人添加到目标群或允许私聊

2. 安装

方式 A:在 DSH 里直接安装(推荐)

在 DSH 对话中让 Agent 执行,或调用插件管理工具:

plugin_manager install_bundle https://github.com/lixian292/easy-qqbot

方式 B:本地克隆(修改/开发时使用)

git clone https://github.com/lixian292/easy-qqbot.git
# 在 DSH 对话中安装本地目录(绝对路径):
plugin_manager install_bundle <easy-qqbot 的绝对路径>

安装成功后得到 application: applied(或 restart-required)。安装 / 更新后请完整重启 DSH 一次:客户端代码带内容修订号,重启可避免旧缓存导致的 web boot 报错。

3. 配置 QQ 凭证

  1. 打开 DSH 左侧栏的 QQ 机器人 → 点「打开完整控制台」;
  2. 切到「配置 → QQ 接入」,填入 AppID 与 AppSecret,保存(会自动重连);
  3. 回「概览」点「测试 QQ 凭证」与「测试 LLM」,确认两项都通过。

4. (可选)启用多模态识别

机器人默认只拿到媒体的文字占位。若希望它"看懂"图片、听懂语音、理解视频,在控制台「配置 → 多模态识别(可选)」中配置一个 OpenAI 兼容 接口(硅基流动、OpenRouter、阿里百炼兼容模式、本地 Ollama 代理等均可),然后分别启用需要的模态:

模态 配置 说明
图片 image.model 视觉模型名,如 Qwen/Qwen2.5-VL-7B-Instruct
音频 audio.model + audio.mode transcribe:调用 /audio/transcriptions 转写(Whisper 风格);chat:把音频直接发给支持 input_audio 的模型
视频 video.model + video.mode frames:本机需安装 ffmpeg(ffmpegPath 可填绝对路径),抽帧后逐帧识别;url:把 QQ 视频 URL 直接交给支持 video_url 的服务商
  • 总开关 enabled 需要 baseUrl + apiKey,对应模态还需要模型名;未配置/失败时自动降级为占位,不影响聊天;
  • 语音消息会优先使用 QQ 返回的 voice_wav_url;若平台已提供 ASR 文本,未启用多模态时也会作为兜底;
  • 视频 frames 模式依赖 ffmpeg,未安装时该视频会被降级并记录日志(可用 winget install Gyan.FFmpeg 或自行下载后填写绝对路径)。

API Key 只保存在本插件 data/config.json,管理接口只返回掩码;.gitignore 已忽略 data/。 多模态调用会按所选服务商单独计费,目前不计入插件的预算统计。

5. 开始聊天

私聊机器人,或在群里 @机器人 发消息即可。首次对话前可先在「配置 → 人设」里改名字和说话风格。

批量导入表情包并打标签

三种导入方式,任选:

方式 操作
📁 目录批量导入(推荐) 把图片放进 import/ 目录(支持子目录)→ 控制台「表情包 → 扫描 import 目录 → 导入」;或命令行 node tools/sticker-import.mjs --tags "无语,敷衍"
🌐 网页多选上传 控制台「表情包 → 上传」,一次可选多张,统一附加标签
📥 自动抓取 开启后聊天中收到的图片自动进入候选库,之后在控制台补标签

导入后的打标流程:

  1. 「表情包」页按图层筛选(全部 / 正式库 / 候选 / 负面 / 回收站);
  2. 点任意卡片,填写标签(如 无语, 敷衍, 接梗)与描述,保存;
  3. 勾选多张 →「批量加标签」→「转为正式」——只有正式库里的表情会被用于回复;
  4. 在聊天中使用 #表情 无语 可直接发一张对应标签的表情;模型也会在合适的回复里按标签自动挑图(格式 [[sticker: 标签]],在系统提示里说明)。

旧版 @zaofan/dsh-qqbot 的表情包库可用 node tools/migrate-old.mjs --apply 迁移(默认 dry-run,只读旧数据)。

QQ 内命令

命令 说明
#帮助 / /help 查看所有命令
#预算 今日 / 本月 / 本会话 token 与费用
#表情 <标签> 按标签随机发一张正式库表情包
#清空上下文 清空本会话历史与摘要(保留长期事实)
#记忆 查看本会话长期事实
#状态 连接状态摘要(管理员)
#表情包统计 表情包图层与标签统计(管理员)

管理员通过「配置 → 命令与管理员」的 adminOpenids 指定,或由群主/管理员身份(allowGroupOwner)识别。

配置说明

配置保存在 data/config.json(首次启动自动生成),推荐全部通过控制台修改:

分区 内容
QQ 接入 AppID / AppSecret、API 地址、intents、分片、文本长度、重连与被动回复窗口
LLM 提供方、模型、温度、最大输出、超时
多模态识别(可选) OpenAI 兼容 baseURL / API Key / 提示词 / 超时 / 单文件大小 / ffmpeg 路径,以及图片、音频、视频各自的开关与模型(音频/视频还含模式)
人设 名字、系统提示、说话风格、回复长度、表情频率、记忆/压缩开关
预算 日/月/会话 token 限额、每日调用数、单价与币种、超限提示与冷却
记忆与压缩 事实上限、抽取频率、历史长度、压缩触发阈值、保留条数
表情包 功能开关、候选/正式策略、自动抓取、大小限制、提示词标签目录上限
命令与管理员 命令前缀、管理员 openid、群主权限
管理后台 / 日志 控制台路径、分页大小、日志行数、调试开关

admin.path 修改后需要重载插件(HTTP 路由在启动时注册)。

数据与隐私

所有运行时数据都在插件目录下,不会写入 DSH profile:

easy-qqbot/
├── data/
│   ├── config.json          # 配置(含 AppSecret / 多模态 API Key,注意保密)
│   ├── budget/              # 用量与调用明细
│   ├── chats/<chatId>/      # 每会话历史、摘要、群级长期事实
│   │   └── members/<id>.json # 群聊按发言者 ID 分别保存的长期事实
│   ├── people/              # 用户画像
│   ├── personas.json        # 会话/用户级人设覆盖
│   ├── stickers/            # 索引 + library/candidate/negative/trash 图片
│   └── logs/                # 滚动日志
└── import/                  # 批量导入投放目录
  • .gitignore 已忽略 data/、import/ 内容与 tmp/,不要提交 data/config.json;
  • 管理页/接口只绑定本机 DSH Web 服务,除同源请求外拒绝访问;
  • AppSecret、多模态 apiKey 不会出现在接口响应与日志中(仅掩码)。

常见问题

Q:左侧栏找不到「QQ 机器人」? 安装/更新插件后请完整重启 DSH(不是只刷新页面)。客户端模块在启动时装配,重启后侧栏会出现入口。

Q:打开控制台只占左上角一小块 / 或退出后 DSH 重启? 已修复:控制台现在内嵌在会话区域并按窗口尺寸自适应;退出用「← 返回会话」/「← 退出工作台」/ Esc,不会重载 APP。更新后重启 DSH 生效。

Q:日志里出现 crash-*-web-boot.log / web boot: entries did not activate? 这是客户端 bundle 修订号与 DSH 引导缓存不一致(插件文件在 DSH 运行期间被修改)。完整重启 DSH 即可;发布版插件正常安装后不会再出现。

Q:群里 @ 机器人没反应? 确认机器人有群聊/消息权限、消息确实是 @ 机器人触发;被动回复窗口为群 5 分钟 / 私聊 60 分钟,过期会自动转主动消息(受每日上限约束)。

Q:机器人能看懂图片 / 听懂语音 / 看懂视频吗?

  • 默认(未启用多模态识别):只能看到 [QQ表情 0]、[图片 800×600 image/jpeg]、[语音]、[视频 video/mp4] 这类占位;图片仍会进入表情包候选库供打标签;
  • 在「配置 → 多模态识别(可选)」启用对应模态后:图片会转成文字描述、语音会转写/理解、视频会抽帧或经 URL 识别,再注入上下文(失败自动降级为占位,不影响正常聊天)。
  • 视频 frames 模式需要本机安装 ffmpeg;url 模式需要服务商支持 video_url 输入。

Q:群聊里能记住不同的人吗? 可以:群聊中每个发言者的事实按 member_openid 分别保存在 data/chats/<groupId>/members/<id>.json;回复时只注入当前发言者的事实,不会把其他群成员的事实泄漏到提示词里。聊天记录里的群级事实与成员事实分开存储。

Q:发送 gif / webp 表情失败? QQ 富媒体上传对格式与账号权限有要求,失败时会自动降级为文字并记录日志(控制台「日志」页可见)。

Q:能不开 DSH 前端、只用浏览器访问控制台吗? 可以:浏览器打开 http://127.0.0.1:<DSH Web 端口>/qqbot/,与内嵌控制台功能一致。

项目结构

easy-qqbot/
├── index.js / client.js        # Host 入口 / DSH 客户端入口(侧栏 + 控制台面板)
├── host/
│   ├── qq/                     # QQ 官方 API、WebSocket 网关、收发
│   ├── brain/                  # LLM 调用、Prompt、聊天主流程、命令
│   ├── memory/                 # 历史、长期记忆(群成员按 ID)、上下文压缩
│   ├── budget/                 # 预算用量与限额
│   ├── persona/                # 个性化配置
│   ├── multimodal/             # 可选:图片/音频/视频 → 文字描述(OpenAI 兼容、ffmpeg 抽帧)
│   ├── stickers/               # 表情包存储、导入、挑选
│   └── admin/                  # 管理后台 API 与页面
├── tools/                      # 导入 CLI、旧数据迁移、静态检查
├── tests/                      # 离线单元 / 集成测试(无需 QQ / LLM)
├── docs/                       # 架构、接口、管理 API、开发与验证文档
├── images/                     # README 截图
├── data/                       # 运行时数据(git 忽略)
└── import/                     # 批量表情包投放目录

开发

node tools/check.mjs                 # 语法 / JSON / 清单静态检查
node --test "tests/*.test.mjs"       # 全部测试(离线,mock QQ 与 LLM)
node tools/sticker-import.mjs --help # 批量导入 CLI
node tools/migrate-old.mjs --help    # 旧数据迁移
  • 运行时零第三方依赖,仅使用 Node 内置模块与 DSH 提供的 ctx.llm / webServer 服务;
  • 详细设计:架构 · 模块契约 · 管理 API · 开发约定 · 验证记录。

参与贡献

欢迎 Issue / PR:新的模型适配、表情包策略、QQ 事件支持都欢迎。提交前请跑一遍 node tools/check.mjs 与全量测试,并确保没有把 data/ 或任何密钥带进提交。

License

MIT © 2026 lixian292

—/ 5

No ratings yet

Verified DSH bundle

Commit 1479d03a5438

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout