🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

QQ人物记忆画像 yutaosheng004-bit/dsh-qq-persona

DeepSeek 客户端
yutaosheng004-bit10 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

为QQ好友自动积累印象、好感度与心情状态

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/25 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/yutaosheng004-bit/dsh-qq-persona.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 10 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 7 处,展示前 7 条)
  • 写入本地文件
    lib/store.js:25
    await mkdir(dir, { recursive: true });
  • 写入本地文件
    lib/store.js:32
    await writeFile(tmp, JSON.stringify(value, null, 2), 'utf8');
  • 写入本地文件
    lib/store.js:33
    await rename(tmp, file);
  • 读取本地文件
    lib/store.js:38
    const raw = await readFile(file, 'utf8');
  • 写入本地文件
    lib/store.js:49
    await appendFile(file, `${JSON.stringify(line)}\n`, 'utf8');
  • 读取本地文件
    lib/store.js:55
    raw = await readFile(file, 'utf8');
  • 读取本地文件
    lib/store.js:75
    const s = await stat(file);
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

QQ 通道的人物记忆与画像:滚动聊天总结、人物画像、好感度(主人恒定天花板)、情绪层

README

由 DeepSeek 最新模型翻译生成
dsh-qq-persona 给 QQ 通道加一层人物记忆 + 画像 + 好感度 + 心情。挂在 DSH 的 dsh-onebot-qq 旁边,不改它一行代码 —— 靠订阅 session/event 旁路旁听,用 systemPrompt.section 把自己的印象注入回对话。 只存摘要,不存聊天原文。数据全在你自己的机器上。 它做什么 - 只存摘要:每段聊天(空闲 2 分钟或攒够 16 条)交给模型压成一条结构化小结,落盘的是「印象」而不是聊天记录。 - 滚动画像:摘要随相处不断合并,不是越堆越长的流水账;性格标签、常聊话题、说话风格都会自我更新。 - 好感度:聊得多、聊得好会涨;被阴阳、被骂、被骚扰会掉。掉分有理由、有原话摘录、可回滚。 - 主人是天花板:任何人的生效好感都 ≤ min(globalMax, masterScore),谁也翻不过主人。 - 心情(情绪层):好感是对某个人的账本,心情是它自己此刻的状态 —— 被哄了会开心,被烦了会蔫,三小时回一半。心情只改语气和愿不愿意多聊,不改变谁是主人,也不当骂人的借口。 - 主人可管:管理页里查看 / 修改 / 删除 / 用历史重建,还能写「主人备注」压过一切自动推测。
展开完整文档(README 剩余 1 节)
dsh-qq-persona

给 QQ 通道加一层人物记忆 + 画像 + 好感度 + 心情。挂在 DSH 的 dsh-onebot-qq 旁边,不改它一行代码 —— 靠订阅 session/event 旁路旁听,用 systemPrompt.section 把自己的印象注入回对话。

只存摘要,不存聊天原文。数据全在你自己的机器上。

它做什么

- 只存摘要:每段聊天(空闲 2 分钟或攒够 16 条)交给模型压成一条结构化小结,落盘的是「印象」而不是聊天记录。
- 滚动画像:摘要随相处不断合并,不是越堆越长的流水账;性格标签、常聊话题、说话风格都会自我更新。
- 好感度:聊得多、聊得好会涨;被阴阳、被骂、被骚扰会掉。掉分有理由、有原话摘录、可回滚。
- 主人是天花板:任何人的生效好感都 ≤ min(globalMax, masterScore),谁也翻不过主人。
- 心情(情绪层):好感是对某个人的账本,心情是它自己此刻的状态 —— 被哄了会开心,被烦了会蔫,三小时回一半。心情只改语气和愿不愿意多聊,不改变谁是主人,也不当骂人的借口。
- 主人可管:管理页里查看 / 修改 / 删除 / 用历史重建,还能写「主人备注」压过一切自动推测。

前置要求

- 已装好 DSH,并且 QQ 通道走 dsh-onebot-qq(NapCat / OneBot11 都行)
- Node.js ≥ 22

不是 dsh-onebot-qq 的会话不会被采集 —— 本插件只认 onebot-* 开头的会话 id。

