世界书位置插入与递归 —— beforeChar afterChar atDepth 三桶消费
三个插入位置
被激活的世界书条目按其「位置」字段分配到三个桶,在组装上下文时分别插入:
| 位置 | 说明 | 消费时机 |
|---|---|---|
| 角色设定前 | beforeChar | 放在角色设定(性格/场景/示例)之前 |
| 角色设定后 | afterChar | 放在角色设定之后、历史消息之前 |
| 按深度插入聊天记录 | atDepth | 从最新消息往回数 N 条的位置插入;depth 值由条目的「深度」字段决定 |
为什么需要不同位置
- 世界观大设定(如「这是一个赛博朋克城市」)放在角色前——AI 最先看到,作为底色
- 与角色相关的设定(如「角色是某城市的治安员」)放在角色后——AI 在角色设定的上下文中理解世界书
- 事件信息(如「三天前发生了爆炸」)按深度插入聊天记录——作为正在发生的对话的背景
递归机制
某条目被激活后,它的内容里如果包含其他条目的主关键词,会引发第二轮激活。递归按轮进行:
- 第 1 轮:常驻条目 + 关键词匹配 → 激活条目 A
- 第 2 轮:用条目 A 的内容作为附加扫描文本 → 激活条目 B
- 第 3 轮:用条目 A + B 的内容扫描 → 激活条目 C
- 一轮无新增即停止
个别条目可以设置「不参与递归/不触发递归」——避免某些条目被无意中连锁激活。
预算裁剪
所有被激活条目的总字数受预算限制。超出时按 order 排序的权重丢弃低优先级条目。思考日志里会显示实际激活数和被裁剪数量。
与酒馆的差异
酒馆的世界书位置选项更多(AN/EM/outlet 等),OMate 收敛到这三个位置。导入酒馆世界书时,AN/EM/outlet 位置会被降级映射,转化报告会标注。