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