Session Persona Lock 测试
测试目标:每个 Session 可独立锁定一个 Persona;未锁定 Session 始终跟随账号当前 Persona。
主流程
- 准备 Persona A、B、C,并在设置中选择 A。
- 打开 Session A,在聊天室人设管理中选择 B,然后开启「为这个会话锁定人设」。
- 打开 Session B,保持「跟随当前人设」。
- 在设置中切换到 C:Session A 应继续显示并使用 B;Session B 应变成 C。
- 再切回 A:Session A 仍是 B;Session B 应变成 A。
- 在 Session A 中关闭锁定:它应立即变成当前账号 Persona A。
边界验证
- 锁定「不使用人设」后,账号切换 Persona 不应影响该 Session。
- 锁定 B 后编辑 B 的公开资料,下一轮提示词应使用更新后的 B;私人备注仍不进入提示词。
- 分支会话继承父会话的锁定状态和 Persona;未锁定父会话的分支继续跟随账号选择。
- 回退、重开、续写、重新生成和 checkpoint 恢复都保持当前锁定规则。
- 切换和锁定操作不得删除消息、已加载历史、游戏变量或音频状态。
- 操作失败时保留原状态并显示错误;进行中的生成结束后再应用刷新。
自动验证
bash
node packages/server/scripts/test-local.mjs src/lib/persona-follow-profile.test.ts src/lib/session-persona.test.ts src/routes/sessions-branch.test.ts src/routes/sessions-revert.test.ts
pnpm --filter @yumina/app exec tsx --tsconfig tsconfig.app.json --test src/lib/chat-persona-controller.test.ts src/lib/refresh-chat-persona.test.ts src/features/chat/persona-manager-dialog.test.ts src/lib/persona-binding-i18n.test.ts
pnpm build
pnpm typecheck