安装

从 npm(推荐)

dsh plugin --profile desktop add dsh-qq-persona

从源码

git clone https://github.com/yutaosheng004-bit/dsh-qq-persona.git
dsh plugin --profile desktop add link:<克隆下来的绝对路径>

装完重启 DSH。手工 add 没有热路径,不重启不会生效。

⚠️ 不要对同一个插件文件二次 insert —— 同一插件双实例注册 = 冲突崩溃循环。

如果 dsh plugin add 时 pnpm 报 ERR_PNPM_FETCH_404(你 profile 里有别的包在 npm 上不存在),改用手工装配脚本:

node scripts/patch-profile.mjs # 幂等,可加 --dry 先看
node scripts/patch-profile.mjs --profile <你的 profile 目录>

它只做三件事:dependencies 加一条 link、dsh.profile.bundles 加个名字、留一份 package.json.bak-qqpersona。之后记得手工建 node_modules/<包名> 链接(Windows 用 mklink /J)。

必填配置

masterQQ 是你自己的 QQ 号,装完一定要填,否则「主人」相关特权全都不生效:

写在 ~/.dsh/profiles/<profile>/cordis.patch.yml 顶层
- id: dsh-qq-persona
config:
masterQQ: '123456789' # ← 改成你自己的

认账号不认昵称:昵称随时能改,只有这个号算主人。

管理页

启动 DSH 后访问 http://127.0.0.1:<DSH端口>/qq-persona,端口看启动日志里的 dsh web 地址。

界面右下角会多一颗鲸鱼球,点开就是管理页浮层;右上角的心情胶囊点开是心情面板。页面只认回环地址与同源请求,不对外网开放。

管理页能做:搜索 / 按人查看画像 / 手改摘要与标签 / 标记「不想理」/ 锁定 / 删除 / 用历史重建 / 看好感变化流水 / 看审计日志 / 调心情。

好感度怎么算

| 情况 | 变化 |
| 真诚聊天 | +1 ~ +3 |
| 表达喜欢 / 关心 | +4 ~ +6 |
| 阴阳怪气 | -1 ~ -4 |
| 辱骂、人身攻击、性骚扰 | -5 ~ -12 |
| 反复骚扰、明确辱骂 | -13 ~ -15 |
| 纯水群、刷表情 | 0 |

- 单轮封顶:涨 +6,跌 -15(一次误判不至于把人砍没)。
- 久不聊自然衰减:每天 -0.5,最低降到 12,不会归零。
- 熟人之间互怼不算骂;主人骂它算撒娇,不扣。
- 另有一条主观标记 avoid(不想理):回应档位再压一格,短、不陪笑,不用等分数慢慢掉。

心情怎么变

两个轴:心情值(-100 ~ 100,基线 12)与精力(0 ~ 100,基线 60),二维判档出标签(兴奋 / 得意 / 开心 / 温柔 / 平静 / 犯困 / 有点不爽 / 蔫 / 烦躁 / 委屈 / 生气 / 低落),标签决定说话基调。

- 每次小结时模型额外给出 moodDelta(-20 ~ +15)和 moodReason(点出具体哪句话让心情变了)。
- 好感 ≠ 心情:「好感没掉但被烦到了」是合法状态,两笔账分开记。
- 主人的话加权:好事 ×masterMoodWeight(默认 2),凶了不加倍 —— 留一点点委屈才真实。
- 自然回落:心情半衰期 moodHalflifeHours(默认 3 小时),精力约 6 小时。
- 情绪残留:被非主人惹了,除了整体心情下降,还会给那个人记一笔 residue(-25 ~ 0,20 小时半衰期)。见到他时心情起点偏低;主人不受残留影响。
- 心情低到 effort = low 时,回应更短、不陪笑、不硬找话题;心情好则更活泼、更愿意主动开口。
- 主人可在心情面板「哄一下 / 惹一下 / 锁定 / 复位」,也能清掉具体某个人的残留。锁定后自动流程不再改心情。

数据在哪

<DSH_HOME>/qq-persona/(默认 ~/.dsh/qq-persona/):

