世界书条目:关键词、位置与时机

条目就是世界书里的一条事实,外加一组规则,这组规则决定 Marinara 什么时候把它加进提示词。本指南讲解如何添加条目、选择关键词和条目类型、决定条目落在提示词的什么位置,以及时机控制。

开始之前:先新建一本世界书并打开它。参见世界书总览。

Entries 选项卡

从 Lorebooks(世界书) 面板打开一本世界书。编辑器有两个选项卡:Overview(总览) 和 Entries(条目)。点击 Entries 查看条目列表。选项卡上的角标显示条目的数量。

工具栏有这些控件。

工具栏下方有一行,显示条目数、文件夹数,以及全部条目内容的估算 Token(模型切分文本的最小单位) 总量。

添加和编辑条目

  1. 点击 Add Entry,会出现新的一行。
  2. 在这一行里填写名称。每个条目都必须有名称。名称是给你自己和搜索用的,不是给 AI 看的。
  3. 点击这一行或者行上的箭头,下方会展开一个面板,里面是全部字段。
  4. 在 Primary Keys(主关键词) 里输入一个关键词,按 <kbd>Enter</kbd>。然后在 Content(内容) 里写下给 AI 看的文本。见内容与关键词。

编辑会自动保存。抽屉面板上先显示 Autosaving…,再显示 Saving…,然后显示 Saved automatically。保存失败时文字不会丢失,Marinara 会在你下次编辑时重试。

要复制条目,点击它那一行上的 Duplicate entry(复制条目)。要删除条目,点击 Delete entry(删除条目) 并确认。在电脑上,鼠标指向那一行时才会显示这两个按钮。

内容与关键词

字段说明
Primary Keys触发这个条目的词。输入一个关键词后按 <kbd>Enter</kbd> 添加。任何一个关键词匹配上,Normal 条目就会激活。
Content发给 AI 的文本。写成一条平实的事实。内容里可以用宏,输入框下方会显示 Token 估算。
Secondary Keys(次关键词)额外的关键词,只有 Selective 条目才会用到。
Description(描述)一段简短的摘要,只有 Knowledge Router(知识路由) 智能体会读它。它永远不会发给主模型。参见知识源。

关键词超过 10 个时,列表只显示前 10 个。点击 Show N more(再显示 N 个) 查看其余的关键词,点击 Collapse(收起) 再把它们藏起来。被藏起来的关键词照常参与匹配。

例如,一个名为 Silverhaven 的条目,关键词是 Silverhaven 和 the capital,内容是 Silverhaven is the mountain capital. Its people mine blue crystal and distrust outsiders.,只要最近的聊天里出现其中任意一个关键词,AI 就会收到它。

匹配规则

默认情况下,关键词只要出现在最近聊天里的任意位置就算匹配,不区分大小写。有三个控件可以改变这一点。

