DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

wuwo1979 /

wuwo1979/dsh-qqbot-muu

Verified

DSH QQ bot: memory, persona, B站运营

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

dsh-qqbot-muu v0.1

给 DSH(桌面端 @zaofan/dsh-qqbot 插件)用的一套扩展 + 补丁。 同时提供一个最小但真实的 DSH 插件壳(index.js + cordis.patch.yml + dsh.bundle.patch), 让插件市场 / dsh plugin add 能识别并加载它;扩展的安装仍由 install.mjs 完成。 本仓库不包含任何账号、Cookie、聊天记录或记忆数据库。

  • 插件本体与最初来源:@zaofan/dsh-qqbot(社区插件,本仓库所有补丁都基于它的客户端/服务端结构)
  • 本仓库做的事情:在插件之上补「记忆统一 + 按群隔离 + 省 token + 表情包 + B 站分享 + 浮窗重排」这些能力
  • 版本:0.1.0(第一个可安装版本)
  • 目标仓库:https://github.com/wuwo1979/dsh-qqbot-muu

1. 能力概览

模块 能力
两层记忆 个人层跨群统一(印象卡、熟识度:同一个 QQ 在哪都认识);群层按 scope 隔离(聊天台账、记忆、心情:A 群的恶言恶语不带坏 B 群)
记忆库 统一 SQLite(memory.db),chat / mem 全部带 scope;私聊、每个群各自一份记忆
群分级 「特别关心群 / 普通群」两级。特别关心群:完整召回 + 沉淀 + 个人卡;普通群只看信息本身(不召回、不沉淀、不画像,仅一行「名字 · 等级」认人),省 token
历史印象卡 全库历史消息 → 本地模型切片 → 汇总成跨群统一的个人卡(只吸收私聊 + 特别关心群的对话);每天自动重建,浮窗可手动重建
熟识度 persona.fam:<senderId> 唯一事实源(个人层),自动迁移旧版 bond 数据,单会话设置与记忆页同源
批量回复门槛 一次勾选多个会话,批量写入 localModel.overrides(模式 + 最低分),不用一个个点
表情包 本地 qwen2.5vl:3b 视觉打标;主动发送带准入分、间隔、每小时上限、最近去重;发送失败明确告知
B 站 扫码 Cookie(只存本机);视频以单条卡片分享(标题+封面+UP+播放/点赞+链接),分享记录留档可查
B 站运营 AI 自己写脚本 → 出分镜 → 配音 → 字幕 → 拼 mp4 → 草稿;主人一句「通过」自动投稿;还能改名、写评论/回复、拉数据留档
浮窗 UI 记忆页折叠分组、群等级即时切换、批量门槛;群组管理把锤子/群发/入群审批收进子标签
工具路由 绘图/视频/表格/文档走云端算力;网页抓取/内容提取强制云端;本地模型只做记忆、情绪、轻量代答
语音 TTS 发件箱、直发、丝滑度处理,出站统一走 outbox

2. 目录

dshqqbot/.qqbot-extensions/   扩展本体(inbound / outbound / hooks / tools / lib / 配置)
qqbot-mod/patches/            客户端与服务端补丁(.mjs,支持 --check/--apply/--revert/--update)
qqbot-mod/scripts/            自检脚本(node 直接跑)与本地视觉打标 CLI
data/harness/                 从 AppData 迁出的 DSH 数据(models / sessions / attachments)
scripts/migrate-appdata.ps1   把 AppData 里的 sessions/attachments 迁到 F 盘并留 junction
install.mjs                   一键把扩展装进任意 bot 数据根

运行记录、迁移细节、聊天/记忆样例等文档只保留在本地,不随仓库发布(.gitignore 已忽略 /docs/)。 本仓库不包含 QQ 聊天记录、B 站评论审核内容、memory.db、Cookie、Token 或任何 openid。

3. 安装

前置:

  • Node.js ≥ 22.5(用到内置 node:sqlite)
  • Ollama(本地模型):qwen2.5vl:3b(表情打标 / 识图)、nomic-embed-text(向量检索,可选)
  • DSH 桌面端,已安装 @zaofan/dsh-qqbot 插件
# 1) 把扩展装进你的 bot 数据根(该目录下应已有 .qqbot / 记忆库等)
node install.mjs --data-root "D:\你的bot数据目录"

# 2) 拉本地模型
ollama pull qwen2.5vl:3b
ollama pull nomic-embed-text

# 3) 在 QQ 里发 /bot-restart,或重启 DSH 桌面端

补丁(可选,按需):

node qqbot-mod/patches/add-memory-panel.mjs --apply     # 记忆页
node qqbot-mod/patches/merge-group-tabs.mjs --apply     # 群组管理子标签
node qqbot-mod/patches/unify-fam-ui.mjs --apply         # 熟识度统一入口

客户端补丁改完在 DSH 里按 Ctrl+R 重载;服务端补丁重启桌面端。插件升级后补丁可能需要重打(脚本带 --check)。

装完要改的配置

  • dshqqbot/.qqbot-extensions/memory-config.json:dataRoot 改成你的 bot 数据根(install.mjs 会自动替换标记位)
  • dshqqbot/.qqbot-extensions/local-llm-config.json:同上
  • dshqqbot/.qqbot-extensions/draw-config.json:只有用本地 SD 绘图才需要改(python/sd 路径),不用绘图可以忽略
  • B 站:首次用 /bili login 扫码,Cookie 只写本机 bili-cookie.json

