一键切换机器人性格,记忆会话声音各自独立
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🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Dnsthandsome/dsh-qq-persona
一键切换机器人性格,记忆会话声音各自独立
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,792已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,170已汉化DeepSeek 客户端
71
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,041已汉化DSH
70.7
这是你的仓库?认领条目