
世界图 v2 设计文档
2026-07-22 17:00:00
✨ 心情:研究
# 叙事引擎
# 世界图
# Pi
世界图设计文档
一、概述
- 1.1 世界图是什么——某个时间节点下,故事世界内所有实体在这一刻的截面的集合
- 1.2 与事件图的关系——事件图是所有实体截面变更的序列。世界图是某个故事时间下所有实体截面的集合
- 1.3 设计原则——通过事件图(截面变更序列)可重建任意故事时间的世界图。所有实体的全部截面历史仅限于已发生的故事时间,不涉及未来线
二、世界知识的定义
- 2.1 世界知识的边界——只客观记录故事中出现的实体及其截面与关系,不存储作者的意图。作者处于更高维度,对当前故事世界全知全能,并能按自己意志规划未来,因此作者意图不属于世界图存储范畴。模型本身不需要知道和理解作者为什么这么做
- 2.2 世界知识的维度——世界知识由两个维度构成:状态维度(实体的属性截面)和关系维度(实体间的连接)。时间维度属于事件图,不体现在世界知识中
- 2.3 一条世界知识的完整结构——在三维模型中,一条知识属于状态维度或关系维度。状态声明:实体 + 属性 + 值 + 模态。关系声明:主体实体 + 关系类型 + 客体实体 + 模态。时间由 valid 区间管理。可知范围不是知识声明的字段——它是独立存储的、带时态区间的可见性声明
三、实体类型
- 实体的几何定义:实体是故事空间中的一定体积,截面代表在某个故事时间下其所占有的状态的集合
- 实体的统一定义:故事世界模型只存在唯一一类东西——"实体"。故事世界由三个维度构成——时间维度(事件)、关系维度(实体间的连接)、状态维度(实体具有的属性集合)。一个实体是横跨这三者的存在:在时间维度上有其存续区间、在关系维度上有其连接位置、在状态维度上有其截面
- 3.1 角色——其核心状态集包含"自主意志模型"的实体
- 时间维度:其存续区间由自主决策驱动的行动链构成。角色是唯一能主动发起新事件、从而改变关系维度和状态维度的实体
- 状态维度:其截面必然包含"欲求"、"信念"、"意图"、"情感"等指向未来行动的意志状态。这是它与物品最根本的区别
- 关系维度:它能作为事件的第一因,主动改变自身与其他实体的关系连接
- 3.2 场景——为其他实体提供关系定位参照的弥漫性实体
- 时间维度:变化速率极慢,通常在故事时间跨度内被视为静态
- 状态维度:其截面定义了环境参数(温度、重力、光照等),以及当前"容纳"了哪些实体
- 关系维度:其边界定义了"此处"的范围,其他实体的空间位置通过"所在场景"这一关系来表达
- 3.3 物品——其状态变更完全由外部实体驱动的被动实体
- 时间维度:其截面变更由其他实体的行动触发,自身不发起事件
- 状态维度:其截面聚焦于物理属性(质量、形状、材质等)和可被赋予的符号价值,缺乏意志状态
- 关系维度:在事件链中只能作为因果的中间传递环节,永远不能是第一推动者
- 3.4 概念/规则——其关系维度连接范围等于其有效作用域的弥漫性实体
- 时间维度:其截面变更意味着故事世界底层逻辑的重写,极为罕见
- 状态维度:其截面是对其他实体状态变更的许可或禁止条件
- 关系维度:其连接范围可以是一个房间("禁止喧哗")、一个社会群体("法律")、乃至整个故事世界("物理定律")。它本身不可见,但通过约束和许可其他实体的状态来"显形"
四、关系类型
- 关系分两类。自由关系:标签完全由故事文本决定,解析器识别到什么关系就存什么关系。基础设施关系:引擎保留标签,有固定语义,用于可见性推断等自动化逻辑。当前保留标签:
located_in(实体所在场景)、holds(角色持有物品)、knows(角色认识另一角色)。基础关系必须使用保留标签,否则 character_view 的自动过滤不可靠
五、模态系统
- 5.1 客观事实——作者确认的、在故事世界为真的状态或关系声明。所有概念/规则实体的截面天然属于此类
- 5.2 角色信念——某个角色主观认为为真的声明。可能与客观事实一致也可能冲突
- 5.3 假设/推测——悬而未决的可能性。角色或叙述中"猜测""推断"的内容,未经作者确认
六、事件与因果
- 6.1 事件的结构——事件是截面变更的原子操作,分三类。实体诞生:创建实体节点,设定其存续区间的 valid_from,写入初始截面。实体消亡:将实体节点的 valid_to 设为此事件的故事时间,后续时态查询返回"实体已不存在"。状态/关系变更:闭合旧声明(valid_to ← 当前时间),写入新声明(valid_from ← 当前时间)。事件最少包含:事件类型、故事时间、触发者、涉及的实体和变更内容
- 6.2 事件对世界图的影响——TypeGraph 是状态声明的唯一真源。每条属性声明和关系边各自独立持有 valid_from / valid_to 时态区间。事件不覆盖任何数据,只闭合旧声明的 valid_to 和新声明的 valid_from。entityAsOf(storyTime) 由 TypeGraph 根据时态区间直接查询,不依赖事件日志重放
- 6.3 因果链——事件间的有向因果边:事件 A 导致事件 B。因果链回答"为什么会发生这件事"。因果边不由模型推断,全部来源于作者的显式决策——作者是整个故事世界的唯一驱动源。因果链存储在 JSONL 事件日志中
七、知识可见性
- 7.1 可见性声明——可知范围不是知识声明的静态字段,而是独立存储的、带 valid_from / valid_to 时态区间的声明。每条可见性声明的结构:角色ID + 知识声明ID + 可知状态(已知/未知)+ 确信度(0-1,覆盖半信半疑/模糊记忆等中间状态)+ 获知来源(亲眼目睹/传闻/被灌输等)+ valid 区间。确信度和获知来源为可选字段,不改变查询逻辑,仅丰富角色心智状态的保真度
- 7.2 可见性来源——两条生成路径。第一,作者显式决策:解析器或编辑器中作者直接标记。第二,关系推断:角色的基础设施关系连接到某场景或某实体时,自动生成可见性声明。如角色
located_in场景 A,则自动标记该角色"已知"场景 A 内发生的事件。两种来源可以叠加也可以冲突,冲突时作者显式决策覆盖关系推断 - 7.3 character_view 的计算步骤——给定角色和故事时间。第一步,从 TypeGraph 取该时刻所有 valid 的知识声明。第二步,取该角色在该时刻所有 valid 的 visible_to 标记。第三步,取两者的时间交集——知识声明 valid 期内角色"已知"的时间段。第四步,过滤掉角色处于"未知"状态的知识声明。第五步,按模态过滤(仅客观事实,或包含信念/推测)。输出角色在该时刻的主观世界图
本文由 AIGC 调研生成,仅做研究笔记和参考,真实性需要自行考证。
注意:本文描述的是世界图 v2 版本的设计。原 v1 版本(JSON + Git 存储)已废弃。