# 世界底稿开局场景批生成解耦说明 2026-04-26 ## 背景 当前第一版世界底稿生成链路里,`framework` 阶段同时要求模型输出 `camp.sceneTaskDescription`、`camp.actBackgroundPromptTexts` 和 `camp.actEventDescriptions`。这让“世界核心骨架”和“开局场景多幕内容”混在同一次世界生成任务里,后续普通场景批生成又要单独生成相同粒度的场景任务、三幕事件、三幕背景和幕 NPC 分配。 这与《AI 原生多幕场景创作与玩法流程 PRD》中“开局场景不是特殊系统,只是玩家开局所处的第一个场景”的约束不一致。开局场景应复用普通场景的批生成能力,而不是由世界骨架阶段提前生成一套缩水版内容。 ## 落地边界 1. `framework` 阶段只负责世界顶层信息和轻量 `camp` 占位: - `name` - `description` 2. 场景批生成阶段负责生成完整场景骨架: - 场景名与描述 - 默认场景生图描述 - `sceneTaskDescription` - `actBackgroundPromptTexts` - `actEventDescriptions` - `actNPCNames` - `connectedLandmarkNames` - `entryHook` 3. 批生成场景结果的第一项固定视为开局场景: - 写回 `profile.camp` - `camp.id` 缺失时固定为 `camp-1` - `camp.kind` 固定为 `camp` 4. 批生成场景结果的其余项写入 `profile.landmarks`。 5. `sceneChapterBlueprints` 仍由统一场景蓝图编译函数生成: - 第 0 项来自 `camp` - 后续项来自 `landmarks` - 开局场景和普通场景共用三幕、NPC、任务、背景提示词规则 ## 兼容策略 为了减少前端和存量链路改动,场景批生成 API 层仍沿用现有 `landmarks` JSON 字段名。字段名不再表示“只包含普通地标”,而表示“本批生成的场景条目”,其中第一项是 opening/camp 场景。 如果模型没有返回任何场景条目,则继续使用 `framework.camp` 的轻量占位构造兜底开局场景;这只是异常兜底,不是主生成路径。 ## 验收点 1. 世界骨架 prompt 不再要求 `camp.sceneTaskDescription`、`camp.actBackgroundPromptTexts`、`camp.actEventDescriptions`。 2. 场景批生成 prompt 明确要求第一项是开局场景。 3. 生成后的 `profile.camp` 来自场景批生成第一项,而不是来自世界骨架阶段的开局多幕内容。 4. `profile.landmarks[0]` 是第一个普通场景,不再重复包含开局场景。 5. `sceneChapterBlueprints[0].sceneId === "camp-1"`,且仍包含 3 幕背景与事件描述。