三种最常见的“世界裂缝”
先不谈方案,看看多轮生成里矛盾通常长什么样。下面是几种最常见的类型,场景都是示意。
- 事实矛盾:北区电站在设定里已经废弃,后面生成的任务却让玩家为它接线。
- 空间矛盾:地图上贫民区在山顶,剧情里却说他们住在“最低洼的河谷”。玩家从地图和文字两个方向都能发现不合理。
- 人物矛盾:一位沉默寡言、警惕生人的情报贩子,在第二轮生成的对白里热情地和陌生玩家拉家常。
- 时间矛盾:某项技术在第20年出现,但更早的历史事件里已经有人在使用它。
- 命名与规则矛盾:同一个势力,一处叫“铁港同盟”,另一处叫“铁港商会”;魔法在开篇里需要代价,后面又可以随便使用。
这些问题的共同点是:每一个局部看都合理,合在一起才露出裂缝。正因为如此,单纯让模型“写得更认真”并不能解决。
为什么模型自己保持不了一致
原因很朴素。语言模型每次生成,只能看到提示里的内容和自身训练出的常识,之前生成过的设定如果不在提示里,就等于不存在。即使放进去,也会遇到几个问题:
- 上下文长度有限,世界越大,越装不下全部设定。
- 装得下也未必都被用到,很多细节会被“平均化”成常见套路。
- 多次生成之间没有共享的事实来源,各自发挥。
- 创作者中途手动改了设定,模型不知道。
所以一致性不能寄希望于“模型记得”,应当变成一个有存储、有读取、有检查的工程问题。
三层结构:世界圣经、设定库、生成任务
一个合理的设计,是把世界的信息按稳定程度分层。
第一层:世界圣经(World Bible)
用不到一两页的篇幅,写下不可违背的前提:时代与科技水平、几个主要势力及其关系、世界运行的规则(比如魔法需要代价、城市靠海底电缆供能)、叙事基调与禁忌。它的特点是短、稳定、每次生成都要带上。
第二层:设定库(Lore Database)
把地点、角色、组织、物品、事件记录成实体,并把它们之间的联系记成关系,通常用知识图谱来表达,再给每一条设定附上来源、时间点和状态。下面是一个示意的片段:
| 实体 | 关系 | 对象 | 状态与时间 |
|---|---|---|---|
| 北区电站 | 位于 | 旧港区 | 第10年前停摆 |
| 老船长 | 常驻于 | 旧港区码头 | 第一章登场 |
| 铁港同盟 | 控制 | 旧港区 | 当前有效 |
| 修复电站 | 需要 | 备用线缆 | 目前设定库中无此物品 |
有了这样的结构,“北区电站是否仍在运转”就不再是模糊的文本印象,而是一个可以查询的字段。这一层的更多工程细节,可以参考知识图谱怎样记住设定、角色和任务的关系。
第三层:生成任务
每次生成之前,先根据任务从设定库里检索相关的实体和关系,只把这一小块连同世界圣经一起放进提示;生成之后,再把新内容抽取成实体与关系,写回设定库。这样,即使世界很大,每次也只处理它的一个切面。
生成之后的冲突检测
写回之前,是最后一道也是最重要的一道关口。通常的检查有几类:
- 唯一性与互斥:同一个角色不能在同一时间出现在两个地点;已经死亡的角色不能再发言,除非设定里有复活机制。
- 状态与时间线:废弃的设施不能出现在“正在使用”的描述里;事件的先后要与时间线一致。
- 空间与地理:地图上的位置关系要与文字描述一致,比如“河谷”不能被放在标高最高的位置。
- 风格与性格:角色的新对白与其性格标签、既往对白风格做对比,偏差过大则提示。这一点与角色性格、记忆和剧情如何长期一致属于同一类问题。
规则型的检查交给程序,语义型的检查(比如性格是否偏离)可以再交给模型做二次判断,但结果只作为提示,不直接改写设定。
换成“未来城市”走一遍
假设玩家输入:“给我生成一座未来城市。”一个合理的流程大致是:
- 先不急着画地图,先生成一份世界圣经草稿:城市的能源来源、阶层结构、几个势力、这座城市为什么存在,请玩家确认或修改。
- 确认后,把这份草稿的关键事实写入设定库,比如“能源来自海底电缆”“城市分为上下两层”。
- 生成地图时读取这些事实:上层区放置管理机构,下层区靠近电缆登陆点,因为设定里下层依赖海底电缆供能。
- 生成角色与任务时同样先检索:下层的维修工出现在电缆站,而不是上层的行政大楼。
- 任何一步新增的内容都被抽取回设定库,再跑一遍冲突检测。
在金沙娱乐AI的创作思路里,比较看重的是这条“先定设定、再生成、再回写”的链路,而不是一次性输出一大段成品。这样,创作者随时能回到设定库修改某一条事实,并看到哪些已生成的内容受到了影响。
改设定之后,已生成的内容怎么办
创作者改了一条设定,比如把“电缆登陆点在下层”改成“在上层”,此前生成的地图标注、任务文字和角色对白就可能同时过期。一个实用的做法是让设定库记录“哪些生成内容引用了这条设定”,改动之后先列出受影响的清单,再由创作者选择批量重生成或逐条确认。每次改动附带版本记录,出问题时可以回到上一个版本,这一点也是金沙娱乐模型在项目管理层面需要配合的能力。
一致不等于僵硬
最后要提醒的是,一致性并不是把世界钉死。好的世界总会有意料之外的东西:一位角色隐瞒了真实身份,一段历史被后来的人篡改。这些应当被明确标记为“叙述者的说法”或“隐藏真相”,与客观事实区分开来,才能既保留惊喜,又不与检测规则冲突。
可以先做一个很小的练习:写下你的世界里绝对不能变的五条事实,再检查最近一次生成的内容有没有违反其中任何一条。
如果有,说明这个世界缺的不是更多内容,而是那五条被记录下来的事实。