Skip to content

写好条目的技巧

条目是你创建世界时最重要的元素。平台上每个世界都在用它们。排名第一的世界(大逃杀,已有近 2000 次游玩)有 27 个条目,零条规则——整个游戏完全靠精心编写的条目运转。

本指南教你写出让世界活起来的条目。关于条目和分区的基础知识,请参阅入门指南:条目


好条目和优秀条目的区别

看看平台上最多人玩的世界,你会发现一个规律。打造热门世界的创作者并不比其他人用了更多功能,而是写出了更好的条目。

一个平庸的角色条目:「Alicia 是个精灵法师。她喜欢讽刺,爱好植物。」

一个优秀的角色条目:「Alicia 说话时语气温柔,但被激怒时会用植物比喻当武器。她暗中对人类着迷,但绝不会承认。被逼到情感角落时,她会用植物学冷知识打岔。她最大的秘密是极度害怕蜈蚣。」

区别在哪里?前者告诉 AI 这个角色什么。后者教 AI 这个角色会怎么做。行为才是让角色鲜活的关键。


写出有血有肉的角色

平台上最好的世界在角色条目上投入最多。以下是经过验证的方法。

用行为描述性格,而非标签

不要只列出性格特点。描述这些特点在实际中如何表现。

不要这样写:

Rin 害羞、聪明、善良。

要这样写:

Rin 初次见面时回避眼神接触,对着地板说话。但当话题涉及她研究过的领域时,她的姿态完全改变——身体前倾,直视对方,语速飞快地说出完整的句子。她的善良近乎强迫性:看到有人在挣扎就忍不住伸出援手,即使要付出代价。

AI 无法持续演绎「害羞」。但它可以持续演绎「回避眼神接触,对着地板说话」。

关系阶段

最沉浸的世界会根据玩家与角色的熟悉程度改变角色的行为方式。樱花季在这方面做得很出色:三位女主角每人都有四个好感度级别(0-25、26-50、51-75、76-100)的行为描述。

你可以通过条件条目实现这一点——只在变量达到阈值时才激活的条目:

  • 初期(好感度 0-25):正式、警惕、浅层对话
  • 信任增长(好感度 26-50):开始分享观点,偶尔展露脆弱
  • 亲密(好感度 51-75):内部笑话、自在的沉默、主动求助
  • 深厚羁绊(好感度 76+):完全敞开心扉、独特的说话方式、保护欲

每个阶段是一个带条件的独立条目。随着关系变量变化,AI 收到的指导会自动切换。

如何设置

为每个关系阶段创建一个条目。每个条目放在 Chat History 中并设置条件:

条目:「Rin — 初期」

  • 条件:rin_affinity 小于 26
  • 关键词:Rinhershe(也可以留空,只用条件)
  • 内容:Rin 在这个阶段的警惕行为和说话方式

条目:「Rin — 信任增长」

  • 条件:rin_affinity 大于等于 26 且小于 51
  • 关键词:同上
  • 内容:Rin 在这个阶段如何敞开心扉

以此类推。引擎每回合检查条件,只发送匹配的阶段。

完整 schema 参考 → World Spec: Entries

角色卡公式

研究了数十个成功世界后,以下是有效的模式:

  1. 身份(1-2 句):名字、角色、核心特质
  2. 外貌(2-3 句):玩家看到什么。具体细节,不要泛泛描述
  3. 行为模式(主体部分):怎么说话、紧张/愤怒/开心时的反应、习惯、矛盾之处
  4. 与玩家的关系:初始如何看待玩家、什么会改变看法
  5. 秘密:AI 知道但角色不会轻易透露的事

行为模式部分是大多数创作者投入不足的地方。而这恰恰是魔法发生的地方。


知识库:按需提供上下文

知识库是关键词触发的条目系统。这就是为什么你可以构建一个拥有 50000 字设定的世界,AI 依然快速而精准。

设计好的关键词列表

引擎会扫描最近几条消息中的关键词。任何一个关键词匹配就会触发条目(OR 逻辑)。想想玩家可能会怎么提到某个东西:

