Files
Genarrative/docs/experience/RPG_ACT_BACKGROUND_PROMPT_SOURCE_2026-04-24.md
kdletters cbc27bad4a
Some checks failed
CI / verify (push) Has been cancelled
init with react+axum+spacetimedb
2026-04-26 18:06:23 +08:00

2.8 KiB
Raw Blame History

RPG 幕背景默认描述来源修正 2026-04-24

背景

草稿编辑器中“AI 生成幕背景”的“画面内容描述”曾出现类似“温馨员工宿舍第1幕背景玩家入职后的首个落脚处玩家会在温馨员工宿舍接住这一章的开场入口。”的默认文本。这类文本不是大模型直接写出的画面描述而是前端或后端在缺少 backgroundPromptText 时,把地点名、幕标题、摘要规则句拼接出来的兜底文案。

落地约束

  1. 幕背景图的默认画面描述必须来自草稿生成链路里的关键场景生成步骤,字段源为 landmarks[*].actBackgroundPromptTexts[*]
  2. sceneChapterBlueprints[*].acts[*].backgroundPromptText 只承接上述幕级大模型产物,不再用 titlesummary、地点描述或规则句拼接。
  3. 如果大模型漏产某一幕描述,后端规范化只保留空字符串,让后续生图前的 backgroundPromptText 校验暴露底稿质量问题,不能伪造可用默认文本。
  4. 前端编辑器 sanitize 只展示已有 act.backgroundPromptText;缺失时留空,不能在 UI 层重新拼接默认描述。
  5. 手动打开 AI 生成面板时,若字段为空,可由用户输入,但系统默认不替用户生成规则句。

当前实现

  • server-rs/crates/api-server/src/custom_world_foundation_draft.rs 的关键场景框架 prompt 要求 LLM 为每个地点生成 3 条 actBackgroundPromptTexts
  • 草稿合成阶段通过 build_scene_chapter_blueprints_from_landmarks 把这些幕级描述写入 sceneChapterBlueprints[*].acts[*].backgroundPromptText
  • normalize_scene_act_blueprint 不再把缺失描述补成“标题 + 摘要 + 通用场景背景”格式。
  • src/components/rpg-creation-editor/RpgCreationEntityEditorShared.tsx 不再用地点名、幕标题和 actSummary 生成 backgroundPromptText fallback。

验收要点

  • 新草稿中每一幕的 backgroundPromptText 应该像自然的画面描述,包含主体、前中远景、站位空间、氛围识别点。
  • 不应再出现“第1幕背景玩家会在……”这类明显拼接句。
  • 如果 LLM 漏掉 actBackgroundPromptTexts,生成幕背景图阶段应失败并提示缺少 backgroundPromptText,而不是静默使用拼接文案。

2026-04-24 并发限流错误处理补充

  • 批量生成幕背景图时,JoinSet 子任务的成功值和失败值固定承载 (chapter_index, act_index, message),用于把错误精确标记回对应章节幕。
  • Semaphore::acquireAcquireError 不能在子任务中转成裸 String 后直接使用 ?,否则会破坏子任务统一错误类型并导致 E0277
  • 限流器异常应映射为同一组三元组错误,保持后续 mark_scene_act_background_generation_error 和部分成功保留逻辑可复用。