dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
接入 QQ 官方机器人的 DeepSeek Harness 通道(tencent-connect/dsh-qqbot 功能增强 fork): 群/私聊与完整 agent 对话、表情包图库(自动打标+AI 斗图)、群管理(入群审批/禁言)、botplay 互动事件卡与翻页目录、用户扩展注册表(自定义斜杠命令与 QQ 工具)、定时唤醒、QQ 远程审批、悬浮球 dock Web UI。
-blue)
基于 deepseek-harness (dsh) 的 QQ Bot IM 插件增强 fork:将 QQ 消息平台作为 dsh agent 的前端协议驱动,并加入表情包图库、富媒体收发、定时任务、多实例人格、好感度系统、可视化设置面板等能力。
📦 仓库: zaofan-make/dsh-qqbot(fork 自 tencent-connect/dsh-qqbot;改动都在这一侧,升级/重装上游会被冲掉)
⭐ 用得顺手的话,麻烦点一下右上角的 Star —— 它是这个项目"有人在用"的唯一可见信号,也是继续更新的动力。
中文 | English | 📖 用户手册(配置项 / 内置命令 / 自定义扩展 / 群管理 / 智能回复 / 架构…)
一句话:把 dsh 的 QQ 机器人养成"活鱼"——会存表情包、会挑图回你、到点自己开口、记得住谁跟它亲疏远近,一台电脑还能同时养好几条性格不同的鲸鱼。
🤳 群里发的图,她偷偷全存进小图库 自动去重、分「待整理/收藏/回收站」;你说一句"发个开心点的图",她自己搜库、自己挑、自己发,还会挑场合出手(冷场不发、刷屏限量、同图不连发)。
⏰ 到点她自己会开口 "每天早 9 点去群里说早安""30 秒后提醒我喝水"——她说到做到,准点冒泡。
🧑🤝🧑 一个电脑,N 条鲸鱼同时在线 每条号独立 AppID、独立人格、独立图库/定时/闸门,互不串号;Web 页「扫码绑定」手机一扫就上岗。
💗 她记得住谁亲谁疏(v1.5.1) 两个维度分开算:熟识度(她把你记得多牢——来过几天、说过多少、被点名、接话,慢变量)与好感度(她对你什么态度——随每次互动可升可降)。面板里一行一个人,还能一键导出 Excel 拿去分享。
💬 悬浮球 dock:她的随身控制台 设置面板右下角的小球,点开就是一整个操作台:💬 聊天(像 QQ 一样回放群/私聊记录,气泡+头像,图能放大、本地视频能播、SILK 语音转 mp3 直接听、文件出下载卡,还能在聊天框里直接发文字/插图/发文件——长文本自动拆条连发不被吞);📥 入群审批、🔨 锤子(下面分 🔇 禁言 和 👢 踢人 两页;踢人用你自己的 QQ 号管群,扫码一次之后长期免扫,登录态与 AI 共享);⚙️ 出站(适配主动:刚收到真人消息时前几条带引用回你、连发自动转独立消息,定时/后台推送不打扰)。
🛡️ 群主/群管好帮手 入群审批 + 禁言 + 查成员,全走官方接口,出错给"人话"(不是管理员/不能禁群主……都告诉你为什么)。
👢 踢人(v1.6.3) QQ 官方没有开放踢人接口,所以这一块走"你自己的 QQ 号 + 群官网":面板 🔨 锤子 → 👢 踢人 里刷新二维码、手机扫一次就登(之后长期免扫);登录态和 AI 共用 —— 你也可以直接在 QQ 里跟她说"把群里那个 X 踢了"。
🗂️ 归档了也会自己回家 不小心把她的会话点了「归档」藏进侧边栏深处?不用满世界找——那个会话下次在 QQ 里被消息触发时,会自己从归档里摘出来回到侧边栏(你主动归档的其它会话不受影响)。
🔝 QQ 一有动静,她的会话自己爬到最上面(v1.6.8) 侧边栏里正在跟你聊的那个会话,不该被别的压着 —— QQ 里一有消息、她真的回了话,对应会话就会自动插到「还热着」的那批之后(10 分钟内聊过的算热,置顶的永不动),冷掉的会话自然被它越过。全程事件驱动、不轮询;宿主没起来、或聊天页没开着时天然不排序。
🖥️ 不碰配置文件,设置面板点点点 怎么回、能发什么图、什么时候开口、什么人格——面板上改完保存即生效(只有增删账号才要重启)。还有 ✏️ 预设人格编辑器,直接在网页里改她的"性格文件"。
📦 干净又利落 发图/撤消息用纯文本就能驱动(回复里写 [MEDIA:image|路径] / [RECALL]);仓库不含任何机器人凭据与隐私。
📱 不用开电脑 —— 手机也能 7×24 挂着 配合社区的 dsh-mobile-apk(dsh 安卓壳 APK:WebView UI + 内嵌 Termux 运行时快照,解压即跑),把 dsh 和这只鲸鱼一起装进手机,就是一台随身在线的 QQ 机器人 —— 不用为了挂机常开一台电脑。(安卓上通常没有 ONNX 运行时,记得在设置里勾上「程序兜底(不依赖小模型)」,见下方说明。)
图①:dsh 运行后台——思考过程、工具调用、Token 用量一目了然(配合「回复闸门 reply_gate」可让机器人自主判断该开口还是静默吃瓜); 图②:QQ 群里的抓鬼游戏互动——该回就回、该藏就藏,角色扮演全自动; 图③:斗图实战——机器人用自己收藏的表情包接招回击,图、文分开两条连发。
图④:群管理·入群审批全流程——【群管·入群申请】事件注入 + 【审批轮询】双链路触发,AI 核对 openid 台账后自动放行; 图⑤:QQ 群内放行成功效果——小号申请入群被自动审批通过。
这是给"想自己加东西"的用户准备的接口 —— 往{数据根}/.qqbot-extensions/里丢一个.mjs就是一个扩展。
插件自带的能力、示例、文档全都白送,你只管写业务逻辑。
先把边界说清楚:她现有的功能 —— **表情包图库、到点开口、好感度系统、群管理(禁言/踢人)、
悬浮球面板、智能回复闸门……这些是插件内置的**(写在插件源码里,随插件升级一起更新)。
扩展是另一回事:你的 .mjs 放在自己的数据目录里,不改插件源码、升级插件也不会被覆盖。两者的关系是:能力一样,位置不同 —— 扩展拿到的那套能力包(发消息 / 发图 / 进她上下文 /
调官方 API / 持久化 / 身份…)就是插件内部模块在用的同一套封装,所以你写的东西不是"外挂",
只是长在同一条链上的另一个模块。
🧩 六套扩展点,挑一个放进去就行
你想做的事 · 放哪个目录 · 什么时候跑 让 AI 主动调用某个工具 · tools/ · LLM 调它的时候 加一条 /我的命令 · commands/ · 用户敲这条命令 卡片按钮点了要做事 · botplay/ · 有人点按钮 启动时恢复任务 / 起定时器 / 预取 · hooks/ · 插件启动时跑一次 管每一条消息的命运 · inbound/ · 每条消息都过一遍 管每一条出站消息 / 补发媒体 · outbound/ · 每条要发出去的消息都过一遍
🧰 一套能力包,六套通用(不用为每套各记一套 API)
await env.text('hi') / env.markdown('# 标题') / env.markdownCard(md, keyboard)
await env.image(src) / voice / video / file // src 可传 URL 或本地路径
env.at(openid) // 群里 @ 人
await env.api('/v2/users/@me') // ★ 官方 API:自带 token 与缓存,不用管 appId/secret
env.store.load() / env.store.save(obj) // ★ 持久化:升级插件不丢
await env.appendSilent('...') // ★ 进她上下文、不唤醒
await env.appendWake('...') // ★ 进上下文并唤醒一轮
env.user / env.owners / env.peer · env.log() · env.kernel(全权限遥控器)· await env.restart()🚦 入站扩展独有:一条消息的"处置权"
消灭 annihilate(不进群历史/不进上下文/不占冷却)
改写 rewrite(早挂点连群历史一起改)
强制入站 forceWake(跳过 @门控/价值评分/群冷却)
覆盖 @判定 decide · 静默进上下文 silentInto · 用户维禁言 muteUser 系列
只读视图 message.{text,sender,scope,groupId,isOwner,mentions,quoted,platform}🛡️ 四条保命件 —— 你的脚本出问题,也搞不坏群
主人白名单最高优先(不可被静默/封) · 强唤醒优先于静默 · 熔断(扩展失控自动停手) · 审计 + 可撤销(每次动作一行,带轮转) · 单个扩展抛错只告警并放行,永远不会吞掉消息
🎬 还有
/tools-reload 一下就行(扩展命令需重启)docs/extension-contract.md —— 五套扩展点、能力包全表、入站操控、安全红线、常见坑,一份写全
插件启动时会把这些示例只补不覆盖地铺进你的扩展目录 —— 不用自己从零写。
让她多会几样本事(AI 能自己调用的工具)
盯住子会话把结果回灌过来并转进 QQ
让她在卡片上"有状态"
让她开机就干活(不用任何人触发)
让她管"每条消息的命运"
—— 默认只观察不动手,先看日志确认规则合不合意,再放开
示例是给人看和抄的:会真动手的那个(辅导员)不会自动铺,要自己拷过去 ——
示例不该在你没读过它之前就自己跑起来。
本插件走的是腾讯官方 QQ 机器人开放平台(AppID + AppSecret + 官方 SDK), 不是"模拟 QQ 客户端协议"那条路。两者差别不小,先把话说清楚:
· 本插件(官方 Bot API) · 第三方协议端(onbot / NapCat / Lagrange…) 登录方式 · 填 AppID / AppSecret 即可,不扫码、不登录你的真人 QQ 号 · 扫码登录你的个人 QQ 号,常掉线、要保活 账号安全 · ✅ 完全不碰你的个人号,无封号风险 · ⚠️ 有封号风险:协议模拟违反 QQ 用户协议,腾讯明确禁止 稳定性 · ✅ 官方接口,腾讯自己在维护;变更会提前公告 · ⚠️ 协议一变就挂,得等签名服务(qsign 之类)跟进 资源占用 · ✅ 极低:纯 HTTP + WebSocket,无浏览器、无协议端常驻 · ⚠️ 高:要挂 QQ 客户端 / 协议端,内存几百 MB 起 低配 / 手机部署 · ✅ 能跑:安卓 Termux、树莓派、1 核 1G 的小机器都行(见下方「📱 装到手机上」) · ⚠️ 难:协议端对架构/内存有要求,安卓上尤其折腾 隐私 · ✅ 只与腾讯官方通信,没有中间人 · ⚠️ 要经过第三方协议实现 功能范围 · ⚠️ 受官方开放范围限制(例:踢人接口官方没开放) · ✅ 全功能
关于"功能受限",本插件的态度:官方没开放的,能补就补、不能补就明说 —— 例如踢人:官方接口至今未开放,插件用 🔨 锤子 面板让你用自己的号走群官网接口把这块补上 (扫码一次、之后长期免扫,登录态还会和 AI 共享,详见下文)。
一句话:想要安全、省心、还能塞进手机或小机器,就选官方 Bot 方案;
只有当你非要第三方协议端的"全家桶"、并且愿意承担封号风险时,才另说。
## ⚠️ 必须装到 web profile本插件的前端设置面板(dock 球 + 「设置 → QQ 机器人」整页)只在 `web` profile 里生效。
装到别的 profile 会得到一个 没有设置面板的裸环境 —— dock 球和设置页都不会出现,
表现为"插件装了但看不到任何界面"。
正常使用 `dsh web` 的用户不用关心(dsh web默认就是webprofile,插件页/插件市场装机也落在它上面)。
只有手动指定过 --profile 的场景才需要注意。也不要 add @tencent-connect/dsh-qqbot——那会装上游官方版(无本 fork 增强功能)。✅ 单包自含,装一个就全有:QQ 机器人 + Web 可视化设置面板(host 桥 + 设置页 UI)都打包在
这一个包内——装完它,dsh Web「设置」里就会出现「QQ 机器人 (im-qqbot)」面板(多账号时每个实例各一页),
无需再单独安装 dsh-qqbot-settings。
npx @deepseek-ai/dsh plugin --profile web add @zaofan/dsh-qqbot尚未发布到 npm 前,请用下面的方式二。
⚠️ 从 GitHub 直装(`github:zaofan-make/dsh-qqbot`)需要编译产物 `dist/`,而仓库不提交 `dist`。
包已声明 prepare 脚本,pnpm 安装时会自动编译;