SillyTavern 世界书详解:预算怎么分、递归怎么控,中文要先关一个开关
上一篇SillyTavern 角色卡格式里提到了内嵌世界书,但只是点到为止。真正让酒馆「记得住设定又不烧光上下文」的,是世界书这套机制本身。这篇把它拆完。
内容依据 SillyTavern 官方文档的 World Info 章节。我把里面最容易踩的几个设置单独拎出来讲,尤其是一个对中文用户几乎是必修课、但中文教程基本不提的开关。
一句话结论:SillyTavern 世界书是一个「只在关键词出现时才翻页」的动态词典
- 只有
Content字段会进提示词,标题、关键词、备注都不占上下文。所以每条都得写成能独立看懂的一段话。 - 预算是硬墙:额度用完,后面就算关键词命中也插不进去。表现就是「角色突然失忆」。
- 中文要先关一个开关:
Match whole words默认开启,官方明确说它会伤害没有空格分词的语言。中文条目不开这个关,命中率会莫名其妙地低。
1)它到底在做什么
官方把世界书描述成一个动态词典:平时不占位置,只有当扫描范围内的聊天文本出现你的关键词时,那一条才会被注入提示词。
这里有个必须说清楚的边界:世界书是在「引导」模型,不是「保证」。设定被注入了,不等于模型一定会在回复里体现出来。如果你发现设定进了上下文但角色还是不像,问题通常在角色卡的示例对话,而不在世界书。
另外,从 v1.12.6 起,被扫描的消息前面会带一个 \x01 加说话人名字。这个改动是为按说话人写的正则服务的——比如只让「角色」说的话能触发某条设定,而不是你随便提一句就触发。
2)触发条件:主关键词与次级关键词的四种组合
主关键词默认不区分大小写,逗号分隔。也可以写成 JavaScript 风格的正则,用 /.../ 包起来并带标志位。注意一个细节:正则里可以有逗号,而纯文本模式下的逗号是分隔符——两者混用时容易判断错。
次级关键词(界面里叫 Optional Filter)是配合主关键词用的,有四种模式:
| 模式 | 命中条件 | 典型用法 |
|---|---|---|
| AND ANY | 主关键词 + 至少一个次级词 | 「剑」出现,且提到「锈」或「断」,才解释这把剑的来历 |
| AND ALL | 主关键词 + 所有次级词都在 | 两个条件同时满足才展开,防止误触发 |
| NOT ANY | 主关键词在,且没有任何次级词 | 排除式触发,避开已经处理过的话题 |
| NOT ALL | 次级词全部出现时反而被阻断 | 反向排除,优先级最高的一种过滤 |
次级词是这套机制里最被低估的部分。很多人把所有设定都塞成独立条目,结果一聊到某个场景就同时激活七八条,预算瞬间打满。用次级词把「宽泛主题」收窄成「具体情境」,比事后调预算有效得多。
3)中文用户必修:Match whole words 这个开关
官方文档在 Match whole words 这一项写得很克制,但信息量很大:它默认开启,作用是让单个词的关键词只匹配完整的词;文档同时警告,这会伤害那些不用空格分隔单词的语言。
中文正是不用空格分词的语言。也就是说,如果你写了个「回廊」当关键词,在默认设置下,它可能只在恰好独立成词的位置被认出来,而正常写作里「穿过回廊时」这种连续文本就未必能命中。
我的建议很直接:中文条目一律在条目级别关掉这个开关,然后自己实际测一遍。官方给了条目级的覆盖选项,所以不用为了中文把所有条目都改掉——只改中文的那几条就行。
这条经验之所以重要,是因为它的症状太容易被误判。命中不了,你会以为是预算不够、或者以为是模型失忆,然后去调一堆别的参数,其实只是一个勾选框的问题。
4)插到哪里:位置、深度、角色
条目插进提示词的位置不止「前面」和「后面」两种。官方列出的选项包括:角色定义之前、角色定义之后、示例消息之前、示例消息之后、作者注释顶部、作者注释底部、以及指定聊天深度(@ D)和 Outlet。
| 位置 | 适合放什么 |
|---|---|
| 角色定义之前 / 之后 | 长期设定、世界观、行为规则 |
| 示例消息之前 / 之后 | 需要影响说话风格的示范性内容 |
| 作者注释顶部 / 底部 | 强指令、风格约束(需先启用作者注释) |
| @ D(聊天深度) | 紧贴最近对话的临时设定,Depth 0 是最底部 |
| Outlet | 供其他位置用 {{outlet::名字}} 调用的共享内容 |
两个容易出错的细节:Outlet 的名字区分大小写,前后带空白也会失效,名字缺失的条目会被直接跳过。{{outlet::名字}} 是调用语法,写错一个字整条就不进上下文。
5)预算到底按什么顺序分配
这是最该理解的机制,官方给的顺序很明确:
- 第一步:蓝色圆圈(常驻)条目先拿预算。
- 第二步:剩下的按
Insertion Order从大到小排,数字越大越靠前排、也越靠上下文末端。 - 第三步:直接命中关键词的条目,优先于「被其他条目内容点名拉进来」的条目。
- 第四步:额度一到上限,后面即使命中也全部不进。
所以常驻条目是把双刃剑:它们每轮必进、还抢在最前面吃预算。几条写长的常驻条目,足以让整个世界书失效,而你在界面上看不出任何报错——只有「设定怎么不进来了」这一个症状。官方提供了「超出预算时弹提示」的开关,建议打开,让问题暴露出来。
预算可以按上下文百分比或绝对 token 数两种方式设。按百分比更省心,换模型时不用重设;按绝对值更可控,适合你已经压测过每条长度的情况。
6)递归:谁拉谁,拉几层
递归扫描就是「一条条目的内容里提到了另一条的关键词,于是把另一条也拉进来」。它适合做多层展开:聊到某个地点,先激活地点的总述,总述里提到的子区域再各自展开。
三个条目级的开关要分清:
- Non-recursable:这条不能被别的条目拉进来,只能靠直接命中。
- Prevent further recursion:这条不能再拉别人,到此为止。
- Delay until recursion:这条只在递归轮次出现,不参与首轮直接命中。
全局这边有两个互斥的选项,只能二选一:
Max Recursion Steps 限制嵌套层数。设 0 就只受预算限制,设 1 实际上等于关闭递归,设 2 允许一层递归,依此类推。Min Activations 则是反向思路:不管扫描深度,一直往更早的聊天里找,直到凑够指定条数为止,但受 Max Depth 和预算双重限制。
选哪个看你的目标:想要「稳定激活一批设定」用 Min Activations,想要「严格控制成本」用 Max Recursion Steps。混用的想法不成立,界面本身也会拦住你。
7)时序与互斥:让设定有节奏
三个时间维度的字段,都以「消息条数」计:
- Sticky:激活后保持 N 条消息,期间跳过概率判定。
- Cooldown:激活后 N 条消息内不能再激活,可以接在 Sticky 之后形成「先出现、再冷却」的节奏。
- Delay:聊天至少要凑够 N 条才允许激活。Delay 2 就是前两条消息时它不进上下文。
官方注明了几条边界:这些效果只在激活时所在的那条聊天里生效,分支会继承父分支的状态;滑动或删除最后一条消息会清除生效中的效果;编辑条目则会强制移除它自己的效果;重复触发不会延长已有时长。
还有一个经常被忽略的字段——Probability(触发概率)。它在所有激活方式之后生效,常驻、关键词、递归都一样:100 必进,50 是一半概率,0 永不进。想让某条设定「偶尔才冒出来」制造自然感,这是唯一正确的位置。
互斥组(Inclusion Group)解决的是另一种问题:同一组里多条同时命中时,只会插一条。默认按组权重随机选;勾了 Prioritize Inclusion 就改成取 Order 最大的那条;再用 Use Group Scoring 的话,会先按命中关键词数量筛出得分最高的那部分,再做选择。组权重默认是 100。
8)几套可以直接套的场景
场景一:角色专属设定书。扫描深度 4,预算给到上下文 8% 左右。常驻条目控制在 2 条以内(人物底线设定),其余全部走关键词 + 次级词收窄。中文条目关掉 Match whole words。
场景二:大世界观。用递归做分层:一层总述(关键词是地名),二层细分(关键词是具体建筑或人物)。Max Recursion Steps 设 2,再多就会连锁失控,预算很难预测。
场景三:行为规则与风格约束。这类内容不适合走关键词——它必须每轮生效。放常驻条目,并且放在作者注释位置而不是角色定义里,因为位置越靠上下文末端影响越强。但也正因为常驻,条数一定要少、每条一定要短。
另外,官方还提供一套多来源合并策略:聊天的、用户人格的、角色的、全局的这四本世界书可以合在一起。默认是 Sorted Evenly,忽略来源、统一按 Insertion Order 排序;也可以选 Character Lore First 或 Global Lore First,让某一来源整体排前面。如果你发现角色的专属设定总被全局书挤掉,改这个策略比调预算更直接。
9)五个高频坑
- 只写关键词不写内容。标题和关键词不进提示词,只有 Content 会进。条目内容必须自成一段、能独立看懂。
- 中文没关 Match whole words。命中率莫名偏低,先查这里,别急着调预算。
- 常驻条目太多太长。抢在预算最前面,几条就能把整本书废掉。打开「超出预算弹提示」让它现形。
- Outlet 名字打错或带空格。区分大小写、前后空白会导致失效,条目会被静默跳过。
- 以为 Min Activations 和 Max Recursion Steps 能一起用。两者互斥,只能选一个。
小结:世界书是给提示词做预算管理
拆完会发现,世界书本质上不是「写设定」的工具,而是一套提示词预算管理机制。设定写得多不是本事,能在有限预算下让该出现的出现、不该出现的安静待着,才是。
三个优先级我建议按这个顺序来:先修触发(关掉中文那个开关、用次级词收窄),再控预算(少开常驻、打开溢出提示),最后才调位置和时序。顺序反过来做,很容易在一个你没意识到的问题上反复调参。
至于模型本身,上一篇已经说过酒馆不提供,这里不重复。世界书能让设定不丢,但角色稳不稳定,最后还得看接的那个 API 质量如何。俱乐部的拼车方案覆盖了常见的几家,按用量挑就行。
下一篇可以写接哪家 API 最划算,或者角色卡的提示词注入风险——看你想先要哪个。