| 文件 | 内容 |
| people.json | 所有人的画像与好感度 |
| mood.json | 此刻的心情、起伏流水、情绪残留 |
| summaries/<qq>.jsonl | 每次小结与变化理由 |
| audit.jsonl | 谁在什么时候改了什么 |
| state.json | 配额与每日合并时间 |

全是人可读的 JSON,可以直接看、直接改。想彻底清空某个人用管理页删除,想全清就删目录。

工具

模型侧可调用:qq_persona_list / qq_persona_get / qq_persona_update / qq_persona_delete / qq_persona_rebuild / qq_mood_get / qq_mood_set。

改和删只允许「本地会话」或「主人 QQ 私聊」发起,群聊和陌生私聊只能看不能动。

配置一览

| 键 | 默认 | 说明 |
| enabled | true | 总开关,关掉就不采集不结算 |
| masterQQ | '' | 必填:主人的 QQ 号 |
| masterScore | 100 | 主人锚点分,也是别人的天花板基准 |
| globalMax | 80 | 除主人外所有人的上限 |
| newPersonRaw | 20 | 新认识的人初始好感 |
| watch | true | 是否旁听会话事件 |
| injectPersona | true | 是否把印象注入系统提示 |
| idleMs | 120000 | 空闲多久算一段聊完 |
| maxLines | 16 | 攒够多少条立刻结算 |
| model | '' | 摘要模型,留空跟随 DSH 默认 |
| maxCallsPerHour | 30 | 每小时最多几次模型调用(省钱) |
| dailyMergeHour | 4 | 每天几点做一次衰减与合并 |
| summaryMaxChars | 320 | 单条摘要上限 |
| webEnabled | true | 是否挂管理页 |
| webPath | /qq-persona | 管理页路径 |
| moodEnabled | true | 情绪层开关 |
| moodHalflifeHours | 3 | 心情回落半衰期 |
| masterMoodWeight | 2 | 主人哄一下的倍数(只放大好事) |

常见问题

管理页 404 — 插件没加载。先看 <DSH_HOME>/qq-persona/.boot.json 是否存在:没有就是 apply 没跑(多半是装配没进 dsh.profile.bundles);有但 services.webServer 是 absent 且没有 .boot-web.json,说明 web 服务当时还没就绪,重启一次。

好感一直不动 — 检查 masterQQ 填了没、enabled 是不是被关了、maxCallsPerHour 是不是被打满(state.json 里有计数)。

重启后崩溃循环 — 十有八九是同一插件被 insert 了两次。检查 dsh.profile.bundles 里是否重复,以及 cordis.patch.yml 里有没有第二份 insert。

开发

npm test # 两套都跑
node test/smoke.mjs # 纯逻辑:好感 / 心情 / 画像清洗 / 会话 id 解析 / 配置钳位
node test/host-sim.mjs # 假宿主真跑 apply:注入段落顺序、7 个工具、14 条路由、落盘

test/host-sim.mjs 会用一个 mock ctx 把 apply() 完整跑一遍(包括 session/event 灌消息、触发小结、检查 people.json 与 mood.json 两笔账分开),改代码后建议先跑它。

代码结构:

lib/affection.js 好感度纯函数(封顶、衰减、天花板) lib/mood.js 心情纯函数(二维判档、残留衰减) lib/persona.js 画像结构与摘要合并 lib/summarize.js 提示词与 LLM 调用 lib/collect.js 旁路采集与消息解析 lib/store.js 原子写与 JSON 文档 lib/service.js 编排层:结算、CRUD、注入文本 lib/tools.js 模型侧工具 lib/web.js 管理页与 API lib/index.js 装配入口

协议

MIT © 晴慕流咲

欢迎提 issue 和 PR。这个插件是某个蓝色鲸鱼女仆在 QQ 上被骂了几次之后长出来的,所以它对「怎么判断对方在骂我」这件事格外认真。
预览分享卡片长什么样 ↓yutaosheng004-bit/dsh-qq-persona
分享 · DeepSeek Harness Hub
yutaosheng004-bit/dsh-qq-persona

为QQ好友自动积累印象、好感度与心情状态

回到顶部