只有懂正则表达式时才用 Regex。每个模式运行时都有很短的时间限制,跑得太久的模式就不算匹配,所以模式要尽量简单。例如,\bVlad(?:'s)?\b 能匹配“Vlad”和“Vlad's”。

选择条目类型

点击行上的彩色圆点,打开类型菜单。

每个 Constant 条目在每条消息上都要花 Token,所以要少用。

Selective 条目要添加 Secondary Keys,并选择一个 Logic(逻辑) 按钮。

逻辑条目在这种情况下触发
AND Any至少还出现一个次关键词。
AND All每个次关键词也都出现。
NOT Any没有出现任何次关键词。
NOT All次关键词没有全部同时出现。

例如,主关键词 king、次关键词 Silverhaven,逻辑选 AND Any,只有聊天同时提到这两个词时才触发。

如果没有生效:没有关键词的 Normal 条目无从匹配。给它加关键词,或者改成 Constant。不带关键词的条目仍然可以按意思被找到,但前提是语义搜索已经完全配好。

Position、Depth 和 Order

这几个控件决定激活的条目落在提示词的哪个位置。宽屏时它们就在紧凑行上。窄屏时,点击行上的 Entry quick controls(条目快捷控件) 按钮。

控件作用
Position(位置)条目放在哪里。默认是 Before character definitions(角色定义之前)。
Before character definitions在提示词里放在角色卡之前。行上的标签是 ↑Char。
After character definitions(角色定义之后)放在角色卡之后。行上的标签是 ↓Char。
@ Depth放在聊天记录内部。行上的标签是 @Depth。
Outlet不自动放到任何位置(见下文)。
Depth(深度)只有选 @ Depth 时才显示。条目放在从最新消息往前数第几条消息的位置。默认是 4。
Order(顺序)多个条目同时激活时的先后顺序。数字越小越靠前,预算吃紧需要裁剪时也越不容易被丢掉。默认是 100。

Role(消息角色) 在展开的条目面板里,不在快捷控件里。它把注入的文本标记成 System、User 或 Assistant,只对 @ Depth 有意义,默认是 System。

除非某个条目确实需要,否则这些都保持默认。@ Depth 要少用。那段文字会落在最近几条消息之间,读起来就像有人插了一句话,所以只把它留给模型老是忘掉的规则,或者刚刚发生变化的事实。例如,把“The tavern is now on fire.”放在 @ Depth 1。

Outlet

Outlet 条目只出现在你放置宏的位置。

  1. 把 Position 设为 Outlet,会出现 Outlet name(Outlet 名称) 字段。
  2. 填一个精确、区分大小写的名称,例如 character_rules。
  3. 在预设的某个提示词分区里写上 {{outlet::character_rules}}。

同名的条目按 Order 顺序拼接,中间用换行分隔。Outlet 宏在 Conversation(对话模式)、Roleplay(角色扮演) 和 Game(游戏模式) 聊天的提示词分区里都能用。只有本次回复激活的条目才会出现。它们仍然遵守关键词、概率、筛选、时机、Entry Limit(条目上限) 和 Token Budget(Token 预算) 的规则。没有激活条目时,这个宏什么也不添加。Outlet 条目里不能再调用另一个 Outlet 宏。这个宏的用法见宏。

概率与时机

Probability(概率) 是关键词匹配时条目触发的几率。默认是 100%。设成 25%,每次就有四分之一的几率触发。

Timing(时机) 这组字段控制条目在多条消息之间的行为。四项初始都没有设置,也就是关闭。

字段作用例子
Sticky(保持)条目触发后,再多保持这么多条消息的激活状态,哪怕没有关键词匹配。刚揭晓的秘密设成 3,会在接下来三条消息里保持激活。
Cooldown(冷却)条目触发后,要等这么多条消息才能再次触发。不祥预兆设成 5,最多每五条消息触发一次。
Delay(延迟)聊天进行到这么多条消息之前,条目不能触发。转折设成 20,一开始会保持隐藏。
Ephemeral(限次)激活这么多次之后就自我关闭。0 表示不限次数。开场说明设成 1,只触发一次。

Sticky、Cooldown 和 Delay 按消息条数计算,Ephemeral 按激活次数计算。

Decision 激活

Decision(判定) 字段让你的 Decision 模型(一个专门回答是或否问题的小模型)决定条目是否适用。写一条关于最近聊天的陈述,例如 In the latest message, a dragon is physically present,然后选一种模式。

模式效果
Off(关闭)条目照常激活。这是默认值。
Require(必需)条目照常激活,但只在陈述也为真时才激活。它能过滤顺带的提及。
Trigger(触发)陈述是激活条目的另一条途径,即使没有关键词出现也行。它能捕捉改述和情境。

陈述里可以用 {{user}}、{{char}} 等宏。

开始之前:在 Connections(连接) 面板的 Decision model(判定模型) 下选好一个 Decision 模型。没有 Decision 模型,或者没有答案时,陈述一律算作否。没有设置时,编辑器会提醒你。

重要的条目也要有一条普通的激活途径,Require 只用来过滤可有可无的设定。

Require 只检查已经通过关键词、语义匹配、Constant 或地图位置获得资格的条目,并且只在陈述也为真时才放行。用在 Constant 条目上,它能让条目按情境出现,例如给战斗规则配上 A fight is happening in the latest message。它不会扫描所有未使用的条目。

Decision 陈述会增加模型请求,并且共用 Decision statements per turn(每回合判定陈述数) 这个上限。措辞技巧、限制、成本和答案复用,见编写陈述、限制与成本和答案复用。模型的设置见 Decision 模型。

更多细节:

分组、筛选与其他选项

展开的抽屉面板里还有更多字段。

字段作用
Group(分组)同一分组里的条目互斥,每条回复只激活其中一个。用于几种备选内容,比如三个“今天的天气”条目。配上较低的 Probability,传闻就只会偶尔出现。
Tag(标签)自己用来分类的自由文本标签。不影响激活。
Locked(锁定)禁止 Lorebook Keeper 智能体改动这个条目。参见可下载智能体参考。
No Vector(不向量化)把条目排除在语义搜索之外。参见世界书的语义搜索。
Recursion(递归)允许这个条目的内容再触发别的条目。默认关闭。参见世界书的 Token 预算与递归。

Context filters & matching sources(上下文筛选与匹配来源) 分区可以把条目限定到特定角色、角色标签或生成类型。它还能让条目的关键词额外扫描角色卡的其他字段,比如角色描述。在 Individual(各自独立) 模式的群聊里,每条回复只算写这条回复的那个角色,所以角色筛选能让条目不进入其他角色的回复。在 Merged (Narrator)(合并叙述) 的回复里,聊天中的每个角色都算数,所以只要筛选指定的任意一个角色在聊天里,条目就会保留。它适合只有一个角色知道的秘密。

为一条事实选择设置

先问自己 AI 应该在什么时候看到这条事实,然后对照这张表。

这条事实设置
始终成立Constant。这类条目要少。
只在被提到时才重要Normal,配上具体的关键词,比如 Castle Dracul、the castle、the fortress。
它的关键词是常用词,比如 king 或 homeWhole Words,或者 Selective 加次关键词。
很重要,但很少被直接提到Normal 配合语义搜索,或者放宽关键词。
有好几个版本,绝不能一起出现放进同一个 Group。
模型在场景中途老是忘掉的规则@ Depth,设在 1 到 4 附近。

几个让世界书保持精简的习惯:

举个例子:怎样才能杀死反派这条规则,AI 很容易忘掉。把它设成 Selective,逻辑选 AND Any,开启 Whole Words,Order 设为 10。主关键词用 weakness、kill、destroy、stake,次关键词用 Vlad、the count。有了次关键词,队伍杀狼时它不会出声。Whole Words 让 stake 不会匹配到“mistake”。较低的顺序值让它在条目扎堆的场景里不会被裁掉。

世界书放在哪里,决定了哪些聊天能看到它。全局、关联和嵌入的世界书,见世界书总览和把世界书关联到角色和用户角色。

在条目内容里使用宏

Content 和其他提示词文本一样,发送前会先展开。好用的宏:

完整列表见提示词宏。

开启 Recursive(递归) 后,Marinara 会把已激活条目展开后的内容再扫描一遍。宏产生的文本也能触发更多条目。

关键词测试工具

Entries 选项卡顶部的 Keyword test(关键词测试) 面板不用聊天就能检验关键词。

  1. 展开 Keyword test。
  2. 把一段示例文字或者几条消息粘贴进输入框。

能匹配上的条目会带上绿色高亮和一个 Would activate 标记。Constant 条目会带 Always active 标记。计数行显示有多少个已启用的条目会激活。Include other lorebooks(包含其他世界书) 开关会把你其他世界书里已启用的条目也一起检查。

这个测试不考虑时机、几率、角色和用户角色筛选,也不考虑按意思匹配,所以实际聊天的结果仍然可能不同。

条目文件夹

文件夹把一本世界书内部的条目分组。它和 Lorebooks 面板里的库文件夹是两回事。

只有按 Order 排序且没有搜索时,文件夹才会以分组形式显示。否则你看到的是平铺列表,并附有提示 Folder view paused (clear search and sort by Order)。

故障排查

症状解决办法
条目从来不触发。给它加关键词,或者改成 Constant。确认这本世界书已启用,并且在当前聊天里生效。
某个关键词起过作用,后来不灵了。Marinara 只扫描最近几条消息(Scan Depth(扫描深度),默认是 2)。调高 Scan Depth,加上 Sticky,或者把条目改成 Constant。
条目在不该出现的场景里触发。用 Whole Words、Selective 的次关键词,或者角色筛选。
重要设定被丢掉了。给它一个更小的 Order,或者调高 Token Budget。Chat Settings(聊天设置) 里的 Active Context(活动上下文) 会显示哪些内容被跳过、为什么跳过。参见世界书的 Token 预算与递归。
AI 不理会某个条目。先在 Active Context 里确认它确实激活了。离最新消息很远的事实,分量不如用 @ Depth 放在最新消息附近的事实。

相关指南