Labs · 世界书迁移体检
你的世界书讲五种方言,
搬家前先看哪句会翻译走样。
SillyTavern、Chub、RisuAI、Agnai、JanitorAI 读的都是「同一种」世界书 JSON——然后在概率、大小写、 整词、递归、副关键词上各执一词。把书拖进来,选个目标平台出一份搬家体检:什么会当场坏掉 (JanitorAI 的 1% 导入默认值、Risu 让禁用条目复活)、什么行为会悄悄变、什么被静默丢弃——每条发现 都标着「源码实证」还是「按官方文档」。再贴一段对话,看同一批关键词在各家真实匹配规则下命中还是失手。
世界书(任意平台)
把世界书 JSON 拖进来,或点击选择
点这里选择世界书 JSON 文件
自动识别:酒馆 World Info · Chub · RisuAI 导出 · Agnai 记忆书 · JanitorAI 条目 · V2/V3 书与角色卡或粘贴 JSON
对话样本
载入一本世界书开始体检。
方言表:同一本世界书,五个平台各说各话
同一族 JSON,五套规则书。上面的体检就是照这张表开的方——每格尽量追到对应平台的开源实现,追不到的老实标注「按文档」。
| 行为 | SillyTavern¹ | Chub² | RisuAI³ | Agnai⁴ | JanitorAI⁵ |
|---|---|---|---|---|---|
| 原生文件形态 | World Info 导出——按 uid 键控条目,key/keysecondary 数组 | WI 与 V2 字段逐条双写,外加 extensions.chub | { type: 'risu', ver, data }——键存成一条逗号连写字符串 | { kind: 'memory' }——keywords / entry / priority / weight | 裸条目数组,粘进 JSON 编辑器 |
| 关键词匹配 | 默认子串;可选整词(\W 边界,中文键友好);/斜杠/ 正则键 | 通常在酒馆系前端里跑——看酒馆列 | 转小写并删掉全部空格后做子串——「lamp tower」命中「lamptower」,「ice」在「police」里触发。整词模式按空格切词全等比较(标点挡门) | 恒整词(\b)+ * 和 ? 通配;正则标点会被从键里剥掉;纯中日韩键永远锚不住 | Advanced 脚本:ASCII 归一化整词 + 尾缀通配(welcom*);中日韩/重音字符匹配前就被删掉。简单表单有逐条开关 |
| 大小写敏感 | 全局开关(默认关)+ 逐条覆盖 | 逐条 case_sensitive——但蛇形字段酒馆引擎不读 | 非正则路径恒不区分 | 恒不区分(giu 旗标) | 逐条 Case Sensitive 开关(简单表单);脚本恒转小写 |
| 副关键词 | 四种逻辑:AND_ANY / AND_ALL / NOT_ANY / NOT_ALL | 两套字段族都带 | 只有正向 AND——排除要靠 @@exclude_keys 装饰;逻辑模式导入即丢 | 被忽略——文件里带着,引擎从不评估 | 有副关键词;AND/NOT 等价物在 Advanced 脚本里(andAll / notAny / notAll) |
| 概率 | 逐条 0–100 + useProbability;非 sticky 时每轮重掷 | 带(probability + useProbability) | 只认 @@probability 装饰行——legacy 的 activationPercent 字段当前引擎不读 | 没有——关键词命中就触发 | 逐条 0–100,每条消息重掷,无跨轮状态;导入经常落在 1% 默认值 |
| 常驻条目 | constant 标记(蓝点) | 带 | alwaysActive 标记 | 带着但从不读——没有常驻 | 没有直接的常驻位——用 personality/scenario 字段或 Advanced 常开条目 |
| 递归 | 默认开;有层数上限,外加逐条排除/阻止/延迟到递归层 | 书级 recursive_scanning 旗标 | 默认开且没有层数上限;@@recursive 装饰家族 | 没有 | 没有——Advanced 脚本的 tag/trigger 链是另一套机制 |
| 扫描深度 | 全局设置 + 逐条覆盖 | 书级 scan_depth 字段 | 全局设置 + @@scan_depth 装饰 | 只有预设级 Memory Depth | Message Depth 设置(1 = 只扫你最后一条);脚本默认扫 5 条窗口 |
| 预算与排序 | token 预算按 order 裁剪;ignoreBudget 逃生口 | token_budget + order 与 priority 都写 | insertorder 一身兼两职(裁剪优先级+排序);@@priority / @@ignore_on_max_context 覆盖 | priority 决定预算内活谁;weight 决定排序(越高越靠底部) | Priority 管预算存活,插入顺序管注意力(按文档) |
¹ 酒馆列:本站触发引擎(对齐酒馆 1.18 checkWorldInfo 的移植)+ release 分支 world-info.js 的导入转换器。 ² Chub 列:真实 Chub 世界书导出的字段级对照(Chub 自家聊天端运行时未建模)。³ Risu 列:main 分支 lorebook.svelte.ts,2026-07 读取。⁴ Agnai 列:dev 分支 common/memory.ts,2026-07 读取。⁵ JanitorAI 列:官方帮助中心 + 公开的 Advanced Lorebook 脚本——脚本部分到源码级,简单表单到文档级。平台会漂移;表格反映读取当时的代码与文档。
搬家前怎么给世界书做体检?
把书拖进上面的体检台,选目标平台:这个方向的全部已知陷阱按严重度分组列出(会坏掉 / 行为会变 / 被静默丢弃),点名受影响的条目,每条带证据级标签——是对着目标平台源码核实的,还是按官方文档。 把标红的条目修掉或记下来,再去转格式。体检下面的分歧实验台回答另一个高频问题:「这个关键词在那边 到底还触发不触发?」——用各平台真实的匹配口径逐条跑给你看。
这个工具怎么来的
酒馆列复用本站的世界书触发引擎——从 Foreverse App 逐行移植、对齐 SillyTavern 1.18 checkWorldInfo、被 60+ 条单元测试锁定。方言层是对着各平台自己的实现读出来的:RisuAI 的 lorebook.svelte.ts(匹配、导入、导出壳)、Agnai 的 common/memory.ts(关键词编译器、预算与排序、「带着但不支持」的 V2 字段族)、酒馆 world-info.js 的导入转换器(Risu / Agnai / NovelAI / character book 四条路径)、真实 Chub 导出的双写格式、以及 JanitorAI 官方帮助中心和公开的 Advanced Lorebook 脚本。2026-07 读取。
全部解析器、匹配器移植和迁移规则被一套 137 条断言的金标自测锁定——包括几百条规模的真实 Chub 导出书——页面上每条发现都带证据级:源码实证、按官方文档、或按格式对照。核实不了的(JanitorAI 简单表单的匹配默认值、Chub 编辑器对计时字段的保留),工具直说,不猜。
它做不到什么
这里诊断的是激活层和迁移陷阱——不做格式转换,也不模拟目标平台的 token 预算裁剪与注入排序。跨轮状态(sticky、cooldown、Risu 的 keep-activate 装饰)按无状态模拟。
平台代码会漂移。Risu 和 Agnai 列钉在 2026-07 读取的开源实现上;JanitorAI 的简单世界书表单是闭源的,那一列靠官方文档和公开的 Advanced 脚本,并如实标注。Chub 自家聊天端运行时未建模——Chub 的书按存储方言体检。
常见问题
世界书导进 JanitorAI 之后为什么不触发了?
十有八九是那个看不见的 1% 默认值:导入的条目概率经常停在 1%,写得再好也大约一百条消息才触发一次。逐条打开把概率显式设好(关键设定 100),确认书已经挂到角色上并且点了发布,再检查大小写敏感或整词匹配有没有悄悄挡住关键词。这个工具在你搬家之前就把这些全标出来。
酒馆的世界书搬去 RisuAI 或 Agnai,到底会坏什么?
最毒的都是语义层的,不是外观层的。Risu 的导入器不读启用开关(你禁用的条目会集体复活),还会丢掉副关键词的逻辑模式——NOT_ANY 黑名单反转成正向必要条件,和你写的恰好相反。Agnai 把 constant、selective、大小写这些标记原样存在文件里,但引擎从来不读:常驻条目不再常驻、排除条件消失、概率掷骰根本不存在。这些结论全部对着两家的开源代码核实过,体检会逐条点名受影响的条目。
这个工具能帮我转换格式吗?
刻意不做。转换器已经到处都是(酒馆和 Risu 自带导入按钮),但没有任何工具告诉你转换途中什么被悄悄改了。这里是搬家前的体检:先跑一遍,把标红的条目修好或记下来,再放心去转。
支持哪些文件格式?
酒馆 World Info 导出、Chub 世界书(WI+V2 双写格式)、RisuAI 导出(type: 'risu')、Agnai 记忆书(kind: 'memory')、JanitorAI JSON 编辑器条目数组、V2/V3 character book 与 lorebook_v3 文件、内嵌世界书的角色卡、NovelAI 世界书(识别+浅支持)。拖进来就行,格式横幅会告诉你识别成了什么。
我的世界书会被上传吗?
不会。解析、体检、分歧实验台全在浏览器里跑,页面加载完断网也能用。