dsh-qqbot-muu:给 QQ 助手补全记忆、人格与运营流程

前言

在 DSH 生态里,@zaofan/dsh-qqbot 是一个功能完备的 QQ 机器人框架,但要把它养成一个能长期陪伴、记得住人、还能自己产出内容的「助手」,通常需要自行拼接多个插件与补丁。这中间涉及记忆分层、人格注入、视频创作链路、B 站运营流程等复杂环节,很容易出现功能割裂或维护成本高的问题。

dsh-qqbot-muu 作为官方扩展包与补丁集,把这些能力整合成一条本地可运行的流水线:记忆、说话、出片、运营四件事串起来,无需托管服务或上传数据。

这是什么

dsh-qqbot-muu 是一个运行在本地机器上的 QQ 助手能力包,运行在 DSH 桌面端插件环境下。它不训练模型、不上传数据,而是把「记忆、语气、出片、运营」用本地 SQLite + 本地小模型 + 云端算力拼成一条流水线。

核心价值在于:把分散的社区插件补成一个能长期养的 QQ 助手——记得住人、分得清群、能自己写口播视频、有一个不会长歪的 2D 鲸鱼娘,还有一个主人说了算的 B 站运营流程。

核心功能

记忆与认知

两层记忆:个人层跨群统一记忆(印象卡、熟识度),群层物理隔离(台账、记忆、心情按 scope 分组),避免一个群的坏情绪带坏另一个群。

统一记忆库:单个 memory.db(node:sqlite + WAL + FTS5),chat / mem 全部带 scope。

类海马体检索:五路召回融合——向量余弦 + 倒排关键词(二元组 + 单字)+ 实体锚定 + 图谱随机游走(PPR)+ 回溯意图,再经模式分离(MMR 去重)与模式补全(时间邻近扩散 + 归纳补全)。PPR 能顺着「甲→乙→丙」捞到字面完全没命中的旧事。

时序失效:三元组带 valid_from / valid_to / status。单值关系出现新值时,旧事实标记 superseded 而不是删除——既能按「现在」回答,也能追溯「她什么时候改的口」。

回放巩固:按显著度挑种子 → 余弦聚类 → 抽成「归纳片段」写回,原文仍可溯源(mem_gist / mem_link)。

人格护栏:信念层带步长上限与锚点限幅——少数几次对话改不动对一个人的整体判断;driftReport 给出 0~100 稳定度。

群分级:「特别关心群 / 普通群」两级。普通群只看当前信息,不召回、不沉淀、不画像——省 token 也省心。

历史记录导入:支持 QQ 导出的 .txt 与 JSON。入口即脱敏:手机号、身份证、邮箱、银行卡、QQ 号在入库前就打码;再按信息量筛掉「在吗 / 哈哈 / [图片]」,只留像事实、态度、承诺的句子。

指定对话导入:--peer 从「导出全部消息记录」里只裁出和某一个人的对话;--self-uin 把「我」和「对方」分开。认得自己时第三方发言一律剔除;认不出自己且文件里多人时只留对方的话并提示补号。

完整记录归档:--archive 把整段对话原样写进 chat 台账:不筛寒暄、长消息不砍到 500 字、重复导入幂等。归档行 src='import',不吃 60 天保留窗。

人物归一:QQ 号优先做主键、昵称只作别名。同一人换昵称自动并到一份记忆;同昵称不同号不合并——宁可认不出,也不串号。记忆按 person:<id> 隔离。

轨迹与画像:每人一条 impression:出现次数、平均字数、活跃时段、高频词、提问率、语气倾向——统计口径,不依赖大模型也能稳定。

双方关系:除了「TA 是什么人」,还有一条 relation:「我们怎么相处」——轮次、会话段数、谁更常先开口、对方平均多久回、共同话题。

历史印象卡:切片(60 条/片、重叠 8)→ 每片摘要 → 汇总成高维卡,跑在本地模型上。私聊回合整理成功后会自动重建(进程内 12h/人 + perDayMs 双限流),也可 --digest 或面板手动触发。

旧识注入:导入的画像会以 [旧识] 块回到她眼前,但只给当事人、只在看得起的关系里(特别关心群 / 私聊)。普通群一个字都不带;块里只有统计结论,不含此人说过的原话。

降级召回:向量模型没装或离线时,不拿余弦当门槛——准入改看证据通道,无关提问直接返回空。召回结果带 vecMode。

中文单字通道:倒排表除了二元组还收单字(低权重)。二元组要求措辞完全一致,单字通道专治复述型问句。

