跳转到内容

世界书是怎么工作的

世界书只会在满足激活条件时把条目放进请求。先理解世界书如何工作,再调整具体设置。

世界书(World Info / Lorebook)可以理解成一套按需发送给 AI 的资料库。

每个条目通常包含:

  • 关键词:什么时候调用这条资料
  • 内容:真正发送给 AI 的资料
  • 位置 / 深度:把资料塞到提示词的哪里
  • 顺序(Order):同类条目同时触发时,谁更靠前、谁更靠后

世界书条目的标题、关键词等本身通常不会发送给 AI,真正插入上下文的是条目的内容。


递归扫描允许已经触发的世界书条目,再通过其内容中的文字触发其他世界书条目。

有两个条目:

条目 A

关键词:

爱丽丝

内容:

爱丽丝住在月光城。

条目 B

关键词:

月光城

内容:

月光城是一座建立在巨大湖泊中央的城市。

如果聊天中只出现:

爱丽丝今天去了哪里?

首先会触发:

爱丽丝 → 条目 A

开启递归扫描后,SillyTavern 又会检查条目 A 的内容。

因为里面出现了:

月光城

于是继续触发:

月光城 → 条目 B

最后两个条目都会被发送给 AI。

☎️ 可以把它想象成「打电话叫人」

Section titled “☎️ 可以把它想象成「打电话叫人」”

世界书里的每个条目,就像通讯录里的一个人:

  • 关键词 = 这个人的名字
  • 条目内容 = 这个人说的话
  • 递归扫描 = 允许已经进群的人继续叫其他人进群

例如:

你喊了爱丽丝

↓

爱丽丝进群

↓

爱丽丝说道:

“我来自月光城。”

↓

系统发现「月光城」也是一个关键词

↓

月光城相关条目也被叫进群

这就是递归。


开启 不可递归(Non-recursable) 后:

这个条目不能因为其他世界书条目的内容而被触发。

但它仍然可以被聊天里的关键词正常触发。

相当于这个人设置了:

「别人不能把我拉进群,我只能由用户亲自叫进来。」

例如:

爱丽丝 → 月光城

正常情况下可以递归触发「月光城」。

但如果「月光城」开启了不可递归:

爱丽丝 → ❌ 月光城

只有聊天内容本身出现「月光城」,它才会被正常触发。

注意:「不可递归」并不等于“这个条目不能继续触发别人”。

SillyTavern 还有另一个独立选项:

防止进一步递归(Prevent further recursion)

它的意思正好是:

这个条目可以被触发,但它被触发以后,不允许再利用自己的内容继续触发其他条目。

所以可以简单记成:

不可递归 = 别人不能叫我。

防止进一步递归 = 我进来以后不能继续叫别人。

如果担心递归链太长,与其把所有条目都设为不可递归,更直接的控制方式还有 最大递归次数(Max Recursion Steps) 和世界书 Token Budget。


最常见的三个位置可以简单理解为:

角色定义之前

↓

角色定义

↓

角色定义之后

↓

聊天记录 / 深度 @D

↓

最新消息

↓

AI 开始生成

其中:

条目会放在角色描述、场景等角色定义的前面。

条目会放在角色描述、场景等角色定义的后面。

把条目直接插进聊天记录的指定深度。

其中:

深度 0

最靠近提示词底部。

数字越大,位置越向较早的聊天记录移动。

因此可以简单记成:

深度越小 → 越靠近 AI 即将生成的位置。


🥪 可以把整个提示词想象成一个三明治

Section titled “🥪 可以把整个提示词想象成一个三明治”

例如:

【角色定义之前】
────────────
【角色定义】
────────────
【角色定义之后】
────────────
【较早的聊天记录】
【深度 @D 4】
【聊天记录】
【深度 @D 3】
【聊天记录】
【深度 @D 2】
【聊天记录】
【深度 @D 1】
【最新聊天】
────────────
AI 开始回复

所以:

角色定义之前像是放在角色卡前面的说明书。

角色定义之后像是贴在角色卡后面的补充说明。

深度 @D则像是直接把一张纸条塞进聊天记录里面。

而且:

@D 的深度越小,这张纸条通常就距离 AI 下一次生成越近。


当多个条目位于相同类型的位置时,可以使用「顺序」决定它们的前后关系。

SillyTavern 当前规则是:

Order 数值越大,最终插入的位置越靠后。

例如:

角色定义之前[顺序 10]
角色定义之前[顺序 35]

发送给 AI 时就是:

[顺序 10]
[顺序 35]

再比如:

角色定义之后[顺序 1]
角色定义之后[顺序 100]

结果就是:

[顺序 1]
[顺序 100]

所以最好记成一句话:

Order 越大,同位置下越靠后。

官方文档也明确说明,例如 Order 100 会出现在 Order 250 前面,并指出越靠后的条目通常对输出具有更大的影响。


深度首先决定条目被插入聊天记录的哪一层。

例如:

深度 @D[深度 4]
深度 @D[深度 3]
深度 @D[深度 2]
深度 @D[深度 1]

按提示词从前往后看,大致就是:

深度 4
↓
深度 3
↓
深度 2
↓
深度 1
↓
AI 即将生成

因此:

Depth 越小 → 越靠后、越靠近最新消息。

如果多个条目拥有相同深度,再由 Order 决定它们在该位置中的先后。

例如:

深度 1[顺序 10]
深度 1[顺序 50]
深度 1[顺序 500]

最终就是:

深度 1[顺序 10]
深度 1[顺序 50]
深度 1[顺序 500]

把 Position、Depth、Order 想象成寄快递:

Position(位置)

决定:

「送到哪个小区?」

角色定义之前、角色定义之后、聊天记录……


Depth(深度)

决定:

「送到聊天记录里的哪一栋楼?」

数字越小,越靠近最新消息。


Order(顺序)

决定:

「同一栋楼里的快递怎么排?」

Order 越大,越靠后。

所以:

Position 管大位置,Depth 管聊天中的位置,Order 管同位置条目的先后。


通常来说,越靠近 AI 即将生成的位置,内容越容易对下一条回复产生明显影响。SillyTavern 官方文档也将「角色定义之后」描述为比「角色定义之前」影响更大,并说明较大的 Order 会使条目更靠近上下文末尾,从而具有更大的影响。

因此,非常重要的临时规则、当前状态、回复格式要求等,经常适合放在较浅的 @D 位置。

但不要理解成:

❌「提示词最前面和最后面的内容一定最强。」

不同模型对长上下文的注意力分布并不完全相同,也不存在 SillyTavern 保证的「首尾必定最强」规则。

教程里更准确的说法是:

通常越靠近提示词末尾、越靠近当前对话的位置,对下一次生成的直接影响越明显;但实际效果仍取决于所使用的模型。

下一步阅读:世界书设置。