关于酒馆的条目:

  • taverninnbardrinkbartenderpub

关于一个叫樱井公香的角色:

  • KimikaSakuraiclass repclass representative

全词匹配:当短关键词可能导致误触发时启用。不启用的话,关键词「art」会匹配到「start」、「heart」和「apart」。

二级关键词实现精准匹配

有时单个关键词不足以判断条目是否相关。二级关键词让你添加第二层过滤:

模式含义使用场景
AND_ANY主关键词匹配且至少一个二级关键词匹配「forest」+ 任一 ["elf", "danger", "ruins"]
AND_ALL主关键词匹配且所有二级关键词都匹配「forest」+ 同时出现 "night" 和 "danger"
NOT_ANY主关键词匹配且没有任何二级关键词匹配「forest」但不含 "safe" 或 "peaceful"
NOT_ALL主关键词匹配且并非所有二级关键词都匹配「forest」但不同时出现 "safe" 和 "day"

最常用的AND_ANY,用于主题交叉。比如你希望「暗黑森林传说」条目在玩家同时提到森林和某些不祥之物时才触发,而不是随便提到树就触发。

深度注入:条目在聊天中的位置

关键词触发的条目不会像 System Presets 那样放在 prompt 顶部。它们被注入到聊天记录的特定位置。depth 设置控制具体位置。

depth: 4 意味着条目出现在聊天末尾往前数第 4 条消息的位置。这让它更像是最近对话的自然组成部分,而不是来自上方的系统指令。

depth 数值越小(越靠近末尾),AI 关注度越高。数值越大(越靠前),越像背景上下文。

技术细节:depth 如何工作

假设聊天记录如下:

[1] User: Hello
[2] AI:   Hi there
[3] User: Where's the forest?
[4] AI:   Head north
[5] User: Alright, let's go

depth 为 2 的条目会插入到消息 [4] 之前:

[1] User: Hello
[2] AI:   Hi there
[3] User: Where's the forest?
--- [条目内容插入此处] ---
[4] AI:   Head north
[5] User: Alright, let's go

depth 0 将条目放在最末尾(类似 Post Instructions)。

完整参考 → World Spec: Entries


状态驱动条目

最强大的条目不等待关键词。它们响应的是世界本身的状态。

条件让你根据变量值来控制条目的激活。这比关键词触发更可靠,因为你不是寄希望于玩家说出正确的词——系统读取的是实际的游戏状态。

实例:同伴态度

流浪日记使用条件来改变同伴对玩家的行为。每个同伴都有基于好感度阈值的条目:

  • xiaoyue_affinity < 30:条目描述小月谨慎而疏远
  • xiaoyue_affinity >= 30 AND < 60:条目描述逐渐温暖和信任
  • xiaoyue_affinity >= 60:条目描述深厚的忠诚和脆弱

玩家看不到这些机制。他们只会感受到一个随着关系加深而逐渐敞开心扉的同伴。

条件 + 关键词组合

两者可以结合使用。当条目同时有关键词和条件时,两者都必须通过才能激活。这创造了精确的上下文触发器:

  • 关键词:Kimikaclass rep
  • 条件:day_count > 3
  • 效果:NPC 的背景故事只在第 3 天之后玩家提到她时才显示

这能防止信息在故事中过早出现。

七种比较运算符

运算符含义适用场景
eq等于精确状态检查(「location 等于 cave」)
neq不等于排除(「不在新手区」)
gt大于阈值(「好感度超过 50」)
gte大于等于包含边界的阈值
lt小于低值触发(「生命值低于 20」)
lte小于等于包含边界的低值
contains字符串包含部分文本匹配

多个条件通过 All(所有条件都必须通过)或 Any(任一通过即可)组合。


进阶技巧

递归:链式上下文

当条目 A 触发后,它的内容中提到了条目 B 的关键词,B 是否也应该触发?这就是递归。默认关闭(设置中递归深度 = 0),但对于设定高度互联的世界可以开启。