回溯意图:「你还记得你说过要教我什么」「你答应过我什么」要的不是话题,是「她自己说过的话」——单独识别句式,把最近的 say / promise 提上来。

本地模型补图:隐式关系(「我上周搬去南山了」)正则抽不出来,交给本机小模型抽三元组,只在 mem_edge 加边、正文不动;模型没开就整批跳过。

数据主权:exportScope 导出全量(不含向量)、purgeScope 彻底删除(含索引/画像/图谱/JSONL)、_audit.jsonl 记录谁在何时导出或删了哪个 scope。

库自愈与体检:schema 带版本号,每次拿句柄都校验;dbHealth 看缺表/倒排覆盖/碎片率/完整性;maintainDb 做检查点 + 备份 + 补索引,每日维护窗口自动备份。

说话与分发

人格注入:qqbot-mod/persona/ 是唯一事实源,世界书按 scope 叠加。

本地代答:Ollama 小模型快速回;单脑仲裁避免「本地答一半、云端答一半」的自相矛盾。

批量门槛:一次勾选多个会话设置模式与最低分,不用一个个点。

TTS:发件箱统一出站。分段合成 + 句间呼吸(逗号 88ms / 句号 170ms / 省略号 280ms 分级停顿),再走 ffmpeg 人声后处理:高通去闷、5.2kHz 削齿音、轻压缩贴耳、−16 LUFS 归一。全篇语速语调平稳,不逐句抖。

表情包:本地视觉模型打标 + 准入分 + 间隔 / 每小时上限 / 最近去重。

浮窗 UI:设计令牌化的浅/深色主题、分段式 tab、记忆页卡片化。

浮窗尺寸:右下角有拖拽把手,拖到多大就记住多大(localStorage['qqs-dock-size-v1']);切换 tab 不再跳大小,聊天列表吃满剩余高度;双击把手/头部标题恢复默认尺寸。窗口顶边留 56px 安全区。

聊天记录来源:会话快照没了(重启、换会话)也不会白屏:按 {dataRoot}/.qqbot/msg-history/<group_|c2c_><openid>/YYYY-MM-DD.jsonl 的本地消息台账补齐最近 N 条。

视频创作

文案:脚本模型写口播稿,按句切分并估算时长(4.4 字/秒含标点停顿)。

分镜:shot-planner 按节拍(hook / point / turn / proof / cta)分配文字屏与真图屏,真图只给开场与例证;相邻屏 Jaccard ≥ 0.55 判重降级为文字。

出图:每屏最多 3 次变体;image_gate 用拉普拉斯方差、Hasler-Süsstrunk 色彩度、灰度熵、4bit 色数、dHash 查重打分,不过关换角度重画,全废才退回文字动效。

文字动效:逐帧渲染 11 种风格(打字机 / 逐字弹入 / 扫读高亮 / RGB 分离抖动…),配音时长决定帧数,画面与声音天然对齐。

字形叙事:借鉴《文字游戏》——以字代图(汉字按网格堆成鲸鱼/山/浪的轮廓,Zpix 像素字)、重新象形(拆字后部件飞入合拢)、留白呼吸(黑屏只留 8 个字)。一单最多 2 屏。