4. 群分级与两层记忆怎么用

两层记忆

  • 个人层(scope = __global__):印象卡 card:<senderId>、熟识度 fam:<senderId>。同一个 QQ 用户跨群共用 —— 换到哪个群都认识,不会「不认人」。
  • 群层(真实 scope):聊天台账 chat、长期记忆 mem、心情 __mood 各自独立。A 群的恶言恶语只影响 A 群的语气,不会带坏 B 群。

历史印象卡只吸收「私聊 + 特别关心群」里这个人自己说的话(群里不含小蓝的回复,避免 A 群的小蓝脾气被写进这个人的性格)。

群分级

  • 浮窗「🧠 记忆」页 →「🏷 群等级」:点「设为关心 / 降为普通」,即时生效
  • 也可以直接改 dshqqbot/.qqbot-extensions/data/group-tiers.json:
{ "defaultTier": "normal", "priority": ["群openid"], "normal": [], "profileInNormal": false, "digestNormal": false }

各等级的具体行为可在 memory-config.json 的 tierPolicy 覆盖:

项 特别关心群 / 私聊 普通群(默认)
个人印象卡 完整卡 + 熟识度 只给一行「名字 · 等级」(不认识的陌生人一个字都不多花)
长期记忆召回 开 关(只看当前信息本身)
长期记忆沉淀 开 关
历史印象汇总 参与 不参与
记忆分身读写 事实 + 个人卡 只记心情/关系,读最近 5 条

普通群不写个人卡、不沉淀长期记忆;跨群记忆物理隔离。

5. B 站运营

口径:AI 自己写、主人只审、审核完自动上传。写操作(plan/approve/publish/rename/comment)只接受主人私聊;群里发会被拒绝并提示私聊。

配置:dshqqbot/.qqbot-extensions/bili-ops-config.json

项 默认 说明
publish.mode web web = Cookie 网页投稿自动上传;manual = 只交成片包
publish.requireApproval true 必须先经主人审核
publish.autoPublish false 改 true 才是免审直发
video.panels / secondsPer 5 / 5 分镜数、每屏配音兜底时长
media.provider cloud B 站成片默认云端出图(Pollinations,1024×576,8 秒间隔);失败直接报错,不偷偷用本地(media.fallbackLocal=true 才回退)
limits.dailyVideos 1 每日最多投稿数(防乱发)
schedule.enabled false 定时只产出草稿,绝不自动发布

plan 生成草稿后会把封面 + 首屏图发到当前私聊给主人看;确认后再回「通过 <jobId>」。

DeepSeek Key 不入库:优先读环境变量 DEEPSEEK_API_KEY,其次 {dataRoot}/bili-ops-secret.json(已被 .gitignore 排除)。请求体只带选题、风格、分镜数、时长 —— 不含聊天记录、记忆库、Cookie、账号信息。

工具动作(bili_ops):

action 用途
plan topic=... AI 写脚本 → 出图 → 配音 → 字幕 → 拼 mp4 → 封面 → 草稿(状态 awaiting_review)
approve jobId=... 审核通过 → 自动投稿(失败自动退回成片包并给原因)
reject jobId=... 废弃草稿
publish jobId=... mode=manual 只要本地产物(成片 + 分镜 + 配音 + .srt + 封面)
comment bvid=... [generate] AI 写评论草稿,不发送
comment bvid=... approve [draftId] 审核后自动发评论
engage bvid=... 拉播放/点赞/币 + 生成建议回复(不自动发)
rename uname=... 改昵称(B 站限制 6 个月一次)
list / show / records / status 任务、记录、登录与额度状态

产物在 {dataRoot}/.qqbot/bili-ops/jobs/<jobId>/:video.mp4、cover.jpg、sub.srt、panels/、audio/、meta.json、README.txt。jianying.mode 改 draft 时额外导出剪映草稿工程(best-effort,版本不兼容时用素材包)。

工具调用(扩展工具 schema)

bili_ops / draw / storyboard 都使用宿主的扁平 value-schema:每个字段直接写 { type, description, enum?, required? },不要包成 JSON-Schema 的 { type:'object', properties:{...} }。包成后者会被宿主拒绝并只打一条 warn:

[channel-tools] 扩展工具注册失败 bili_ops: unsupported JSON schema:
parameters.type must be a value schema object

工具因此“消失”,模型就会绕过工具手写脚本。改完扩展后 /tools-reload(或重启 + /bot-restart)才会重新注册。

6. 隐私

仓库内不包含:

  • 任何真实 openid / 群号 / 聊天记录
  • B 站 Cookie / 登录信息 / DeepSeek Key(bili-ops-secret.json)
  • memory.db、bili-shares.jsonl、B 站运营产物(成片/分镜/配音)、表情包图库与索引
  • 本地模型缓存、日志、导出产物

install.mjs 只复制扩展里的代码与默认配置,不复制 data/、.state/、*.bak。

7. 来源与致谢

  • 基础插件:@zaofan/dsh-qqbot(客户端 client/qqbot-settings.js、dist/features/*)
  • 本仓库:在上述插件之上做的扩展与补丁,思路与实现来自实际群聊运维中的问题复盘;与插件作者无隶属关系
  • License:MIT
—/ 5

No ratings yet

Verified DSH bundle

Commit b576391c7060

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