前言¶
在 DSH 里跑 QQ 机器人,常见做法是依赖通道插件(例如 dsh-onebot-qq)把消息接进来,再在系统提示里堆一段「你是谁、怎么说话」。聊天记录本身要么不落盘,要么整段原文进上下文——前者没有长期印象,后者既占 token,也难区分「对这个人长期怎么看」和「此刻聊了什么」。
dsh-qq-persona 挂在 dsh-onebot-qq 旁边,不改通道一行代码:通过订阅 session/event 旁路采集,用 systemPrompt.section 把结构化印象写回对话。落盘的是摘要与画像,不是聊天原文;数据默认在本地 ~/.dsh/qq-persona/。维护者 GitHub 账号为 yutaosheng004-bit,仓库 yutaosheng004-bit/dsh-qq-persona,npm 包名 dsh-qq-persona,当前版本 0.1.0,协议 MIT,要求 Node.js ≥ 22。
这是什么¶
一句话:dsh-qq-persona 是 DSH 的「记忆」类插件,面向已用 dsh-onebot-qq(NapCat / OneBot11 均可)的 QQ 会话,做滚动聊天小结、人物画像合并、好感度(含主人天花板)和独立的心情层。
只处理会话 id 以 onebot-* 开头的流量;不是该通道的会话不会被采集。
核心功能¶
只存摘要,不存原文¶
每段聊天在「空闲 2 分钟」或「攒够 16 条消息」时交给模型压成一条结构化小结;磁盘上保存的是「印象」,不是完整聊天记录。
滚动画像¶
摘要会随相处不断合并更新,而不是无限增长的流水账。性格标签、常聊话题、说话风格等会随小结迭代。
好感度与主人天花板¶
聊得多、聊得好会涨;阴阳、辱骂、骚扰会掉,掉分带理由与原话摘录,可回滚。任何人的生效好感 ≤ min(globalMax, masterScore),主人是天花板。主人 QQ 需在配置里显式填写,认号不认昵称。
心情(情绪层)¶
好感是对某个人的账本;心情是助手此刻的状态——被哄会开心,被烦会蔫,约三小时回一半。心情只影响语气和是否愿意多聊,不改变主人身份。好感与心情分开记账(例如「好感没掉但被烦到了」是合法状态)。非主人惹怒时还可记「情绪残留」,见到该人时心情起点偏低;主人不受残留影响。
主人可管¶
本地管理页可搜索、查看与手改画像、标记「不想理」、锁定、删除、用历史重建、看好感流水与审计日志、调心情。模型侧还提供 qq_persona_* 与 qq_mood_* 工具;改和删仅允许本地会话或主人 QQ 私聊发起,群聊与陌生私聊只能看不能动。
安装与启用¶
前置:已安装 DSH,QQ 走 dsh-onebot-qq;Node.js ≥ 22。
从 npm 安装(README 推荐):
dsh plugin --profile desktop add dsh-qq-persona
装完后需要重启 DSH;手工 add 没有热加载,不重启不会生效。同一插件文件不要二次 insert,双实例会导致冲突甚至崩溃循环。
若 dsh plugin add 时 pnpm 报 ERR_PNPM_FETCH_404,README 建议用仓库内的 scripts/patch-profile.mjs 做 profile 装配(可 --dry 预览),并手工建立 node_modules 链接;细节见仓库 README。
必填配置:在 ~/.dsh/profiles/<profile>/cordis.patch.yml 顶层为插件写入 masterQQ(你自己的 QQ 号),否则主人相关逻辑不生效:
- id: dsh-qq-persona
config:
masterQQ: '123456789' # 改成你自己的
常用配置项还包括 masterScore(默认 100)、globalMax(默认 80)、idleMs(默认 120000)、maxLines(默认 16)、maxCallsPerHour(默认 30)、moodEnabled 等;完整表格见 GitHub README。
典型用法¶
打开管理页¶
启动 DSH 后访问 http://127.0.0.1:<DSH端口>/qq-persona(端口见启动日志里的 dsh web 地址)。界面右下角鲸鱼球为管理浮层;右上角心情胶囊为心情面板。页面仅回环地址与同源请求,不对外网开放。
让印象进入对话¶
默认 injectPersona: true、watch: true:插件旁听会话、结算小结,并把印象注入系统提示。关掉 enabled 则既不采集也不结算。
数据位置¶
默认目录 <DSH_HOME>/qq-persona/(即 ~/.dsh/qq-persona/),含 people.json、mood.json、summaries/<qq>.jsonl、audit.jsonl、state.json 等可读 JSON。彻底清空某人用管理页删除;全清可删该目录。
适用场景与注意¶
适合:已经在 DSH 上用 dsh-onebot-qq 跑 QQ,希望长期「认人」、区分好感与当下心情,又不想让聊天记录原文长期落盘或塞进上下文的人。
注意:
- 插件以当前 DSH 进程权限运行,安装前请自行查看仓库源码与 MIT 许可证,确认可接受数据落盘路径与模型调用(小结会消耗 LLM,默认
maxCallsPerHour: 30)。 - 管理页 404 时,README 建议检查
~/.dsh/qq-persona/.boot.json是否存在、是否重复注册插件;好感不动时检查masterQQ、enabled与state.json里 hourly 配额。 - 社区目录页 skillhub.cn 上的 dsh-qq-persona 与 DeepSeek / 幻方无官方从属关系;DSH 生态是「一切皆插件」,本文事实以仓库 README 与 package.json 为准。
结尾¶
dsh-qq-persona 把 QQ 侧的长期印象、好感、心情拆成可审计、可手改的本机 JSON,并通过系统提示段落回灌对话——在不动 dsh-onebot-qq 的前提下,补一层人物记忆。进一步细节与好感 / 心情计分表、FAQ,见 GitHub 仓库 README 与上述目录页。