# 世界 Profile 到预设内容与实时生成规则映射审计 更新时间:`2026-04-18` ## 0. 审计目标 本次审计只回答一个问题: **当前仓库里的世界 profile 设定,是否已经完整、合理地映射到游戏的预设内容与实时生成内容规则中。** 这里的“世界 profile”包含两层: 1. `CustomWorldProfile` 顶层世界数据 2. `ownedSettingLayers` 派生设定层 这里的“预设内容”包含: 1. 角色运行时预设 2. 场景预设 3. 默认视觉与怪物匹配 4. 初始装备 / 初始背包 / 经济与术语表现 这里的“实时生成规则”包含: 1. 主剧情 prompt 2. NPC 对话 / 招募 / 私聊 prompt 3. 任务生成 4. 运行时物品生成 5. 故事线程、可见性、叙事 QA 与推进规则 --- ## 1. 结论先行 结论不是“完全映射”,而是: **已完成基础映射,但没有达到“完全且合理”的程度。** 当前状态更准确地说是: 1. `世界基础骨架 -> 角色 / 场景 / 属性 / prompt` 这条主链已经打通。 2. `叙事层 -> 主剧情/NPC 可见性规则` 已经有比较扎实的接入。 3. `规则层 -> UI术语 / 经济 / 属性` 已经接入。 4. 但 `模板兼容层` 仍然过强,跨题材世界会被粗暴压回 `WUXIA/XIANXIA`。 5. 但 `后端运行时任务/物品模块` 只拿到了瘦身版 profile,没有真正吃到完整世界叙事层。 6. 但 `世界级 items / faction / conflict` 仍然更多是文本种子,而不是可操作的游戏内容对象。 如果按结果判断: 1. **预设内容映射:部分完整,约 70%。** 2. **实时生成规则映射:前端剧情主链较完整,后端运行时子链不完整,整体约 60%。** 3. **跨题材合理性:明显不足。** --- ## 2. 本次审计覆盖的核心文件 类型与编译链: - `src/types/customWorld.ts` - `src/services/customWorld.ts` - `src/services/customWorldBuilder.ts` - `src/services/customWorldOwnedSettingLayers.ts` - `src/services/customWorldTheme.ts` 预设内容落地: - `src/data/characterPresets.ts` - `src/data/scenePresets.ts` - `src/data/customWorldCharacterLoadout.ts` - `src/data/customWorldRuntime.ts` - `src/data/customWorldVisuals.ts` - `src/data/customWorldNpcMonsters.ts` - `src/data/worldAttributeSchemas.ts` - `src/data/economy.ts` - `src/services/customWorldPresentation.ts` 实时生成规则: - `src/hooks/story/storyContextBuilder.ts` - `src/services/prompt.ts` - `src/services/characterChatPrompt.ts` - `src/services/questPrompt.ts` - `src/services/questDirector.ts` - `src/services/runtimeItemAiPrompt.ts` - `src/data/runtimeItemNarrative.ts` - `src/services/storyEngine/themePack.ts` - `src/services/storyEngine/worldStoryGraph.ts` - `src/services/storyEngine/actorNarrativeProfile.ts` - `src/services/storyEngine/knowledgeGraph.ts` - `src/services/storyEngine/threadContract.ts` - `src/services/storyEngine/visibilityEngine.ts` - `src/services/storyEngine/authorialConstraintPack.ts` - `src/hooks/story/progressionActions.ts` 后端运行时链: - `server-node/src/modules/ai/customWorldOrchestrator.ts` - `server-node/src/modules/runtime-item/runtimeItemModule.ts` - `server-node/src/modules/quest/runtimeQuestModule.ts` - `server-node/src/modules/runtime/runtimeSnapshotHydration.ts` --- ## 3. 映射总表 | 设定层/字段 | 映射到预设内容 | 映射到实时生成规则 | 判断 | | --- | --- | --- | --- | | `name/subtitle/summary/tone/playerGoal` | 已映射到角色 opening、场景提示、视觉匹配、程序化物品关键词 | 已映射到主剧情 prompt、任务 prompt、物品 prompt、ThemePack/StoryGraph 派生 | 基本成立 | | `templateWorldType/compatibilityTemplateWorldType` | 强影响角色模板、场景图参考池、怪物池、兼容 schema | 影响 ThemePack fallback 与部分运行时回退 | 已接入,但合理性不足 | | `majorFactions/coreConflicts` | 主要进入 ThemePack / StoryGraph / tension state,未落成具体 faction 实体 | 影响 authorial constraints、线程图谱、任务与剧情语义 | 有映射,但偏文本种子 | | `camp` | 已映射为开局 camp scene、camp 图、camp 连接 | 通过世界参考文本和开局内容进入 prompt | 成立 | | `attributeSchema` | 已映射到角色/NPC 属性、战斗面板、属性展示 | 已映射到 prompt 属性描述与运行时计算 | 成立 | | `ownedSettingLayers.ruleProfile.resourceLabels` | 已映射到 UI 血量/法力/货币等术语 | 主要通过 UI/经济层体现,prompt 侧间接使用 | 成立 | | `ownedSettingLayers.ruleProfile.economyProfile.initialCurrency` | 已映射到初始货币与快照恢复 | 对运行时奖励规则影响弱,更多是初始化 | 成立但范围有限 | | `playableNpcs` | 已映射到可玩角色预设、技能变体、初始物品、home scene | 已映射到剧情 prompt、私聊 prompt、叙事档案 | 成立 | | `storyNpcs` | 已映射到场景 NPC、怪物判定、角色运行时预设 | 已映射到遭遇 prompt、任务发布者、叙事可见性 | 成立 | | `landmarks` | 已映射到 scene presets、连接网络、场景视觉、treasure hints | 已映射到世界参考文本、scene residues、故事线程关联 | 成立 | | `items` | 生成主链默认清空,世界级 item 几乎未形成正式内容层 | `knowledgeFacts` 可支持 item,但主链无内容可用 | 映射明显不足 | | `themePack/expressionProfile` | 已映射到视觉/命名/技能名/场景语义 | 已映射到 prompt 基调、reveal 风格、故事图谱 | 成立 | | `referenceProfile.roleArchetypes` | 已映射到角色模板骨架选择 | 运行时规则直接消费较少 | 部分成立 | | `referenceProfile.sceneBuckets` | 已映射到场景默认图匹配 | 运行时 prompt 直接消费较少 | 部分成立 | | `referenceProfile.creatureArchetypes` | 已映射到怪物 preset 池筛选 | 运行时规则间接消费 | 部分成立 | | `storyGraph` | 预设层主要影响 narrative residues 与 faction tension | 已映射到 active threads、constraints、visibility、chapter/campaign | 成立 | | `narrativeProfile` | 已映射到 scene NPC 简介和遭遇资料 | 已映射到 prompt 可见性、任务/物品关系生成 | 成立 | | `knowledgeFacts` | 不直接生成预设内容 | 已映射到 visibility slice 与 prompt 裁剪 | 成立 | | `threadContracts` | 不直接生成预设内容 | 已映射到 story signal / thread update / QA | 成立 | | `creatorIntent/anchorPack/lockState/anchorContent` | 主要留在创作工作区与结果页整理 | 几乎不直接进入正式游戏运行时 | 创作层有用,运行时映射弱 | --- ## 4. 已经成立的映射链 ## 4.1 世界基础骨架已经能稳定进入角色、场景与剧情主链 `CustomWorldProfile` 的基础字段已经不是“只存档不消费”的状态。 它们已经实际进入: 1. 角色开局文案与 opening 动机 2. 角色技能变体 3. 场景预设名称、描述、连接、treasure hints 4. 主剧情 prompt 中的世界补充档案 5. 私聊 / 任务 / 运行时物品 prompt 的世界摘要 这说明: **世界 profile 的基础文本层已经真正进入游戏主链。** --- ## 4.2 规则层已经落到真实游戏表现 `ownedSettingLayers.ruleProfile` 目前已真实影响: 1. `attributeSchema` - 角色/NPC 属性计算 - prompt 中的属性描述 - 面板展示 2. `resourceLabels` - HP/MP/伤害/冷却/货币等 UI 术语 3. `economyProfile.initialCurrency` - 自定义世界初始货币 - 快照恢复时的默认初始化 这部分不是空壳。 **规则层已经从 profile 进入真实结算和 UI。** --- ## 4.3 叙事层已经进入 prompt 可见性与推进规则 `themePack -> storyGraph -> narrativeProfile -> knowledgeFacts -> visibilitySlice` 这条链已经是当前自定义世界最完整的一条映射链。 它已经支撑: 1. NPC 首遇/低披露 prompt 裁剪 2. 当前线程可见性控制 3. 当前压力、错位、禁区、已解锁章节等信息分层 4. 章节/战役/约束/QA 的继续推进 这说明: **世界 profile 里的叙事层不只是展示文本,而是真的在控制“模型这轮能知道什么、不能知道什么”。** --- ## 5. 关键问题 ## 5.1 高优先级问题:模板兼容层仍然是二元锚点,跨题材世界会被错误压缩 当前主生成链仍要求模型输出: - `templateWorldType: WUXIA | XIANXIA` 而兼容解析也会把世界最终压回: 1. `arcane -> XIANXIA` 2. 其它几乎全部回到 `WUXIA` 这会直接影响: 1. 角色模板骨架选择 2. 场景默认图参考池 3. 怪物 preset 池 4. 兼容性 fallback 问题不在“有兼容字段”,而在于: **当前兼容字段仍然过度参与真实内容映射。** 对现代金融、科幻 AI 战争、校园、都市、调查等题材来说,这种二元压缩并不合理。 仓库日志里已经出现了典型样本: 1. 股市世界被要求产出 `XIANXIA` 2. AI 战争世界也被要求产出 `XIANXIA` 3. 魔法科技融合世界被要求产出 `WUXIA` 这意味着: **世界 profile 虽然支持跨题材文本输入,但底层预设内容映射仍带着明显的“武侠/仙侠残余偏置”。** 相关文件: - `server-node/src/modules/ai/customWorldOrchestrator.ts` - `src/services/customWorldTheme.ts` - `src/data/customWorldVisuals.ts` - `src/data/customWorldNpcMonsters.ts` - `src/data/characterPresets.ts` 判断: **这是当前“合理映射”最大缺口。** --- ## 5.2 高优先级问题:后端运行时任务/物品模块只消费了瘦身版 world profile 前端剧情主链里,`customWorldProfile` 会带着: 1. `themePack` 2. `storyGraph` 3. `knowledgeFacts` 4. `threadContracts` 5. `ownedSettingLayers` 但后端运行时模块里: 1. `runtimeItemModule` 的 `customWorldProfile` 只有 `{ name, summary }` 2. `runtimeQuestModule` 的 `customWorldProfile` 也只有 `{ name, summary }` 这直接导致后端运行时生成无法真正读取: 1. 世界线程图谱 2. 世界可见性事实 3. 参考原型层 4. 规则层 5. 表达层 结果是: 1. 主剧情/NPC prompt 已经较强依赖世界叙事层 2. 但后端任务/物品生成还只是吃世界摘要 这会把系统拆成两种强度不同的世界消费链: 1. 前端剧情链较“懂世界” 2. 后端运行时奖励链较“不懂世界” 相关文件: - `src/hooks/story/storyContextBuilder.ts` - `src/services/runtimeItemAiPrompt.ts` - `src/services/questPrompt.ts` - `server-node/src/modules/runtime-item/runtimeItemModule.ts` - `server-node/src/modules/quest/runtimeQuestModule.ts` 判断: **世界 profile 到实时生成规则的映射,在后端链路上是不完整的。** --- ## 5.3 高优先级问题:世界级 `items` 没有真正接进主生成链 类型里存在: - `CustomWorldProfile.items` 构建器也支持: 1. item 归一化 2. `attributeResonance` 3. item knowledge facts 但真正的世界生成主链里: 1. orchestrator prompt 明确要求不要预生成物品档案 2. `attachRuntimeGenerationMetadata(...)` 会把 `items` 直接压成空数组 这会带来两个结果: 1. 世界 profile 的“世界级物品层”几乎为空 2. 运行时背包、掉落、交易更多依赖程序化生成和角色初始物品 于是目前的物品系统更像: 1. 有角色初始物品 2. 有运行时程序化物品 3. 但没有稳定的“世界物品图谱” 这意味着: **世界 profile 在物品层没有形成完整映射。** 相关文件: - `server-node/src/modules/ai/customWorldOrchestrator.ts` - `src/services/customWorldBuilder.ts` - `src/data/customWorldRuntime.ts` - `src/data/customWorldCharacterLoadout.ts` - `src/services/storyEngine/knowledgeGraph.ts` 判断: **这是“预设内容”和“实时生成规则”共同缺失的一块。** --- ## 5.4 中优先级问题:`majorFactions/coreConflicts` 仍然是文本种子,不是可操作游戏对象 当前 `majorFactions` 与 `coreConflicts` 已经被大量消费,但主要消费方式是: 1. 拼进 `ThemePack` 2. 派生 `WorldStoryGraph` 3. 派生 `AuthorialConstraintPack` 4. 派生 `FactionTensionState` 问题在于它们还没有形成: 1. 可索引 faction 实体 2. faction 与 NPC 的显式归属关系 3. faction 与场景/商店/敌对阵营的显式绑定 4. 冲突与任务/势力状态的强约束关系 当前更多是: **“文本里提到过 -> 图谱做字符串匹配 -> 运行时拿去写 prompt”** 而不是: **“世界里真的存在这些派系与冲突对象,并驱动交互规则”** 相关文件: - `src/services/storyEngine/themePack.ts` - `src/services/storyEngine/worldStoryGraph.ts` - `src/services/storyEngine/factionTensionState.ts` 判断: **已有映射,但离“完全落地”为具体游戏内容对象还有明显距离。** --- ## 5.5 中优先级问题:场景预设会额外注入模板怪物,弱化 landmark 的原始设定控制力 `buildCustomScenePresets(profile)` 在每个 landmark scene 中,除了把 `landmark.sceneNpcIds` 指向的角色放进去,还会: 1. 从怪物 preset 池按 scene index 截两只怪 2. 直接拼进 `combinedNpcs` 这意味着即使 profile 本身没有明确要求某个 landmark 出现这些敌对实体,运行时场景仍会被额外补入模板怪物。 这会导致: 1. 场景内容不完全由 `landmark + storyNpcs` 决定 2. 地标设定与实际可战斗内容之间存在偏移 3. 跨题材世界会更容易被模板怪物池拖偏 相关文件: - `src/data/scenePresets.ts` - `src/data/customWorldNpcMonsters.ts` 判断: **landmark 到实际场景实体池的映射,不是完全忠实映射,而是“设定 + 模板补丁”。** --- ## 5.6 中优先级问题:后端运行时物品线程并不是真正世界线程 前端剧情链里的 `activeThreadIds` 来自: 1. `storyEngineMemory` 2. `storyGraph` 3. `knowledgeFacts` 4. `visibilitySlice` 但后端 `runtimeItemModule` 的 loose context 里,`activeThreadIds` 只是: 1. `thread:${encounter.id}` 2. 或 `thread:${scene.id}` 这不是世界线程图谱,而是临时合成 id。 结果是: 1. 名义上后端物品模块也有“active threads” 2. 实际上它拿到的并不是 `WorldStoryGraph` 中的真实线程 这会让运行时物品的“为什么现在出现”更像局部上下文推断,而不是来自世界故事结构。 相关文件: - `server-node/src/modules/runtime-item/runtimeItemModule.ts` 判断: **这是实时生成规则层的结构性弱映射。** --- ## 5.7 中优先级问题:`referenceProfile.roleArchetypes` 只从 playableNpcs 派生,storyNpcs 覆盖不够 当前 `roleArchetypes` 的编译来源是: 1. `profile.playableNpcs.slice(0, 6)` 而不是: 1. `playableNpcs + storyNpcs` 的综合原型池 这导致两个问题: 1. 世界里的长尾 story NPC 原型没有进入 reference archetype 编译 2. 某些场景角色/怪物/平民的模板骨架选择更多依赖启发式 fallback 这会让: 1. 可玩角色映射较稳定 2. 长尾场景角色映射不够稳定 相关文件: - `src/services/customWorldOwnedSettingLayers.ts` - `src/services/customWorldReferenceSignals.ts` - `src/data/characterPresets.ts` 判断: **参考层映射存在明显“主角优先、长尾不足”的偏差。** --- ## 5.8 低优先级问题:创作元数据并未进入正式游戏运行时 `creatorIntent / anchorPack / lockState / anchorContent` 当前主要服务于: 1. 创作工作区 2. Agent session 3. 结果页和编辑器 它们对正式运行时的直接作用主要是: 1. 参与 `ownedSettingLayers` 的编译 但不会直接变成: 1. 正式战斗规则 2. 场景交互规则 3. faction 状态 4. 任务目标约束 这不一定是 bug,但如果把“世界 profile 设定”理解为所有 profile 元数据,那么: **创作层数据目前并没有完整进入游戏运行时。** --- ## 6. 分层判断 ## 6.1 预设内容映射判断 ### 已经合理接入的部分 1. 可玩角色 2. 场景角色 3. 地标场景 4. 属性 schema 5. 资源术语 6. 初始货币 7. camp 开局归处 8. 默认场景图匹配 ### 仍然不足的部分 1. 世界级 items 2. faction 实体化 3. 冲突到任务/场景状态的强绑定 4. 跨题材世界的模板偏置问题 5. 地标与怪物注入之间的忠实性 结论: **预设内容层是“能跑且已有骨架”,但还不是“设定完全落地”。** --- ## 6.2 实时生成规则映射判断 ### 已经合理接入的部分 1. 主剧情 prompt 2. NPC 可见性控制 3. 私聊与对话 prompt 4. 叙事线程图谱 5. 事实图谱 6. 作者性约束与 QA ### 仍然不足的部分 1. 后端任务模块 world profile 过瘦 2. 后端物品模块 world profile 过瘦 3. 后端物品线程是伪线程 4. 世界级 item 图谱为空 5. faction/conflict 仍偏语义层,不够规则化 结论: **实时生成规则层呈现出“前端剧情链强、后端奖励链弱”的不均衡状态。** --- ## 7. 最终判定 如果问题是: **“世界 profile 设定是否已经完全地、合理地映射到游戏的预设内容、实时生成内容规则中?”** 我的结论是: **没有。** 更准确地说: 1. 已经完成了主干映射。 2. 但还没有完成全量映射。 3. 也还没有完成跨题材下的合理映射。 当前系统最准确的状态是: **世界 profile 已经成为真实驱动源之一,但还没有成为所有预设内容与实时规则的一致单一真相源。** --- ## 8. 建议的修复优先级 ## P1:先补“真实消费不完整”的链路 1. 让后端 `runtimeItemModule` / `runtimeQuestModule` 接收完整 `customWorldProfile` 子集 2. 至少补进: - `ownedSettingLayers` - `storyGraph` - `knowledgeFacts` - `themePack` - `majorFactions/coreConflicts` --- ## P1:把 `templateWorldType` 退回兼容字段,而不是主导字段 1. 生成期保留兼容输出 2. 运行时优先读取: - `ownedSettingLayers` - `themeMode` - `referenceProfile` 3. 不再让 `WUXIA/XIANXIA` 主导现代/科幻/海洋/裂界世界的视觉与怪物选择 --- ## P1:补世界级 item 层 1. 允许世界生成阶段产出一批世界级 items seed 2. 让 `knowledgeFacts / runtime item / quest reward / treasure hint` 能挂到这些 seed 上 3. 形成“世界物件图谱”,而不是只有角色初始物品和程序化临时物品 --- ## P2:把 faction/conflict 从文本种子升级成结构对象 1. faction 实体 2. faction -> NPC 归属 3. faction -> 场景控制 4. conflict -> 任务/线程/场景压力绑定 --- ## P2:去掉地标场景里的固定模板怪物补丁式注入 1. 优先使用 landmark 自己的敌对角色设计 2. 模板怪物只作为缺口补位 3. 补位也要受 landmark/theme/thread 约束 --- ## P3:扩充 reference archetype 的来源 1. role archetypes 不只从 playableNpcs 编 2. storyNpcs 也应参与 archetype 归纳 3. 为平民、敌对、怪物、势力成员建立更细 archetype --- ## 9. 一句话总评 **当前世界 profile 已经能驱动游戏,但还没有彻底收束成“所有预设内容与实时生成规则都优先读取它”的单一真相源。主链可用,边链仍散,跨题材合理性仍偏弱。**