角色:主流 2D 鲸鱼娘形象(深蓝长发 + 白蕾丝发箍 + 蓝白水手女仆裙 + 鲸尾,DeepSeek 蓝 #4D6BFE),本地 SD(Counterfeit-V3)出 512×768 全身立绘,img2img 派生 idle / talk / wave / happy / point 五姿态保持同一人;char-key.py 从四边漫水抠底并对齐 720×980;char-cutout.py 用预乘 alpha 仿射做呼吸/摇摆/浮动,并只让嘴开合。无姿态库时退回程序化绘制(whale_char.py 纯矢量双形态)。

音效:空库用 ffmpeg 现场合成 12 个语义音效,每 cue 带淡入淡出 + 限幅;按分镜计划挑音,同一单内不重复。

成片:Ken Burns 推拉 + 按节拍取转场时长,导出 video.mp4 / cover.jpg / sub.srt / 剪映素材包。

运营

B 站登录:/bili login 扫码,Cookie 只写本机 bili-cookie.json。

分享卡片:视频以单条卡片分享(标题 + 封面 + UP + 播放/点赞 + 链接),记录可查。

运营流程:写脚本 → 出片 → 草稿;主人一句「通过」自动投稿;还能改名、写评论/回复、拉数据。

权限口径:所有写操作只接受主人私聊,群里发直接拒绝并提示私聊。

安装与启用

从插件市场 / GitHub 装壳(让 DSH 能识别并加载本包):

dsh plugin add github:wuwo1979/dsh-qqbot-muu#main

装扩展本体(把能力文件铺进 bot 数据根):

node install.mjs --data-root "D:\你的bot数据目录"
ollama pull qwen2.5vl:3b        # 表情打标 / 识图
ollama pull nomic-embed-text    # 向量检索(可选,缺了自动退回 lexical)

打客户端补丁(可选,按需):

node qqbot-mod/patches/add-memory-panel.mjs --apply   # 记忆页
node qqbot-mod/patches/ui-theme-v2.mjs      --apply   # 设计令牌 / 深色 / 记忆页卡片化
node qqbot-mod/patches/merge-group-tabs.mjs --apply   # 群组管理子标签
node qqbot-mod/patches/unify-fam-ui.mjs     --apply   # 熟识度统一入口

每个补丁都支持 --check(只看会改什么)、--apply、--revert,并且是幂等的。客户端补丁改完在 DSH 里按 Ctrl+R 重载;服务端补丁重启桌面端。

升级后补丁被冲掉?用 overlay 一键装回(推荐):

node qqbot-mod/patches/live-overlay/install.mjs --check   # 看完再装
node qqbot-mod/patches/live-overlay/install.mjs --apply   # 装进当前 live generation
node qqbot-mod/patches/live-overlay/capture.mjs           # 定制有更新后,把 live 回写成新的 ours/

装完 / 升级完都要重启宿主(/bot-restart 或重启 DSH 桌面端),再在页面上 Ctrl+F5;只刷新页面的话,服务端路由还是旧的。

配置速查

装完要改的四个文件(安装脚本会自动替换标记位):

  • dshqqbot/.qqbot-extensions/memory-config.json → dataRoot
  • dshqqbot/.qqbot-extensions/local-llm-config.json → 同上
  • dshqqbot/.qqbot-extensions/draw-config.json → 只有用本地 SD 绘图才需要改
  • dshqqbot/.qqbot-extensions/bili-ops-config.json → B 站运营

群分级在浮窗「🧠 记忆」页 →「🏷 群等级」设置;也可直接改 data/group-tiers.json。

视频链路可调参数(部分):

  • video.style:auto / text / image
  • video.planner:true 分镜编排,false 退回「一屏一图 + 固定淡入」
  • video.maxImageShots:一单最多几张真图(默认 2)
  • video.imageAttempts:每屏最多重画几次(默认 3)
  • video.imageGate:出图质检开关(默认 true)
  • video.imageGoodEnough:质检达标分(默认 0.84)
  • video.character:文字屏是否带小蓝(默认 true)
  • video.characterSize:小蓝落版尺寸(px,默认 300)
  • video.shotMinSec / shotMaxSec:单屏时长上下限(默认 2.4 / 5.2)

典型用法

历史记录导入与脱敏

node install.mjs --data-root "D:\bot-data"

导入并脱敏历史记录(假设已导出 QQ 消息):

node install.mjs --data-root "D:\bot-data" --archive --peer "对方QQ号"

这会从导出的 .txt 或 JSON 里裁出与某一个人的对话,入库前自动打码手机号、身份证、邮箱、银行卡、QQ 号,并筛掉「在吗 / 哈哈 / [图片]」等非事实内容。

视频创作流程

在聊天中发送「帮我生成一条关于 X 的口播视频」,机器人会:

  1. 脚本模型写口播稿,按句切分并估算时长
  2. shot-planner 按节拍分配文字屏与真图屏,真图只给开场与例证
  3. 本地 SD 生成角色立绘与变体,image_gate 做质检
  4. 逐帧渲染 11 种文字动效风格,配音时长决定帧数
  5. ffmpeg 合成语义音效与背景音乐,导出 video.mp4 / cover.jpg / sub.srt

主人收到草稿后,一句「通过」自动触发 B 站投稿流程。

B 站运营

先扫码登录:

/bili login

然后通过脚本写脚本 → 出片 → 草稿;主人一句「通过」自动投稿;还能改名、写评论/回复、拉数据。所有写操作只接受主人私聊,群里发直接拒绝并提示私聊。

适用场景与注意

适合需要长期陪伴、能记住群内成员、并能自主产出内容的 QQ 助手场景:个人助理、社群运营助手、内容创作者辅助工具等。

注意:插件以当前 dsh 进程权限运行,安装前应检查源码与许可证;所有数据(包括 Cookie)仅存储在本地,不上传云端。

短结尾

dsh-qqbot-muu 把记忆分层、人格注入、视频创作、B 站运营整合成一条本地可运行的流水线,适合想长期养一个「能记人、能出片、能运营」的 QQ 助手。

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

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

小夜