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

QQ人格切换 Dnsthandsome/dsh-qq-persona

DeepSeek Harness
Dnsthandsome4 天前有提交已提供中文文档扫描:含敏感能力

一键切换机器人性格,记忆会话声音各自独立

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Dnsthandsome/dsh-qq-persona
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
  • 读取本地文件
    index.js:205
    if (existsSync(文件)) return JSON.parse(readFileSync(文件, 'utf8').replace(/^ FEFF/, ''));
  • 读取本地文件
    index.js:205
    if (existsSync(文件)) return JSON.parse(readFileSync(文件, 'utf8').replace(/^ FEFF/, ''));
  • 写入本地文件
    index.js:213
    mkdirSync(dirname(文件), { recursive: true });
  • 写入本地文件
    index.js:214
    writeFileSync(文件, JSON.stringify(数据, null, 2), 'utf8');
  • 读取本地文件
    index.js:228
    if (existsSync(文件)) return 读Json(文件, 默认预设);
  • 发起网络请求
    index.js:258
    const r = await fetch(`${base}/api/qq-moony/config`, {
  • 发起网络请求
    client.js:22
    fetch('/api/qq-persona/list')
  • 发起网络请求
    client.js:39
    const r = await fetch('/api/qq-persona/apply', {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-qq-persona 给 DeepSeek Harness 的 QQ 机器人(dsh-qq-moony)配的人格切换插件。 一句话:一个性格 = 一套独立的记忆 + 独立会话 + 独立声音。在设置页点一下,机器人整个换人。 它解决什么问题 给 QQ 机器人写好人设之后,想换个人格通常只能去改配置文件、手动改 cwd、手动换音色,改完还得重启。而且换完之后,新人格会看到上一个人格的全部聊天记录和记忆,串味。 这个插件把「人格」做成一个可切换的预设包,每个预设自带: | 维度 | 隔离方式 | | 性格 | 拼进 moony 的 persona(热更新,不重启) | | 记忆 | 独立 cwd → 独立的 memory/ 目录 | | 会话 | 独立 sessionId → 独立的聊天历史 | | 声音 | 独立的 edge-tts 音色 / 音调 / 语速 | 切换时一次 POST 全改完,不需要重启任何东西。
展开完整文档(README 剩余 1 节)
dsh-qq-persona

给 DeepSeek Harness 的 QQ 机器人(dsh-qq-moony)配的人格切换插件。

一句话:一个性格 = 一套独立的记忆 + 独立会话 + 独立声音。在设置页点一下,机器人整个换人。

它解决什么问题

给 QQ 机器人写好人设之后,想换个人格通常只能去改配置文件、手动改 cwd、手动换音色,改完还得重启。而且换完之后,新人格会看到上一个人格的全部聊天记录和记忆,串味。

这个插件把「人格」做成一个可切换的预设包,每个预设自带:

| 维度 | 隔离方式 |
| 性格 | 拼进 moony 的 persona(热更新,不重启) |
| 记忆 | 独立 cwd → 独立的 memory/ 目录 |
| 会话 | 独立 sessionId → 独立的聊天历史 |
| 声音 | 独立的 edge-tts 音色 / 音调 / 语速 |

切换时一次 POST 全改完,不需要重启任何东西。

功能

- 设置页可视化:设置 → 「人物性格」,7 张卡片,当前在用的会高亮打勾
- 点一下切换:改 persona + cwd + sessionId + 音色,四样一起换
- 预设库可编辑:<DSH_HOME>/qq-persona/presets.json,随便加/删/改
- 身份可调:改名字、年龄,保存后立即重新推送
- 不碰 moony 本体:只通过 moony 的 /api/qq-moony/config 接口热改配置

默认的 7 个预设

| id | 名字 | 年龄 | 音色 |
| heihei | 大鲸鱼 | 22 | 晓伊 +18Hz +3% |
| wenrou | 阿暖 | 26 | 晓晓 +10Hz +3% |
| gaoleng | 洛凌 | 28 | 晓妮 +5Hz |
| yuanqi | 糖糖 | 19 | 晓伊 +22Hz +10% |
| xianhui | 阿凝 | 27 | 晓晓 +5Hz -3% |
| aojiao | 小野 | 21 | 晓妮 +15Hz +5% |
| baobei | 小宝贝 | 18 | 晓伊 +28Hz +10% |

前六个是「他的女朋友」设定,最后一个 baobei 是「女儿」,称呼写死叫「爸爸」。这些都可以在 presets.json 里改。

安装

尚未发布到 npm,直接从 GitHub 装。

dsh plugin --profile desktop add github:Dnsthandsome/dsh-qq-persona

或者本地打包:

git clone https://github.com/Dnsthandsome/dsh-qq-persona.git
cd dsh-qq-persona
pnpm pack --pack-destination dist-pkgs
dsh plugin --profile desktop add dist-pkgs/dsh-qq-persona-0.2.0.tgz

前置条件

1. 装了 dsh-qq-moony(机器人本体)
2. moony 的 /config 白名单需要扩展支持 cwd / sessionId / contextFiles

moony 原版的 /api/qq-moony/config 只认白名单里的字段,不包含 cwd 和 sessionId。要让记忆/会话隔离生效,需要往 dsh-qq-moony/index.js 的 POST /config 段加一小段补丁:

// 人格体系扩展
if (typeof 想要.cwd === 'string' && 想要.cwd.trim()) patch.cwd = 想要.cwd.trim();
if (typeof 想要.sessionId === 'string' && 想要.sessionId.trim()) patch.sessionId = 想要.sessionId.trim();
if (Array.isArray(想要.contextFiles)) patch.contextFiles = 想要.contextFiles.map(String).slice(0, 10);
if (typeof 想要.maxContextChars === 'number') {
patch.maxContextChars = Math.min(5000, Math.max(200, Math.round(想要.maxContextChars)));
}
if (typeof 想要.autoContext === 'boolean') patch.autoContext = 想要.autoContext;

补丁靠 moony 自己的 Object.assign(c, patch) 热生效,不用重启。

改完 moony 代码要在 profile 的 cordis.patch.yml 里把 qq-moony 的 enabled 翻 true → false → true 强制重载。

3. 可选:装了 dsh-qq-media 才有音色切换的实际效果(它读 <DSH_HOME>/qq-media/config.json)

配置

<DSH_HOME>/qq-persona/config.json:

{
"active": "heihei",
"name": "大鲸鱼", "age": 22 }

<DSH_HOME>/qq-persona/presets.json 是一个预设数组,每个元素:

{
"id": "heihei",
"name": "腹黑甜妹", "self": "大鲸鱼", "age": 22, "desc": "甜里带坏,偶尔怼人偶尔撩人",
"voice": { "edgeVoice": "zh-CN-XiaoyiNeural", "edgePitch": "+18Hz", "edgeRate": "+3%" },
"character": "【性格】\n腹黑的甜美少女……"
}

- self / age → 拼进身份段
- character → 拼进【性格】段
- callWord(可选)→ 覆盖默认的【称呼】节;不填就用默认的爱称规则
- voice → 切换时写进 qq-media 的配置

角色根目录可以用环境变量 BIGWHALE_ROOT 覆盖,默认 D:\bigWhale\roles。

HTTP 接口

前缀 /api/qq-persona:

| 方法 | 路径 | 说明 |
| GET | /list | 所有预设 + 当前 active + 版本 |
| GET | /template | 人设骨架模板 + 角色根 |
| POST | /apply | 切换 {id} |
| POST | /settings | 改当前预设的 {name, age} 并重新推送 |

apply 返回:

{
"ok": true,
"id": "heihei",
"name": "腹黑甜妹", "self": "大鲸鱼", "personaLength": 1745, "cwd": "D:\\bigWhale\\roles\\heihei", "session": "qq-moony-heihei" }

注意事项

- persona 有 2000 字上限(moony 会 slice(0, 2000)),插件在合成后会校验,超过 1985 字直接报错,不会静默截断
- 人设骨架是共用的,只有【性格】段按预设变;这样换人格不会把「说话方式」「称呼规则」「记忆管理章程」这些丢
- 切换后旧会话不会消失,只是不再往里写;想回上一个性格,切回去就行,历史还在

配套

- dsh-qq-moony —— 机器人本体
- dsh-qq-media —— 语音/图片/视频/文件出口(音色切换靠它)
- dsh-qq-memory —— 记忆管理面板(按 cwd 自动跟随当前人格)

License

MIT
预览分享卡片长什么样 ↓Dnsthandsome/dsh-qq-persona
分享 · DeepSeek Harness Hub
Dnsthandsome/dsh-qq-persona

一键切换机器人性格,记忆会话声音各自独立

这是你的仓库?认领条目

回到顶部