2.3 KiB
2.3 KiB
RPG 角色形象描述数据链路核查 2026-04-24
结论
草稿生成阶段会让大模型为每个可扮演角色和场景角色生成 visualDescription,该字段是角色主形象生成和资产工坊“形象描述”输入框的同一份默认文本来源。
本次核查发现前端 normalizeCustomWorldProfileRecord 曾在规范化 playableNpcs / storyNpcs 时丢弃 visualDescription、actionDescription、sceneVisualDescription。因此后端草稿 JSON 中有大模型生成的文字,但草稿进入前端编辑器后,资产工坊可能只能回退到 description,用户看不到真正的角色形象文字描述。
数据链路
- 后端草稿生成:
server-rs/crates/api-server/src/custom_world_foundation_draft.rs- 角色框架名单 prompt 要求 LLM 输出
visualDescription、actionDescription、sceneVisualDescription。 visualDescription定义为打开角色形象图像生成面板时默认填入的角色形象描述。
- 角色框架名单 prompt 要求 LLM 输出
- 后端角色主形象生成:
server-rs/crates/api-server/src/custom_world.rsgenerate_draft_foundation_role_visuals从角色对象读取visualDescription。- 缺失时直接失败,提示不能在角色形象设定文本生成前生图。
- 生图成功只写回
imageSrc和generatedVisualAssetId,不会覆盖visualDescription。
- 草稿持久化:草稿 profile JSON 保留角色对象字段,
visualDescription应与图片字段一起进入保存载荷。 - 前端规范化:
src/data/customWorldLibrary.tsnormalizePlayableNpc/normalizeStoryNpc必须保留三类资产描述字段。
- 资产工坊展示:
src/components/rpg-creation-asset-studio/RpgCreationRoleAssetStudioModalImpl.tsx- modal 用角色对象构造
baseRole。 buildDefaultRolePromptBundle(baseRole)优先把role.visualDescription转成visualPromptText。RpgCreationRoleVisualSection的“形象描述” TextArea 展示visualPromptText。
- modal 用角色对象构造
验收要点
- 草稿生成完毕后,打开某个角色的资产工坊,应在“形象描述”框看到 LLM 生成的
visualDescription。 - 如果角色有
visualDescription,缓存中的旧visualPromptText不应覆盖它。 - 如果角色缺
visualDescription,才允许前端回退到更弱的字段或缓存文本。