谨慎使用。 深层递归链会消耗大量上下文。大多数世界保持在 0 或 1。

两种安全控制:

  • Prevent Recursion:此条目可以被触发,但其内容不会扫描其他条目。「我可以被唤醒,但不会叫醒别人。」
  • Exclude Recursion:只有玩家实际输入的文字才能触发此条目。完全对递归扫描不可见。

API 角色覆盖

默认情况下,所有条目作为 system 消息发送。但你可以改变 AI 如何解读它们:

  • Instruction(system):默认值。AI 将其视为需要遵守的规则。
  • User:AI 认为这是玩家说的。某些模型对 user 消息赋予更高权重。
  • Assistant:AI 认为这是自己说的。适合「预填」回复风格。

示例对话

标记为示例的条目会得到特殊处理。引擎将它们解析成 user/assistant 消息对,这样 AI 看到的是实际的对话样本,而不是一段文本。

格式:

<START>
{{user}}: Can you heal this wound?
{{char}}: *examines the wound, frowning* This isn't a normal knife wound.
There's a curse residue. I need moonflower pollen... but it's daytime.
<START>
{{user}}: So what do we do?
{{char}}: *shrugs* Either wait for nightfall, or you endure it.
I recommend the latter — pain is the best teacher.

<START> 分隔不同的对话示例。{{user}}{{char}} 是宏,会被替换为实际的玩家和角色名称。

几个好例子胜过很多。 2-3 个能捕捉角色声音的对话样本,比 10 个让 AI 机械模仿的样本更有效。

正则表达式关键词

关键词也支持正则表达式。以 /pattern/flags 格式编写(例如 /dark\s*forest/i),引擎会将其作为正则而非字面字符串处理。当简单关键词无法覆盖灵活的表述时非常有用。

扫描深度和 token 预算

引擎不会扫描全部聊天记录来查找关键词——那太浪费了。世界设置中的 lorebookScanDepth(默认为 2)控制检查最近多少条消息。你可以在编辑器的知识库部分的 Entry Settings 中修改。值越高匹配越多,但处理开销也越大。

还有 token 预算限制:lorebookBudgetPercent(默认 100%)和 lorebookBudgetCap(默认无限)限制触发条目消耗的总 token 量。超出预算时,匹配分数更高的条目优先。

文件夹组织

当世界有几十甚至上百个条目时,侧边栏列表会变得难以管理。编辑器支持文件夹——把条目拖入逻辑分组(所有 NPC 一个文件夹、所有地点设定一个文件夹)。文件夹纯粹是组织工具,对运行时行为、匹配或注入顺序没有影响。

位置排序

在每个分区内,条目按 position 编号排序(越小越靠前)。支持小数,所以你可以通过设置 2.5 把条目插入到位置 2 和 3 之间。

System Presets 中靠前的条目缓存效率更高,所以把最稳定的内容(角色描述、世界规则)放在较低的位置,可能变动的内容(动态指令)放在较高的位置。


常见错误

关键词条目没有关键词或条件。 如果你把条目放在 Chat History 中但忘了添加关键词或条件,它永远不会触发。始终发送的条目应放在 System Presets 中。

条件条目范围重叠。 如果「Rin — 初期」覆盖好感度 < 30,而「Rin — 信任增长」覆盖好感度 > 25,那么 26-29 之间两个都会激活。使用不重叠的范围:< 26>= 26 AND < 51

关键词太具体导致永远不匹配。 如果你关于「水晶圣殿」的条目只在 crystalline sanctum 时触发,玩家输入「crystal place」或「that temple」就永远看不到它。要站在玩家的角度思考他们实际会怎么称呼事物,而不只是用规范名称。

重要上下文的深度注入太深。 depth 为 8 的条目被埋在聊天记录深处,AI 几乎不会关注它。重要内容保持在 depth 2-4。更高的深度留给背景点缀。


延伸阅读

完整 schema 参考 → World Spec: Entries & Sections