This commit is contained in:
2026-04-26 20:50:58 +08:00
parent a3a9bfa194
commit 67161bd6d1
142 changed files with 3349 additions and 10674 deletions

View File

@@ -0,0 +1,45 @@
# 世界底稿开局场景批生成解耦说明 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 幕背景与事件描述。