跳到正文
ChatGPT Pro 俱乐部
博客

SillyTavern 世界书详解:预算怎么分、递归怎么控,中文要先关一个开关

10 阅读约 9 分钟读完

上一篇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::名字}} 调用的共享内容
A/N 相关位置需要先启用 Author’s Note;@ D 位置可以用 system / user / assistant 三种角色。

两个容易出错的细节: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 最划算,或者角色卡的提示词注入风险——看你想先要哪个。

参考来源

发表评论

邮箱不会公开,带 * 的是必填项。