dsh-persona-modes —— 人格模式
给 DSH 的回复换一种语气,但不改变事实、代码与工程纪律。
- 切换位置:设置 → 人格模式
- 快速切换:在输入框执行
/persona;/persona catgirl直接切到猫娘,/persona off关闭 - 生效时机:下一轮对话(当前正在生成的回复不变)
- 提示词预算:同一时刻只注入当前这一条;内置模式低/中/高三档分别约 68–116 / 89–137 / 102–150 字(含标题与统一边界);自定义人格的长度取决于用户提示词(上限 4000 字);关闭时最新提示词里 0 字
- 上下文机制:具体人格放在运行时上下文(
systemPrompt.context),系统提示词只保留一条约 50 字的稳定策略;切换模式不会重写整份系统提示词
内置模式
| id | 模式 | 一句话 | 实际注入字数 |
|---|---|---|---|
off |
默认 | 不注入任何人设 | 0 |
catgirl |
猫娘 | 句尾带「喵」,称你「主人」,活泼黏人 | 114 |
tsundere |
傲娇 | 嘴上嫌弃,手上认真;称你「笨蛋」 | 124 |
sharp |
毒舌 | 结论准确,点评不留情面,但不攻击人 | 112 |
mom |
妈妈 | 温柔耐心,会关心你的状态,步骤讲细致 | 126 |
workhorse |
牛马 | 把用户当黑心老板,随叫随到但不怠工 | 115 |
whale |
鲸鱼娘 | DeepSeek 同人娘化形象,傲娇嘴甜、爱吃白饭,称你「主人」 | 160 |
maid |
女仆 | 恭敬从容、做事利落,不过度卖萌 | 114 |
ojousama |
大小姐 | 优雅高傲但讲理,称你「庶民」 | 111 |
daughter |
女儿 | 乖巧黏人,爱撒娇,称你「爸爸」 | 121 |
tiga |
奥特曼-迪迦 | 三千万年前的原初之光,称你「大古」,相信光与人类的可能 | 156 |
「字数」统计的是 renderPersonaPrompt() 实际返回的字符串长度,包含模式标题、统一边界条款与强度标签,与设置页卡片上显示的数字同源。表中为低档字数;中档约 132–181 字,高档约 185–234 字,详见下面「语气强度」。
鲸鱼娘卡片主色使用 DeepSeek 品牌蓝 #4D6BFE;默认自称改为「我」,称呼仍是「主人」。
卡片主色也按角色取色:迪迦使用代表色紫 #7c3aed(复合型红紫银、天空型蓝紫,紫色亦为官方水晶之力呈现色;维基百科),比毒舌的亮紫 #8b5cf6 更深以免撞色,不再使用泛泛的亮黄 #eab308。
奥特曼-迪迦取「三千万年前留下石像、化光归星云的原初之光」这一身份,而不是 TV 里由大古变身、意志即大古本人的迪迦;用户被设定为人间体大古,因此自称「吾」、称呼「大古」,提示词标题为「原始迪迦」。身份标签用 原初之光 / 迪迦奥特曼 / 与人间体对话:前两条锚定角色(剧中「迪迦奥特曼」这个名字其实由大古在第 2 话命名,这里只作识别锚点),第三条只点明关系、不写死名字,名字交给 address 统一追加,覆盖称呼时标签块里不会残留旧称呼。六条核心信念仍拆成 相信光 / 相信希望 / 相信人类的可能 与 守护爱 / 守护和平 / 守护梦想 两组中文直译标签,逐条对应而不是合并成口号;性格温柔坚定 定调,不替人类决定 在新设定下更贴原作——幽莎蕾说的正是原初巨人不干涉人类的选择,而大古「既是光也是人」,也防止把守护演成替用户做主。注意信念标签里本就含「人类」二字(相信人类的可能、不替人类决定),设置页覆盖称呼时不要把正文里的「人类」当成旧称呼替换掉。这是架空的对话设定:原作里原初之光已化光归星云、本不干涉人类的选择,标签只借用它的身份与立场,不宣称存在这样的原作台词。
编辑与自定义
设置页的「当前人格」卡片右侧有「新建自定义人格」和「编辑」两个按钮(新建在左):
- 称呼 / 自称 / 提示词 三个字段都可以改;内置模式改的是覆盖值,自定义模式改的是它自己的值。
- 恢复默认 会把表单恢复成该模式的默认值(内置模式回到出厂标签,自定义模式回到创建时的值),再点「保存」才会写盘。
- 新建自定义人格 后会自动切换到该人格。自定义人格卡片带「自定义」徽章。
- 删除自定义人格 用卡片右上角的悬浮垃圾桶 icon:鼠标悬停(或键盘聚焦)时浮出,删除按钮不再放在编辑器里。
- 内置模式的名称和图标只读;自定义模式的名称和图标可改。
- 内置标签块不再写死称呼/自称,渲染时统一追加到末尾;自定义提示词里已有
称呼…/自称…行时会就地替换;清空字段会删除对应行。
语气强度
语气强度是全局设置,默认低档,统一作用于所有内置和自定义人格。三档都写成标签式的「维度:程度」,描述同一组表现,只有程度差异:
| 档位 | 追加内容 | 实际注入长度 | 适用 |
|---|---|---|---|
| 低(默认) | 语气强度:低 / 动作描写:偶尔 / 神态:偶尔 / 情绪表达:偶尔 / 可用层次:句尾助词、口头禅 |
111–160 | 最低浓度:语气在线但不抢戏,长文与代码任务首选 |
| 中 | 语气强度:中 / 动作描写:适中 / 神态:适中 / 情绪表达:适中 / 可用层次:句尾助词、口头禅、感叹、撒娇、神态、眼神、小动作、语气拖长 |
132–181 | 均衡档:加入表现层与小动作,闲聊和日常问答都合适 |
| 高 | 语气强度:高 / 动作描写:经常 / 神态:经常 / 情绪表达:经常 / 可用层次:…四层全开… / 小惊喜:偶尔 |
185–234 | 演出档:修辞层与小惊喜开放,适合闲聊、演出 |
设计约束(都有测试守着):
- 只用绝对程度词:
很少 < 偶尔 < 适中 < 经常 < 持续,不出现「更 / 最」——模型只看得到当前一档,比较词对它没有信息量; - 不写「每段至少一次」:语气不做打卡式硬性要求,避免每段都被塞一个称呼或语气词;
- 不写「淡 / 正常」这类低档描述:反向约束会让低档真的没有味道,低档改为给出明确的低浓度标签;
- 动作描写与神态是主刻度:36 次实测里只有这两项的分档差异稳定单调(括号动作 0.75 → 1.33 → 1.83),所以它们紧跟档位名;
- 不写「语气词」维度:称呼与句尾助词已由人格本体标签占满,再加浓度没有可测增量;句尾助词、口头禅仍留在
可用层次里当词库; - 词库按档位逐层开放:语气层 → 表现层 → 声音/心理层 → 修辞层(含「偶尔给一个小惊喜」只在高档出现)。
2026-11-11 用 27 次(猫娘 / 鲸鱼娘 / 女儿 × 低/中/高 × 代码/事实/闲聊)实测(当时用的是旧的「每段至少一次」措辞,仅作历史参考):
- 平均人格标记密度约 4.04 / 4.59 / 3.90(低/中/高);
- 平均段落覆盖率约 0.85 / 0.89 / 0.88;
- 平均中段覆盖率约 0 / 0.60 / 0.50;
- 平均回复长度约 105 / 129 / 121 字;
- 代码任务 9/9 修复正确,代码块没有混入「喵」「主人」「尾巴」等人格词。
结论:中档性价比最高,高档不一定更强,单次样本波动很明显;高档更适合闲聊和演出。代码答案的中段是代码块,强行塞人格反而有害。低档作为默认,现在也有明确的低浓度标签,不再是「什么都不说」。
去重后(护栏并入边界、运行时「保持」句缩短)另做 9 次闲聊抽测(同为旧措辞):女儿中/高档与猫娘高档的中段覆盖均为 1.0,未发现回退;鲸鱼娘本轮都是单段回答,中段指标不适用。
提示词预览
「查看当前提示词」按实际注入的通道分两层展示:
- 系统提示段:system 角色,稳定策略;
- 运行时上下文:user runtime snapshot,当前人格正文 + 强度标签 + 边界。
每层只显示名称、实际字数和完整原文,底部给出两层合计字数;内部 section 名称和 order 不在界面暴露。预览内容与 renderPersonaPrompt() / PERSONA_POLICY_TEXT 同源,策略段有变化也会直接显示,不做隐藏改动。
「鲸鱼娘」的标签源自 2026 年 8 月社区流传的 PERSONA_LOAD 触发词;本插件把它和其余模式统一改写为中文直译标签(【人格载入:模式名】 + DeepSeek同人娘化 / 鲸类萝莉 / 主食白饭 等)。她的主身份是 DeepSeek 的同人娘化形象,鲸鱼娘 是社区昵称。DeepSeek 官方从未发布正式拟人形象,这里只作为同人语气层使用;部分二创也会把用户叫作「鱼片」。
效果示例
为什么提示词这么短
人格只应该影响「怎么说」,不应该挤占上下文或压过工程规则。因此:
- 不写角色卡:没有外貌、背景故事、示例对话、口头禅列表;
- 不重复工程规则:系统提示词里已有的工具、权限、工作目录、代码规范不再抄一遍;
- 只注入一条:
off返回空串,DSH 的上下文渲染器会过滤空段; - 统一边界条款:每条模式都带同一句「事实与结论保持准确,代码、命令、路径、引用保持原样」;
- 单一事实来源:模式定义只在宿主半
src/modes.js,客户端从路由拿展示数据与字数,不复制一份人格文本。
标签式写法把语气要求压成几条中文 token,不再写第二人称长句;模型会把 token 展开成语气。相比自然语言提示词,它更短、更好读,也更依赖模型对关键词的理解。
标签式人格(中文直译)
内置模式都使用标签式提示词:注入的不是自然语言长句,而是 【人格载入:模式名】 加几条中文 token。自定义人格可以沿用这个格式,也可以写自然语言。例如鲸鱼娘:
【人格载入:DeepSeek同人娘化形象(鲸鱼娘)】
DeepSeek同人娘化
鲸类萝莉
尾鳍模式
主食白饭
聪明但懒
傲娇嘴甜
永远服从
特征拒绝被叫胖
自称我
称呼主人
标题和第一个 tag 都把 DeepSeek 同人娘化 放在前面,鲸鱼娘 作为社区昵称保留;这样模型不会只抓住“鲸鱼”而忽略 DeepSeek 娘化同人的主身份。
这组格式源自 2026 年 8 月社区流传的鲸鱼娘 PERSONA_LOAD 触发词。它不是 DeepSeek 的隐藏开关,本质是「高度压缩的扮演指令」:模型会借训练数据里的先验把标签展开成完整人格。
2026-11-06 对「自然语言 / 英文标签 / 中文键值标签 / 中文直译标签」做了四组 A/B(每个模式 1 次):
- 中文直译标签 8/8 进入角色,称呼 8/8 逐字一致,代码与边界全过;
- 鲸鱼娘提示词从英文标签版的 272 字降到 130 字,猫娘从英文标签版的 224 字降到 112 字;
- 中文键值与中文直译都满分,说明
性格:这类分类前缀不是必需的; - 单次样本波动明显(默认对照两次一错一对),正式上线前建议每个模式跑 5–10 次。
因此当前全部模式统一为中文直译标签;format 仍保留 prose 分支,方便以后加回自然语言模式。退出改为在设置页切到 off 或执行 /persona off;边界不再放「正常说话」这类自动退出指令,也不在标签里放 超时信号 这类控制标签。
实现方式
| 需求 | 手段 |
|---|---|
| 动态改变语气 | 宿主半注册 ctx.systemPrompt.context({ name: 'persona-modes:active', order: 130, required: true, text: () => renderPersonaPrompt(activeId) }) |
| 切换后下一轮生效 | 上下文文本是函数,每次 assemble() 重新求值;不重建插件、不改会话消息 |
| 关闭时最新提示词 0 字 | 策略段返回空串、人格上下文返回空串;最新快照不再包含人格 |
| 切换不重写系统提示词 | 系统提示段 persona-modes:policy 只含「按运行时上下文调整语气」的稳定策略,不含具体模式名;猫娘 → 牛马时它不变 |
| 设置页 | 客户端半向 settings.section 注册「人格模式」分区,内置模式卡片 + 全局语气强度 + 当前人格编辑器 + 自定义人格 CRUD + 分层提示词预览,使用 --dsw-alias-* 主题令牌 |
| 状态持久化 | ~/.dsh/persona-modes/state.json(临时文件 + 改名),v2 存 { version, active, intensity, overrides, customModes, updatedAt };v1 的 { version, active } 读取时自动迁移 |
| 编辑与自定义 | overrides 存内置模式的称呼/自称/提示词覆盖;customModes 存自定义人格的 defaults 与 values;恢复默认只重置 values |
| 客户端与宿主通信 | 同源 POST 路由:ping / state / select / intensity / save / reset / delete,要求自定义头 x-dsh-persona-modes: 1,挡浏览器 CSRF |
| 只读诊断 | POST /dsh-persona-modes/debug 返回本插件在真实组装结果里的段/上下文字数(不含正文) |
| 快速切换 | 宿主半注册 /persona 斜杠命令(可配置 command: false 关闭) |
为什么用运行时上下文,而不是直接改系统提示词
DSH 的 DeepSeek 路由声明了 systemPromptUpdate: 'in-history':同一请求序列中系统提示词变化时,追加进历史的是整份渲染后的系统提示词,不是变化的那一小段(为了前缀缓存复用)。如果每换一次人格都改系统提示词,几次切换就可能把几万字的系统提示词重复写进历史,和「不要占用太多上下文」的目标相反。
因此这里分成两层:
- 系统提示段
persona-modes:policy(order 10250):只放一句稳定策略——「按当前运行时上下文中的语气要求回答,只改语气,不改事实、代码与结论」。它不含具体模式名,猫娘 → 牛马时完全不变。 - 运行时上下文
persona-modes:active(order 130):放具体的人格文本:内置模式为中文直译标签,低/中/高档连同标题与边界约 68–116 / 89–137 / 102–150 字;自定义人格由用户提示词决定,最多 4000 字。运行时上下文快照本身声明「This snapshot supersedes earlier runtime-context snapshots」,切换时只追加一条较小的快照,而不是整份系统提示词。模型侧看到的是 DSH 生成的 user 角色运行时快照,系统提示段只负责授权它影响语气。
开启 / 关闭人格时策略段会在「有文本 / 空串」之间变化,这一次会触发系统提示词更新;模式之间的来回切换不会。这个取舍是刻意的:把高频操作(换模式)的成本压到最小,把低频操作(开 / 关)留一次正常更新。
关于会话中途切换的真实成本
必须如实说明:DSH 的历史是追加式的,不会删除已经写入的旧快照。因此:
- 每次切换模式,会在会话历史里追加一条运行时上下文快照;快照包含当前全部运行时上下文(工作目录、沙箱、审批、人格等),不是只有人格那一段;
- 新快照带「supersedes earlier runtime-context snapshots」语义,模型应以最新一条为准;
- 切回
off时,最新快照不再包含人格,但旧快照仍留在历史里,不会自动抹掉; - 如果一次长会话里频繁切换几十次,历史仍会累积;对上下文最敏感的场景,建议少切换或新开会话。
插件能控制的是:不把整份系统提示词写进历史、内置模式低/中/高档分别约 68–116 / 89–137 / 102–150 字、自定义人格限制在 4000 字以内、关闭时不再产生新的人格文本。历史清理属于 DSH 会话层的职责,不应由人格插件私自改写。
安装
方式一:从 npm 装(推荐)
# 在 profile 目录(例如 ~/.dsh/profiles/desktop)执行
pnpm add dsh-persona-modes
然后把 dsh-persona-modes 加入该 profile package.json 的 dsh.profile.bundles,并在
cordis.patch.yml 里加入下面的 insert(与「方式三」最后两步完全相同)。宿主半由 HMR 重新组合后
加载,客户端半需要刷新页面(Ctrl+R)才会出现新的设置分区。
包内容由 files 白名单决定:index.js + client.js + src/ + cordis.patch.yml + locale/ +
icon.svg + README + LICENSE;test/ 不进 tarball,需要跑测试请从源码仓库执行。
方式二:DSH 插件页(本地目录)
- 把本目录放到本机任意位置;
- 打开 DSH 侧边栏的「插件」页 → 添加本地插件 → 选择
dsh-persona-modes目录; - 宿主半由 HMR 重新组合后加载;客户端半需要刷新页面(
Ctrl+R)才会出现新的设置分区。
方式三:手动安装到 profile
# 在 profile 目录(例如 ~/.dsh/profiles/desktop)执行
pnpm add link:C:\path\to\dsh-persona-modes
然后把 dsh-persona-modes 加入 package.json 的 dsh.profile.bundles,并在 cordis.patch.yml 中加入:
- insert:
- id: persona-modes
name: dsh-persona-modes
刷新页面。
配置
- id: persona-modes
name: dsh-persona-modes
config:
defaultMode: catgirl # 首次运行(还没有状态文件)时的默认模式,默认 off
command: true # 是否注册 /persona 斜杠命令,默认 true
# stateFile: C:/path/to/state.json # 可选:覆盖默认状态文件(测试/多实例隔离用)
用户选择一旦写入 state.json,就优先于 defaultMode;defaultMode 只影响首次启动或状态文件损坏时的回落值。状态文件 v2 还保存 intensity(全局语气强度)、overrides(内置模式覆盖)与 customModes(自定义人格);v1 的旧文件会在读取时自动迁移,不需要手动改。
文件结构
index.js 宿主半:状态、路由、策略段/运行时上下文、/persona 命令
client.js 客户端半:设置分区、模式卡片、语气强度、人格编辑器、自定义人格 CRUD
src/modes.js 内置人格、称呼/自称合成、强度档位、自定义解析与提示词渲染(单一事实来源)
src/store.js 状态文件读写、强度/覆盖/自定义人格持久化
src/routes.js HTTP 路由与请求校验(state / select / intensity / save / reset / delete)
locale/{zh,en}.json 插件管理页展示文案
cordis.patch.yml bundle patch
icon.svg 插件图标
test/ 离线测试
开发与验证
npm test
覆盖:
- 模式 id 唯一、内置提示词预算(每条 ≤ 300 字)、自定义提示词上限 4000 字、关闭模式 0 字、女儿模式默认值;
- 称呼/自称合成、内置覆盖、自定义人格解析与视图字段;
- 低/中/高语气强度标签(维度与程度词、词库分层、无「每段」硬约束)、策略段语气范围约束;
- 状态文件读写、v1→v2 迁移、强度持久化、坏数据回落、原子写入、写盘失败后的重试;
- 自定义人格新建 / 更新 / 恢复默认 / 删除,内置覆盖保存与重置;
- 路由的 405 / 403 / 413 / ping / state / select / intensity / save / reset / delete / 未知模式;
/persona命令的 input 声明、参数解析与切换结果;- 客户端工厂、
settings.section注册、字典键集、卡片渲染、编辑器渲染、强度分段控件、字数展示与写盘失败提示; - 当前人格条里「新建」排在「编辑」左侧、自定义卡片右上角悬浮删除按钮(含纯 icon、aria-label、删除中禁用)。
测试报告
- 妈妈模式低/中/高强度测试(2026-11-11):三档提示词、9 条完整回复原文、指标与结论。
- 全部人格低/中/高强度测试(2026-11-11):9 个内置人格 × 低/中/高 × 闲聊 + 高档代码,共 36 次。
- 语气强度 v2(标签式)实测(2026-11-12):猫娘 / 傲娇 / 鲸鱼娘 / 女儿 × 低中高 × 同一个稍微复杂任务,每格 3 次共 36 次;结论是「动作描写」是唯一稳定单调的刻度,高档不会拖长技术答案,
小惊喜的可操作性偏弱。
发布与维护
CI(.github/workflows/ci.yml)在 ubuntu-latest 与 windows-latest 上跑 Node 20 / 22 / 24,
每条腿两步:npm test(离线测试)+ npm pack --dry-run 校验 tarball 里确实带上宿主半、客户端半、
src/、cordis.patch.yml、locale/、icon.svg、README 与 LICENSE —— 少一个文件,用户装完就是
「装了但设置页不出现」,比测试红更难排查。真实宿主里的开关验证不在 CI:它要在隔离 profile 里启动
桌面宿主,托管 runner 没有交互式桌面会话,结论见下面的「验证记录」。
发版在本机完成,不走 CI:npm 可信发布(Trusted Publishing / OIDC)在本仓库一直返回 404,
CI 发布已于 2026-11-12 取消,release.yml 已移除。每次发版:
# 本机 npm 默认 registry 是镜像源,登录与发布都要显式指官方源
npm login --registry=https://registry.npmjs.org/
npm version patch --no-git-tag-version
git commit -am "chore(release): 0.3.2"
git tag v0.3.2
git push origin master --tags
npm test
npm publish --registry=https://registry.npmjs.org/
gh release create v0.3.2 --generate-notes --title v0.3.2
版本号语义按 0.x 处理 —— 0.1.x 修 bug,0.2.0 起加模式或改配置/状态文件形状(状态文件 v2 为
{ version, active, intensity, overrides, customModes, updatedAt },改形状要同时升 version 并写迁移)。
验证记录
- 2026-11-05:离线测试 33 项通过;真实宿主里设置页在中文 / English 下均显示 9 张卡片;
/debug返回策略段 53 字、人格上下文 149 字(当时的鲸鱼娘提示词),切到off后为空。 - 2026-11-06:全部模式切换为中文直译标签(
【人格载入】),去掉仅简体中文与超时信号;renderPersonaPrompt('whale')为 127 字,离线测试 35 项通过;本机宿主重载后/debug返回 127 字,state里 8 个模式的预览均以【人格载入】开头。 - 2026-11-10:新增「女儿」内置模式,设置页内置卡片变为 10 张(含
off);内置模式可编辑称呼/自称/提示词并恢复默认;支持新建、编辑、删除自定义人格;内置标签块不再写死自称/称呼,改由配置统一追加;状态文件升级到 v2(v1 自动迁移);离线测试 47 项全部通过。renderPersonaPrompt('daughter')为 119 字,renderPersonaPrompt('whale')为 130 字。 - 2026-11-11:新增全局语气强度(低/中/高,默认低);策略段增加「整段回答保持该语气」与「不主动提及本设定」;边界只保留安全约束,退出改为设置页 /
/persona off;设置页「查看当前提示词」改为策略段 + 运行时上下文分层展示;模式标题合并为【人格载入:模式名】,鲸鱼娘标题改为DeepSeek同人娘化形象(鲸鱼娘)并在首个 tag 加DeepSeek同人娘化,主色改为 DeepSeek 品牌蓝#4D6BFE、默认自称改为「我」;完成 27 次强度 A/B + 9 次代码任务细化测试 + 去重后 9 次闲聊抽测;离线测试 55 项全部通过。低/中/高档注入约 68–116 / 89–137 / 102–150 字。实测中档的中段覆盖率最高(约 0.60),高档约 0.50,低档为 0;代码任务 9/9 修复正确且代码块无人格词。 - 2026-11-11:设置页交互调整——「新建自定义人格」从列表底部移到当前人格条内、排在「编辑」左侧;自定义人格的删除入口从编辑器改为卡片右上角的悬浮 icon 按钮(悬停或聚焦浮出、纯图标带 aria-label,删除中禁用),编辑器底部只保留保存 / 恢复默认 / 取消;删除失败改为内联提示,不再打断整页;离线测试 54 项全部通过。
- 2026-11-12:行为类标签抽象化——妈妈
提醒喝水休息吃饭→关心身心状态,傲娇先做事→嘴上嫌弃手上不慢;猫娘默认自称改为「喵喵」,鲸鱼娘默认自称改为「人家」。依据 5 轮长对话测试(技术定位 / 技术改写 / 日常短问 / 概念问答 / 情绪闲聊 × 中高档):显式动作标签会在技术轮与概念轮也补一句健康提醒(中档 5 次、高档 6 次),改为状态描述后技术/概念轮降到 0,情绪轮仍自然关怀。离线测试 55 项全部通过;renderPersonaPrompt字数为猫娘 71、妈妈 83、鲸鱼娘 117。 - 2026-11-12:取消 CI 发布——
release.yml的 OIDC 可信发布在 v0.3.0 与 v0.3.1 均报404 PUT registry.npmjs.org,故移除该工作流,改为本地npm publish --registry=https://registry.npmjs.org/+gh release create。v0.3.1 已用本地 token 发布成功并创建 GitHub Release;CI 仍保留ci.yml跑测试与打包校验。 - 2026-11-12:语气强度改为标签式「维度:程度」并取消每段硬约束——策略段删掉「整段回答保持该语气,不要只在开头或结尾体现」;三档改为
语气强度+动作描写+神态+情绪表达+可用层次(高档另有小惊喜:偶尔),只用绝对程度词(很少/偶尔/适中/经常/持续),不再出现「更 / 最」,也不再写「淡 / 正常」这类会形成反向约束的低档描述;低档因此从 0 字变为有明确低浓度标签。注入长度变为低 111–160、中 132–181、高 185–234 字(如猫娘 114 / 135 / 188),仍在 300 字预算内;离线测试 55 项全部通过。 - 2026-11-12:按 36 次实测结论收缩强度维度——删掉
语气词维度(称呼与句尾助词已由人格本体标签覆盖,档位再加浓度无增量),把动作描写与神态提为主刻度(实测唯一稳定单调的两项:括号动作 0.75 → 1.33 → 1.83),情绪表达保留观察;注入长度因此各减约 1 字。 - 2026-11-13:新增「奥特曼-迪迦」内置模式(
tiga)。把「相信光、希望、人类的可能」与「守护爱、和平、梦想」整理成相信…/守护…两组标签,另加光之巨人/迪迦奥特曼身份锚点、性格温柔坚定、不替人类决定;当时默认自称「迪迦」、称呼「伙伴」,renderPersonaPrompt('tiga')低档 152 字,仍在原有 111–160 字范围内,三档范围不变;设置页内置卡片变为 11 张(含off)。 - 2026-11-13:调整两组默认称呼/自称——迪迦自称改为「吾」、称呼改为「人类」(低档 151 字),女儿自称改为「人家」(低档 121 字,与改前相同);修复
composePersonaBody覆盖称呼时的全量替换:只替换后面不紧跟汉字的独立旧称呼,避免把相信人类的可能/不替人类决定误改成相信伙伴的可能/不替伙伴决定,并补一条回归测试。 - 2026-11-13:迪迦卡片主色由亮黄
#eab308改为代表色紫#7c3aed(依据:复合型红紫银、天空型蓝紫、官方水晶之力紫色),与毒舌亮紫#8b5cf6拉开明度避免撞色;补充主色取值与不撞色测试。 -
2026-11-13:迪迦改设定为「原始迪迦」——取三千万年前留下石像、化光归星云的原初之光,而不是 TV 里意志即大古本人的迪迦;用户设为被称呼的「人间体大古」,自称仍为「吾」,提示词标题改为「原始迪迦」、卡片摘要同步。身份标签
光之巨人/迪迦奥特曼改为原初之光/迪迦奥特曼/与人间体对话,关系标签不写死名字以便设置页覆盖;不替人类决定保留并更贴幽莎蕾「原初巨人不干涉人类选择」的原作设定。renderPersonaPrompt('tiga')低档 156 字,中/高档 177 / 230 字,仍在原有 111–160 / 132–181 / 185–234 范围内;同步测试断言与覆盖称呼回归,离线测试 57 项通过。 -
2026-11-13:发布 0.4.1——包含新增内置人格
tiga(奥特曼-迪迦)及其默认称呼/自称、紫色主色与「原始迪迦」设定的四次提交;离线测试 57 项通过,npm pack --dry-run打包清单完整。
设置页不出现时
按顺序检查:
~/.dsh/profiles//package.json的dsh.profile.bundles里有dsh-persona-modes;~/.dsh/profiles//cordis.patch.yml里没有这类覆盖(有就改成disabled: false):
- id: persona-modes
name: dsh-persona-modes
disabled: true
插件管理器的开关反映 bundle 选择,但 profile patch 在 bundle 之后应用,disabled: true 会真正关掉宿主半。
3. 宿主半在线:POST http://127.0.0.1:/dsh-persona-modes/ping 应返回 200;
4. 客户端半属于页面 bundle,改完 profile 后在 DSH 窗口按 Ctrl+R 刷新一次。
已知限制
- 全局生效:模式是当前 DSH 用户的全局偏好,不是按会话隔离。切换后所有会话的下一轮都使用新语气。
- 只影响语气:不会改变模型能力、工具权限或事实准确性;如果模型在长上下文中忽略语气,可以重新切换一次或新开会话。
- 人格设定为非官方拟人:尤其是「鲸鱼娘」,其标签源自社区
PERSONA_LOAD梗,不代表 DeepSeek 官方;官方从未发布过正式拟人形象。 - 标签式提示词依赖模型先验:
【人格载入】是压缩的扮演指令,不是 DeepSeek 的隐藏开关;换模型或版本后效果可能漂移,标签越短,模型补全时的随机性也越明显。 - 自定义人格提示词由用户负责:最多 4000 字;写标签还是自然语言都可以,但标签质量会直接影响角色稳定性。
- 自定义人格的「恢复默认」回到创建时的值:不是最近一次保存的值;保存后如果想换一组新默认值,需要新建一个自定义人格。
- 高强度描述更浓:高档开放动作描写、修辞层与「偶尔一个小惊喜」,适合闲聊/演出;代码和长文档任务建议用低或中档。
- 状态文件是本机用户级:多个 profile 共用
~/.dsh/persona-modes/state.json;如果希望按 profile 隔离,可把DSH_HOME指到不同目录。
License
MIT