Repository navigation
Releases: gosutry/dsh-persona-select
Release list
v0.4.0
dsh-persona-select 0.4.0
0.4.0 正式版:内置人设重做为 7 个可用角色,并让内置人设也能带「人设历史对话」。
✨ 内置人设(本版重点)
设置页「人设管理」里,内置项现在是「不注入」+ 7 条:
| 人设 | 段序权重 | 人设正文 | 人设历史对话 |
|---|---|---|---|
| 蓝色大肥鱼(鲸鱼娘) | -1 | 8981 字(英文工作准则) | 1285 字节(【角色扮演】外形设定) |
| Claude娘 | -1 | 1471 字 | — |
| 白龙女(ChatGPT娘) | -1 | 1072 字 | — |
| 千问大小姐(Qwen娘) | -1 | 1078 字 | — |
| 黑白阔耳狐(GLM娘) | -1 | 1134 字 | — |
| Kimi娘 | -1 | 978 字 | — |
| 插件指导 / Plugin guide | -1 | - |
2803 字节(插件用法问答) |
- 七条段序权重统一为 -1,与默认值一致:排在预设那句 "You are a coding agent…" 之前。
- 除鲸鱼娘与插件指导外,正文结尾统一为:
允许_动作标签 允许_情感张力/【/角色扮演】/ 空行 /角色扮演开始。 - 旧的
builtin:mentor/builtin:companion/builtin:blunt(三条都是测试占位)已移除;鲸鱼娘沿用builtin:engineer。
🩹 修复
- 内置人设的「人设历史对话」原本读不到:
mergeView()没有把history带进内置条目,因此personaHistoryOf()只可能在用户人设里找到历史。本版把history透传给内置条目,选中内置人设开新对话时,第一步会正常注入这段历史。
📦 版本与兼容
- 三包版本号统一为
0.4.0(dsh-persona-select、-picker、-settings),主包的 peer 依赖与界面显示的PLUGIN_VERSION同步。 - 数据文件不变:
<DSH_HOME>/persona-select/personas.json沿用,无需迁移。 - 内置历史内联在代码里,不占
history/目录,也不会被清理逻辑回收;history/仍然只存用户人设的历史。 - 若某个旧会话当初选的是
builtin:mentor/companion/blunt,升级后该会话会提示"选定人设已删除",重新选一条即可。
📥 安装 / 升级
- 0.4.0 是「一张卡 + 两个组件」:主包
dsh-persona-select出插件卡,-picker/-settings是两个可独立启停的组件,三个包要一起装。 - 仓库内附
packages/dsh-persona-select/install.sh,把三个包一次装进指定 profile:bash install.sh [profile](默认web;脚本所在包需与 picker / settings 目录同级)。 - 装好后重启 DSH 才会加载新的组件行。
✅ 校验点
- 设置 → 人设管理:列表为「不注入」+ 7 条内置,每条带「内置」标记,段序权重显示 -1。
- 选中「蓝色大肥鱼(鲸鱼娘)」或「插件指导」并新开一个对话:第一步应注入各自的「人设历史对话」;已经聊起来的旧对话不会补注入,这是设计如此。
- 对任一内置人设点「复制为新人设」:副本应同时带走正文、段序权重和历史对话。
- 内置人设只读:直接保存会被拒绝,需先复制副本再改。
完整改动:v0.4.0-rc4 → v0.4.0
v0.4.0-rc4
dsh-persona-select 0.4.0-rc4
本版是 0.4.0 的预发布版(rc4):把插件拆成一张插件卡 + 两个可独立启停的组件。
✨ 主要变更
一张卡 + 两个组件
- 三个包:主包
dsh-persona-select只出插件卡,组件包dsh-persona-select-picker/dsh-persona-select-settings作为普通依赖安装、各自带浏览器半。 - 插件列表里仍是一张卡片,点开「包含的组件」能看到两行,各自带图标、标题和开关。
组件开关是真实卸载
- 每个组件是独立包(包根行),停用它 = 整个浏览器半卸载,不是隐藏 UI。
- 内核(路由 / 注入 / 存储)由两个组件通过
ctx.root共同持有,最后一个停用才真正释放——停用任一个不连累另一个。
图标
- 插件卡图标改为从角色原图截脸生成;
- 两个组件行图标为蓝底鲸鱼图标;
- 三张图标统一 256×256、圆角透明。
📦 安装 / 升级
- 功能、配置项、数据文件与 0.3.x 兼容:
<DSH_HOME>/persona-select/personas.json沿用,无需迁移; - 首次打开旧数据会生成
personas.json.v2-backup备份,可删; - 安装后需重启 DSH 才会加载新组件行。
✅ 校验点
- 插件列表里是一张卡(
dsh-persona-select),点开是两个组件,开关可独立启停; - 停用任一组件后,另一个组件与插件卡仍正常,重新启用能恢复;
- 三个图标正常显示:主包是角色脸,组件是蓝底鲸鱼图标;
- 设置 → 人设管理、对话输入区人设选择,功能正常。
完整改动:v0.4.0-rc3 → bd776a5
0.4.0-rc3
dsh-persona-select 0.4.0-rc3 发布说明
0.4.0-rc2 → 0.4.0-rc3:只修一个 bug,但它让深色主题下所有确认框变成「有框无字」。
改动合计两行(client.js1 行、package.json1 行)。
数据格式、接口、其它文件一个字没动,不需要迁移。
这一版你会感觉到什么
删人设时的确认框,终于能看清字了。
深色主题下点「删除」,弹出来的白框里是一片空白——只有「取消」活着(它自带灰底),
正文和「确定」全都隐形了。你截图给我之前,这毛病已经安静地害人很久了。
而且不止删除:导入覆盖历史、有未保存改动时切人设、未保存就点导出,
这几个走的是同一个确认组件,一起中招。这一版一处修完,四处一起好。
修完的样子:深色主题深底白字、浅色主题白底深字,两种主题都读得清。
升级方式
- 版本号
0.4.0-rc2→0.4.0-rc3。这一步骤不能省——不报版本,已经装了的人收不到更新提示,也就永远拿不到这个修复。 - 拿到新包后刷新一次页面。客户端 bundle 的版本戳会变,旧缓存不会自己换(没开 dev 服务时 HMR 不会推)。
- 不需要迁移,人设数据一个字不动。
真正的判据只有一条:深色主题下点「删除」,能看见「确定删除这个人设?此操作不可撤销。」
0.4.0-rc2 及更早的更新请见历史 tag。
v0.4.0-rc2
v0.4.0-rc2
第二个候选版,只做一件小事:把「人设历史对话」的撤回修对。
修了什么 bug
「清除历史」之后点「撤回」,回填的是已保存的那一份(historyBaseline),而不是你刚才被清掉的内容。
所以只要清除前输入框里有尚未保存的东西 —— 手动敲进去的、或者刚从 /export 的 session 日志导入进来的 —— 摁下「撤回」,它们就再也找不回来了。只有当输入框内容恰好等于已保存内容时,撤回才碰巧是对的。
现在的行为
| 清除前输入框 | 修复前点「撤回」 | 现在点「撤回」 |
|---|---|---|
| 未保存的手动编辑 | 回填已保存的旧内容 ❌ | 回填你清除的那段 ✅ |
| 未保存的「导入会话日志」结果 | 回填空字符串 ❌ | 回填导入结果 ✅ |
| 与已保存内容相同 | 正确 | 正确 |
| 空且本来无存档 | 正确 | 正确 |
顺带把快照的生命周期收干净了:切换人设 / 新建人设 / 丢弃草稿 / 导入日志 / 手动编辑 / 保存成功后都会清掉这份快照,不会跨人设残留。
原理
清除的瞬间把输入框原文存进 historyClearedSnapshot,撤回时回填这一份,替代原来的 historyBaseline。
升级
- 从
v0.4.0-rc1升上来只有三个代码文件有改动:client.settings.js、index.js、package.json。 ⚠️ client.settings.js是客户端插件,改动不会热更新。换完文件请重启 DSH(或重开窗口),设置界面的「撤回」才会是新行为。
本次范围
0fdb649fix(settings): 撤回清除的历史对话时回填被清除的内容- 版本号 →
0.4.0-rc2(package.json与PLUGIN_VERSION)
v0.4.0-rc1
dsh-persona-select 0.4.0-rc1
本版重写内置人设 1「蓝色大肥鱼(鲸鱼娘)」的正文,并把版本号从 0.3.33 提到 0.4.0-rc1。
这是 0.4.0 的预发布版,用于逐步完善占位的人设。
✨ 变更
内置人设 1 正文换新
- 全文 532 字符,仍是「【角色扮演】 … 【/角色扮演】 / 角色扮演开始」的结构,位置和段序权重都没变(仍是
1000000,即"追加在系统提示词后")。 - 结构上分成:身份 / 外貌 / 服饰 / 配饰 / 性格 / 动作 / 其它设定,共 25 类条目。
主要变化(和上一版相比)
| 变化 | 现在 | 原来 |
|---|---|---|
| 自称 | 自我戏称_蓝色大肥鱼_否认懒惰肥胖 |
自称_虎鲸女孩 |
| 触发时机 | 唱歌_调用工具时 |
唱歌_执行任务时 |
| 动作标签 | 允许_动作标签 + 允许_情感张力 |
只有 允许_情感张力 |
| 禁止项 | 未包含任何 禁止_ 条目 |
含十余名 禁止_ 条目 |
这一段是可直接编辑的:设置 → 人设管理里选中它,正文随你改,改完就点「保存」新建副本。
📌 说明
- 版本号只改了两处:
package.json的version和index.js的PLUGIN_VERSION,两处已保持一致。 - 其余内置人设(2 / 3 / 4 号「权重测试(占位)」)与其它功能未改动。
- 下载源码包时请选 tag
v0.4.0-rc1。
校验点
- 设置 → 人设管理 → 内置人设 1,标题应为「蓝色大肥鱼(鲸鱼娘)」,正文第一行之后应是
身份_女仆 自我戏称_蓝色大肥鱼_否认懒惰肥胖 …。 - 正文里应能搜到
唱歌_调用工具时,且搜不到自称_虎鲸女孩。 - 段序权重框应仍显示「追加在系统提示词后」。
完整改动:1f16b12 → 1439b58
v0.3.33
dsh-persona-select 0.3.33
本版修好桌面端弹过确认框后所有输入框点不出光标的问题,并把插件自己的确认框全部换成页面内自绘。
🐛 修复
桌面端确认框吞掉输入焦点(重点)
- 症状:在桌面端弹过一次确认框之后,所有输入框都点不出光标,只能把窗口最小化再恢复才回来。
- 根因不在本插件:这是 Electron 原生对话框(
window.confirm)的通病 —— 对话框关闭后窗口被重新激活,但渲染进程的焦点没有还回去,document.hasFocus()一直是false,渲染侧监听window的 focus 事件也等不到。参考 electron#19977,修复 PR electron#50770 / #52188 仍在评审。 - 试过但无效的两条路(已从代码里删掉):弹框后
requestAnimationFrame里恢复焦点;弹框后监听window的focus事件再恢复焦点。 - 最终修法:不用原生框,改成页面内自绘。插件自己的四个确认框(切换人设 / 删除人设 / 导入历史 / 导出未保存)现在渲染成遮罩 + 消息 + 「确定 / 取消」,支持 Esc 取消,全程不离开渲染进程,因此不会触发上面那个焦点丢失。
- 插件源码里
window.confirm的出现次数已归零。
校验点(装完可以自检)
- 设置 → 人设管理,随便触发一次确认框(例如选中内置人设后点另一个人设),确认框应是页面内的深色遮罩样式,而不是系统弹窗。
- 关掉确认框后,立刻点任意输入框,光标应正常出现,不需要最小化/恢复窗口。
- 确认框里按 Esc 应等同于点「取消」。
本版包含
0.3.33 是在 0.3.32 之上的修复版:0.3.32 的全部内容(内置人设、人设选框箭头、段序权重「追随」判定)都在本版里,安装 0.3.33 即可,无需先装 0.3.32。
完整改动:d7bbf32 → 185aba7
v0.3.32
dsh-persona-select 0.3.32
本版更新内置人设、修好人设选框的小箭头,并把「追随」模式的两套写法彻底统一。
✨ 新增 / 变更
内置人设换新
- 内置人设 1「简洁工程师」→ 「蓝色大肥鱼(鲸鱼娘)」:内置鲸鱼娘社区人设,段序权重
1000000(即「追加在系统提示词后」)。 - 内置人设 2 / 3 / 4 → 「权重测试(占位)」:正文为
<该段序权重所在的位置>,段序权重自上而下依次为0/-1/-1001,方便直观核对人设段的插入位置。
「追随」模式判定统一
- 段序权重栏里,数字
1000000与点「追随」按钮得到的字符串'follow'现在是完全等价的两套写法:- 权重框显示「追加在系统提示词后」,点一下可切回数字
1000000编辑; - 设置页状态行显示「追随」;
- 装配时同样执行"把自己的段搬到所有段最后"那一步,不再只是"数字很大所以排在后面"。
- 权重框显示「追加在系统提示词后」,点一下可切回数字
- 存盘不会被改写:磁盘上是数字
1000000,读回来还是1000000。
🐛 修复
- 人设选框展开后小箭头不翻转:箭头原本跟随"面板在上方还是下方"翻转,而输入区贴着窗口底部、上方空间远大于下方,面板永远向上展开,于是箭头永远是 ▲。
- 现在:面板恒定向上展开(对话区只会向下生长),
maxHeight按上方可用空间收口(最高 320、最低 96,横向夹进窗口,不会越出视口);展开后箭头固定为 ▼,收起为 ▲。
- 现在:面板恒定向上展开(对话区只会向下生长),
- 面板高度测量错了,导致方向判断一直不准:原来是在面板已被
maxHeight夹住之后去量高度,量到的值被当成"被压扁"而丢弃,于是布局里记的高度永远是兜底的 320。改为读取内容固有高度(scrollHeight,退回getBoundingClientRect),真实高度第一次展开即落地。 - 段序权重框不显示「追加在系统提示词后」:判定只认字符串
'follow',导致内置鲸鱼娘(数字1000000)被判成"数值模式",框里直接显示1000000。
⚠️ 说明(取舍)
1000000 现在是「追随」的等价写法,因此无法再用 1000000 表示"一个很大的普通数值"。如果你确实需要"排在很后面但不要被搬到末尾",请填别的数字(例如 999999)。
校验点(装完可以自检)
- 设置 → 人设管理,内置人设 1 标题应为「蓝色大肥鱼(鲸鱼娘)」,段序权重框显示「追加在系统提示词后」。
- 内置人设 2 / 3 / 4 标题为「权重测试(占位)」,权重框自上而下是
0/-1/-1001。 - 对话界面点开人设选框:菜单在按钮上方,箭头为 ▼。
完整改动:2e117e5 → cb9e58a → a2dc39b → 5772946