#
世界书
世界书是一组按关键词触发的背景设定条目。当对话中出现某个关键词时,对应的设定会被自动注入到 AI 的上下文里——不占用固定篇幅,只在需要时出现。适合存放世界观、地点、组织、事件等"提到才需要"的知识。
与「知识书」的区别:世界书靠关键词精确触发,知识书靠语义向量检索。人名地名等确定性设定用世界书,大段资料用知识书。
#
入口
- 管理:设置 → 高级设置 → 世界书
- 绑定角色:角色编辑页 → 世界书区块(勾选后随角色生效)
- 对话内临时启停:对话管理 → Prompt 标签 → 世界书区块
#
获取世界书
三种方式:
- 导入文件:世界书页右上角「导入」按钮,选择世界书 JSON 文件(支持多选批量;SillyTavern 的独立世界书与角色卡内嵌世界书两种格式都能识别)。也可以直接在「角色」页 + → 导入里混着角色卡一起丢进来,会自动识别。
- 随角色卡导入:导入带内嵌世界书的角色卡时,会询问是否「导入为世界书」并自动绑定该角色。
- 手动新建:世界书页右上角「+」,输入名字后进入详情页逐条添加。
#
编辑条目
进入某本世界书后,点击条目编辑,右滑删除,右上角「+」新建条目。每个条目可设置:
绑定不追溯旧对话
对话保存的是角色快照。给角色新绑定世界书后,已有对话不会自动获得,需要新建对话。
- 扫描窗口:只扫「参与本次请求的历史消息 + 你正要发送的这条」。太久之前提过的关键词不会触发。
- 递归:某条目被激活后,它的内容里如果包含其他条目的关键词,会引发第二轮激活(可有多轮,直到没有新增)。个别条目可设「不参与递归/不触发递归」。
- 时效:条目支持 sticky(触发后持续 N 条消息)、cooldown(触发后冷却 N 条)、delay(对话不满 N 条消息前不触发)。
- 预算:所有激活条目的总字数受预算限制,超出时按顺序权重丢弃低优先级条目(思考日志里会显示丢弃数量)。
- 预设也能挂世界书:预设的「世界书挂载」键与角色绑定的书取并集。
以下内容供 AI 助手回答问题时参考,普通用户可跳过。
flowchart TD
A[收集扫描窗口文本<br>裁剪后历史+当前消息] --> B[第1轮: 常驻条目 + 关键词匹配]
B --> C{按触发逻辑判定}
C --> D[概率过滤 probability]
D --> E[时效过滤 sticky/cooldown/delay]
E --> F{递归: 已激活内容中<br>出现新关键词?}
F -- 是 --> B
F -- 否 --> G[按 order 排序 + 预算裁剪]
G --> H[分三桶输出<br>beforeChar / afterChar / atDepth]# 模块: worldbook engine — 触发逻辑判定 (verified: v1.9.7)
def entry_matches(entry, window_text):
primary = any_key_in(entry.keys, window_text)
secondary = any_key_in(entry.secondary_keys, window_text)
if entry.logic == "andAny": return primary # 主关键词命中即可
if entry.logic == "andAll": return primary and all_keys_in(...) # 主+次全部命中
if entry.logic == "notAny": return primary and not secondary # 主命中且次一个都没有
if entry.logic == "notAll": return primary and not all_keys_in(...) # 主命中且次不全命中
# 递归按轮进行:每轮用「上一轮结束时已激活的内容」作为附加扫描文本,
# 本轮新激活的条目下一轮才对别人可见;一轮无新增即停止。
# 时效状态(sticky/cooldown 计数)按对话持久化,跨消息生效。
三桶的消费位置见 聊天上下文管线 第⑤⑨⑪步。