This commit is contained in:
2026-04-25 13:44:48 +08:00
parent 03acbc5cb1
commit 2ebb7bf253
44 changed files with 1003 additions and 250 deletions

View File

@@ -0,0 +1,29 @@
# RPG 运行时直读世界草稿 Profile 检查 2026-04-25
## 结论
RPG 运行时进入游戏时不应再通过 `resultPreview.preview` 或 legacy runtime profile 做中间转换,主数据源统一为 Agent session 的 `draftProfile`
本次检查确认:
1. Rust 侧 `custom_world_foundation_draft` 已直接产出 `draftProfile`
2. 前端原先 `buildCustomWorldProfileFromAgentSession()` 仍只读取 `session.resultPreview.preview`,这会绕过草稿 profile 中已经存在的角色形象、关系、压力等字段。
3. 角色选择页与游戏内角色本身可以消费 `CustomWorldProfile.playableNpcs[].imageSrc`断点在“session -> profile”的入口而不是角色选择页。
4. “进入世界”按钮原先还会先执行 `sync_result_profile`,把当前结果页旧快照再同步回 session如果结果页 profile 没有最新角色图,会在进入角色选择页前覆盖掉 `draftProfile` 中的正确形象。
## 已修正
- `buildCustomWorldProfileFromAgentSession()` 改为直接归一化 `session.draftProfile`
- `resultPreview` 只保留为发布质量、blocker、预览外壳信息不再作为进入游戏 profile 的数据源。
- Agent 草稿结果进入游戏时直接使用最新 `agentSessionProfile`,不再把当前结果页 profile 回写成新的运行时 profile。
- 前端 `normalizeCustomWorldProfileRecord()` 补齐 rs 草稿角色字段兼容:
- `publicMask/publicIdentity` -> `description/visualDescription/personality` fallback
- `currentPressure/hiddenHook` -> `backstory/actionDescription/sceneVisualDescription` fallback
- `relationToPlayer` -> `motivation/relationshipHooks` fallback
- `imageSrc/generatedVisualAssetId/generatedAnimationSetId/animationMap` 保持直通
## 后续约束
- 新 RPG 运行时链路只允许读取 `draftProfile`
- 不再为进入游戏构造额外 legacy profile也不再把 `resultPreview.preview` 当作运行时真相源。
- 如果草稿中新增角色、场景、物品字段,应优先扩展 `draftProfile` 的归一化读取,而不是增加中间转换结构。