文件系统布局
角色扮演根目录包含 worlds/<world-folder>/、presets/<名称>/、lorebooks/<名称>/、avatars/ 和 sessions/<uuid>/。世界拥有自己的实体、提示词和图片,还可用 calendar.json 定义自定义节日及季节所依据的半球,用 dice.json 定义主持人掷的骰子检定(故事开始时复制进故事);化身以特殊仅角色世界保存;每个会话包含 session.sqlite、settings.json、opening.json、timeline.json 和 images/。世界、根目录和会话中的 ui/<包>/ 文件夹保存界面包:世界自带的、你自己的,以及会话实际使用的副本。
启用多设备同步后,根目录的 .sync/state.json 保存这台设备的修订与冲突状态。.sync/ 只属于本机,永远不会复制到远端;插件配置与凭据也仍由 DSH 配置档案管理。
presets/ 中的每个文件夹是一个预设:preset.json(标题、描述、建议温度)以及它带有的叙述提示词。故事开始时会复制一份提示词,并在数据库旁保存 preset.json 来记住它们的来源。
lorebooks/ 中的每个文件夹是一本世界书:lorebook.json(标题、描述)以及它的条目,每个条目采用世界自己的设定资料的格式,并始终写明适用范围。故事开始时会复制一份条目,并在数据库里记录它们来自哪些世界书。
世界文件夹名不是身份,world.json.id 才是会话保存的持久世界引用。实体 ID 在导入数据库时映射成内部整数,同时保留源 ID。
会话文件夹使用 UUID。对应 DSH 对话 ID 由 session-<uuid> 推导,无需另存。session.sqlite 是演化状态的权威来源,settings.json 是实时配置;opening.json 和 timeline.json 保存足以在故事从另一台设备到达后重建本机 DSH 对话的呈现记录。
参考图文件名稳定;场景图使用时间线节点和序号。元数据和伴随文件使图库在没有数据库时仍可理解。