第 13 章

调试怎么看

把调试顺序固定下来——Debug → Prompt Package → 模型回复。先看命中,再看分层,最后看回复。

本章重点

本章重点:把调试顺序固定下来 —— Debug → Prompt Package → 模型回复

信息

到这一章,基本就不是「会不会填词条」的问题了,而是「出了问题你会不会查」。

真正常见的情况其实是:

  • 条目写了,但不知道有没有触发;
  • 触发了,但不知道进了哪一层;
  • 也进去了,但回复看起来还是不对。

现在调试主要看哪两个地方

现在最值得看的,是这两个地方:

工具看什么
Worldbook Debug世界书这一轮有没有命中、有没有注入、进了哪个分区。现在它一般在 Chat 页左侧小箭头里。
Prompt Package这一轮最终是按什么结构打包给模型的。它会把预设、角色卡、世界书、记忆、最近聊天、输出格式规则分层展示出来。

重点

先看命中,再看分层,最后看回复。 不要一上来就盯着模型回答发愣。正确顺序永远是:先看 Debug,再看 Prompt Package,最后看模型回复。

调试顺序,看这张图最省事

回复不对

先看 Worldbook Debug
  ├─ 确认有没有命中
  └─ 确认进了哪个提示层级

再看 Prompt Package

最后看模型回复

Worldbook Debug 怎么看

Worldbook Debug 负责回答这些问题:

  • 这一轮命中了几条;
  • 哪些被注入;
  • 哪些没注入;
  • 命中来源是直接命中还是递归;
  • 进了稳定区、当前状态区、动态区,还是输出协议区;
  • 旧逻辑里有没有进角色定义前 / 后 / 聊天深度;
  • 有没有因为命中上限被丢掉。

你可以把 Debug 当成:世界书这一轮的处理日志。 如果它这里都没命中,那就先别急着怪模型——第一步就还没发生。

Debug 里最值得看的内容

新手先不用一下子看所有东西,先重点看这几个:

  1. 有没有命中:先确认这条世界书有没有出现;
  2. 有没有注入:命中了不等于一定进 prompt,如果超过命中上限,它可能会被丢掉;
  3. 进入了哪个分区:稳定区 / 当前状态区 / 动态区 / 输出协议区 / 角色定义前后 / 聊天深度;
  4. 是不是递归带出来的:如果你开了递归,要看它是用户直接命中的,还是被别的词条带出来的;
  5. 有没有被截断或丢弃:如果被丢掉,要看原因,常见原因是命中太多、超过上限。

什么是 Prompt Package

Prompt Package 是你最接近「真相」的地方。因为它看的不是猜测、感觉、推断,它真正看的是:这一轮最终打包给模型的提示词结构。

现在它会更清楚地分成类似这样的层:

预设规则
角色定义前世界书
角色卡
稳定世界书
角色定义后世界书
长期记忆与用户资料
当前状态区
本轮相关记忆
本轮命中世界书
聊天深度世界书
设定问答提示
最近聊天记录
输出格式规则
本轮用户输入

你要看的不是「字多不多」,而是:这条内容有没有在正确的层里。

Prompt Package 最适合确认什么

  1. 角色定义前是不是真的在角色卡前:如果你写的是硬规则,要确认它是不是在角色卡前;
  2. 稳定区是不是在角色卡后:稳定区更像角色卡后的长期补充,不要误以为它在角色卡前;
  3. 当前状态有没有单独出来:当前地点、当前关系、当前章节,最好能在当前状态区看到;
  4. 动态世界书是不是只出现在本轮:关键词和递归临时命中的东西,通常应该在本轮命中世界书里;
  5. 输出协议是不是靠后:状态变量、TTS、结尾格式,最好在输出格式规则里;
  6. 最近聊天记录有没有思维链:现在思维链可以保存在聊天记录里,也可以前端展开查看,但构建下一轮 Prompt 时,<think>...</think> 不应该再进 Prompt Package。

提示

如果 Prompt Package 的最近聊天记录里没有 <think>,说明思维链清理是正常的。

调试时的标准顺序

以后排错可以照这个走:

  1. 第一步:先输入一个明确触发词(比如「我推门走进听雨咖啡。」);
  2. 第二步:看 Worldbook Debug,确认「听雨咖啡」有没有命中;
  3. 第三步:看它进入哪个分区(比如稳定区 / 动态区 / 角色定义前 / 聊天深度 0);
  4. 第四步:看 Prompt Package,确认它最后真的出现在对应层里;
  5. 第五步:最后才看模型回复,确认模型体感是不是和上面一致。

如果世界书没命中,先查什么

先查最基础的,不要一上来就查深度、顺序、递归(因为还没命中时,那些都还没开始起作用):

  • 主关键词写错没有;
  • 关键词是不是太窄;
  • 这条有没有启用;
  • 世界书总开关有没有打开;
  • 触发类型是不是设成了关键词触发;
  • 用户输入里到底有没有出现关键词。

如果命中了但没进 Prompt,先查什么

先查(这时重点看 Debug):

  • 每轮最多命中条数是不是太小;
  • 这条是不是被后面的截断规则丢掉了;
  • Debug 里有没有显示未注入;
  • 是否有更高优先级的条目挤掉了它。

如果进了 Prompt 但模型还是没按它写

这时再看内容本身,可能原因有:

  • 词条内容太长,重点不明显;
  • 词条内容太像背景,没有明确要求;
  • 它放错了层;
  • 输出格式规则没有放到输出协议区;
  • 当前预设或角色卡有冲突;
  • 模型这一轮遵循度不稳定。

例子

如果你想让模型每轮输出状态变量,但你把这条写在角色卡或者稳定区里,它可能会当成背景设定,不一定每轮执行。更适合放到:输出协议区

本章最后的排错口诀

重点

  • 没命中,看关键词。
  • 命中了没进,看 Debug。
  • 进了还不对,看 Prompt Package。
  • Prompt 也对还不稳,再看预设和模型遵循度。

下一步

到这里,说明书就会从「会配置」进入「会排错、会整理、会长期使用」。下一章是实战案例——把前面所有概念串起来。