核心理念: "主角的代入感,剧情的完整性,自由的边界感"
目标平台: SillyTavern Extension
WestWorld 是一个专注于「小说原文沉浸体验 + 有限自由互动」的 SillyTavern 扩展。它提供从 TXT 小说自动解析为 SillyTavern 世界书与角色卡的能力,并配合可开关的**导演裁判(Director)**机制,通过调节导演介入强度来控制剧情边界的松紧。
参考内容: 节拍器部分参考了@yumitoushou 大佬的 https://discord.com/channels/1134557553011998840/1444663800061231198
txt转世界书部分参考了@某不科学的高数 大佬的 https://discord.com/channels/1134557553011998840/1460166394153930803
预设部分是采用了@三明月 大佬的 轻量级插件(找不到地址了 哭)
三个都根据本插件需求做了不同程度的魔改(吃百家饭长大的)
- 章节大纲解析失败 / 章节概览页面为空:点击该章的 重新roll 按钮重试生成。
- 世界书条目较乱:使用 合并条目 或 整理条目 功能,本地代码与 API 会自动完成整理。
- 无法正确解析小说章节:前往设置页调整 章回正则表达式,或让 AI 帮你写一条合适的正则。
- 处理速度较慢:TXT 转世界书 + 章节节拍划分平均约 1–2 分钟/章(受模型性能影响)。
- 节拍分割不够完美:AI 对章节内节拍(大事件)的自动分割质量有限,部分复杂章节需手动优化。
- 导演决策仍有提升空间:导演 AI 生成的回合演绎框架(动作链、起止点)在某些场景下可能过粗或过细。
- 暂不支持自动切拍:节拍切换需要用户在输入中显式触发(如发送「下一节拍」)。
- 环境要求与安装
- 首次配置顺序(重要)
- 📚 TXT转世界书 页面详解
- ⏳ 处理进度 页面详解
- 🧭 故事大纲 页面详解
- 🎬 当前章节概览 页面详解
- ⚙️ 设置 页面详解
- 📖 世界书详细视图
- 导入导出与数据管理
- 常见问题
目前我用的是最弱鸡的模型,deepsekk V3.2 以及 GLM 4.7
- SillyTavern
>= 1.14.0 - Node.js
>= 20(仅在本地运行/开发 SillyTavern 时需要) - 可用的模型 API(主 API + 导演 API,可同源也可分开)
- 打开 SillyTavern。
- 进入扩展管理界面。
- 通过仓库地址安装第三方扩展(WestWorld 仓库地址)。
- 安装后刷新页面。
- 将本项目放到 SillyTavern 扩展目录:
SillyTavern/public/scripts/extensions/third-party/WestWorld
- 刷新 SillyTavern 页面。
- 在顶部扩展区确认出现 WestWorld 的 📖 书本图标。
按以下顺序操作,避免"面板能打开但点开始没反应":
- 打开主面板:点击顶部 WestWorld 图标。
- 配置 API:进入「⚙️ 设置」页签,选择「酒馆API」或「自定义API」。推荐配置两个 API(主 AI + 导演 AI);若只有一个,请配置在「主 AI」中,导演裁判将回退到本地轻量兜底。
- 上传小说 TXT:在「📚 TXT转世界书」页签上传文件。
- (可选)清洗重复段落:若小说含大量广告、尾注等固定重复文本,点击 🧹 清洗重复段落 预处理。
- 配置章节识别:使用默认章节正则即可,特殊格式再微调。检测章节数量是否与章节队列区一致,点击章节检查内容切分是否正确。若某章被从中间断开,点击 ⬆️ 合并到上一章。
- 勾选提取分类:下滑到底部,勾选要解析的世界书条目类型(角色、地点、文风等)。
- 开始转换:点击右下角 开始转换。可在「⏳ 处理进度」页查看实时日志。此过程包括:提取世界书条目、解析章节大纲、生成章节梗概与节拍。当前版本中,主流水线(世界书)与导演流水线(章节节拍)会独立并行推进,彼此不会互相阻塞。
- 查看与整理世界书:转换完成后,在底部「生成结果区」点击 📖 查看世界书。
- 删除:用 🗑️ 多选删除条目 清理不需要的条目。
- 合并重复:点击 🔗 合并条目 → 先 本地合并(代码自动合并相近条目),剩余重复项再用 手动合并。
- 整理内容:点击 🧹 整理条目 → 先 本地整理(去重/标准化),仍不满意再点 AI整理 调用 API 精简。
- 导出角色卡:整理完成后,点击 🃏 导出角色卡(无需单独导出世界书,二者已关联)。
- 加载角色卡:在 SillyTavern 角色卡页面加载刚导出的角色卡。
- 检查故事大纲:进入「🧭 故事大纲」页,确认各章节节拍分割状态。绿色表示成功,红色则点进该章 🔄 重roll本章。
- 开始体验:双击「故事大纲」页的 ▶ 从第一章开始,自动切换到「🎬 当前章节概览」页,等待 AI 生成并发送开场白到聊天窗口。
- 聊天与推进:发送消息后,导演 AI 生成演绎框架,演员 AI(主API)据此输出内容。
- 切换节拍:当前节拍接近尾声时,在输入中加入"下一节拍"等表述(建议设置快捷回复),后台会自动切换。
- 切换章节:一章结束时,点击「当前章节概览」的 ⏭ 下一章 按钮,AI 会自动生成下一章开场白。
注意:主面板只能通过右上角 ✕ 关闭按钮 退出,按 ESC 仅关闭子弹窗,防止误触中断转换。
这是主工作区,从上到下分为「文件上传」、「提示词配置」、「章节队列」、「生成结果」四个区域,底部还有全局操作按钮。
- 上传区域:点击或拖拽 TXT 文件到虚线框内。系统会自动检测文件编码(UTF-8/GBK/GB2312/GB18030/Big5)。
- 📥 合并世界书:导入已有的 SillyTavern 格式或内部 JSON 格式世界书,与当前结果合并。若检测到同名条目,可选择 AI 智能合并 / 覆盖 / 保留 / 重命名 / 内容叠加。
- 🧹 清洗重复段落:打开批量删除浮窗。你可以把小说中反复出现的固定文本(如"本章完"、"请收藏本站"、作者署名)粘贴进去,系统会进行精确字面量匹配(不使用正则),先预览命中情况,再执行删除。
- 输入规则:空行分段;若无空行则按行处理。
- 作用范围:可选择「全部章节」、「仅未处理章节」或「自定义章节(多选)」。
- 📥 导入工程包 / 📤 导出工程包:保存或恢复完整进度,包括章节队列、故事大纲、当前章节状态、世界书、处理进度。
- 📖 导出名称输入框:用于设置导出角色卡/世界书时的文件名前缀。
该区域包含五个可折叠的子面板,以及顶部的导入/导出/预览按钮。
这是整个转换流程的核心指令。它的作用是告诉 AI:
- 要提取什么:例如角色、地点、组织、道具等(取决于你在下方「自定义提取分类」中勾选了哪些)。
- 怎么格式化:每个条目需要包含哪些字段(如名称、关键词、内容描述等),以及最终要以什么数据结构输出。
- 怎么写更好:你可以在里面追加额外要求,比如"每个角色必须写出外貌和性格"、"地点条目要包含气候特征"、"用第三人称简洁描述"等。
关于 {DYNAMIC_JSON_TEMPLATE} 占位符:
系统会根据你当前启用的分类,自动生成对应的 JSON 结构模板,并替换掉这个占位符。这样你不必手写复杂的格式要求,只需专注于"想让 AI 提取什么、怎么提取"。
- 按钮:🔄 恢复默认 —— 若你之前修改过此提示词,点击后会清空当前内容并恢复为插件内置的默认提示词模板。
- 复选框 + 文本区。
- 勾选启用:AI 在处理每章时额外生成「故事摘要 / 章节大纲」。
- 生成的摘要将用于「故事大纲」展示、导演裁判上下文,以及导出为 SillyTavern 世界书条目(若启用该分类)。
- 按钮:🔄 恢复默认(恢复内置的剧情大纲提示词模板)、⚙️ 导出时的默认配置(配置「剧情大纲」分类在 SillyTavern 中的位置/深度/顺序/自动递增)。
- 复选框 + 文本区。
- 在提示词中注入对输出文风的额外要求(如"古风白话"、"克苏鲁压抑感")。
- 按钮:🔄 恢复默认(恢复内置的文风提示词模板)
分为两部分:
- 后缀提示词:追加到提示词末尾、消息链转换之前生效。用途:临时追加强调,如"请特别注意提取XX信息"、"修复乱码内容"。
- 消息链列表:将提示词按对话补全预设格式发送,每条消息可指定角色(🔷 系统 / 🟢 用户 / 🟡 AI助手)。消息内容中可用
{PROMPT}占位符代表实际组装好的完整提示词。- 按钮:➕ 添加消息、🔄 恢复默认(恢复内置的消息链默认配置)
-
提示:酒馆 API 模式下消息角色可能被酒馆后处理覆盖;自定义 API 模式下角色设置完全生效。
- 显示所有分类,左侧复选框控制是否启用。
- 内置分类:角色、地点、组织。
- 预设分类:道具、玩法、章节剧情、角色内心等。
- 每个分类可点击右侧 ⚙️ 编辑:名称、条目示例、关键词示例、内容提取指南、导出时的默认位置/深度/顺序/自动递增。
- 顶部按钮:➕ 添加(新建自定义分类)、🔄 重置(恢复初始默认)。
- 可视化添加/编辑/删除默认条目。
- 每个条目可配置:分类、名称、关键词、内容、位置/深度/顺序。
- TXT转世界书转换完成后会自动将这些条目加入世界书(如选项栏/变量更新/初始变量等)。
- 📤 导出:保存当前所有提示词、分类、消息链、默认条目配置为 JSON。
- 📥 导入:从 JSON 恢复上述配置。
- 👁️ 预览:查看最终发送给 AI 的完整提示词(含占位符替换结果)。
上传 TXT 后,系统按正则拆分章节,在此显示队列。
- 方块展示:每个方块代表一章,显示标题、字数、处理状态(⏳ 等待 / 🔄 处理中 / ✅ 完成 / ❗ 失败)。
- 📊 已处理:打开侧栏视图,只查看已处理章节的原始 JSON 结果。
- 📍 选择起始:弹出下拉框,指定从哪一章开始转换。适合断点续传。选择后底部按钮变为
▶️ 从第X章开始。 - 🗑️ 多选删除:进入批量删除模式,方块左上角出现复选框,顶部红色条显示「已选: N」,确认后批量移除。
点击单个章节会弹出详情浮窗:
- 状态与字数:当前章的处理状态、字数统计。
- 📋 复制:复制本章原始文本。
- 🎲 Roll历史:查看本章过往处理记录,可回退到任意版本。
- 🗑️ 删除:删除本章。
- 原文内容(可编辑):直接修改本章原文。保存后该章标记为"未处理",需重新转换。
- ⬆️ 合并到上一章:将内容追加到上一章末尾并删除当前章(首章禁用)。
- ⬇️ 合并到下一章:将内容追加到下一章开头并删除当前章(末章禁用)。
当至少有一章处理完成后出现。
| 按钮 | 作用 |
|---|---|
| 🔍 查找 | 在世界书预览中高亮关键词,支持正则。 |
| 🔄 替换 | 批量替换世界书中的匹配文本,支持正则和大小写敏感选项。 |
| 📖 查看世界书 | 打开完整的世界书详细视图(见下方独立章节)。 |
| 📜 修改历史 | 打开左右分栏历史记录,支持 ⏪ 回退到任意版本。数据保存在 IndexedDB 中。 |
| 🧹 整理条目 | 可选择「🤖 AI整理」(调用 AI 优化内容)或「🧩 本地整理」(仅使用本地函数去重/标准化)。 |
| 🏷️ 清除标签 | 一键清理所有条目中的 thinking、/think 等标签内容,不消耗 Token。 |
| 🔗 别名合并 | AI 自动识别同一事物的不同称呼并合并;支持手动合并。 |
| 🃏 导出角色卡 | 导出为 SillyTavern 角色卡 JSON(含世界书关联)。 |
| 📥 导出世界书 | 导出为 SillyTavern 世界书 JSON 格式。 |
| 📦 分卷导出 | 仅在开启「分卷模式」且实际产生多卷时显示。 |
- 🚀 开始转换:从第一章开始处理。
▶️ 从第X章开始:若使用了「选择起始」,则显示此按钮。
点击顶部 ⏳ 处理进度 页签进入。
- 进度条与百分比:实时显示当前转换进度。
- 状态文本:如"准备中..."、"正在处理第X章..."等。
- ⏸️ 暂停:中断当前处理。已完成的章节结果会被保留。
- 🔧 修复失败:当某些章节处理失败时显示,可一键尝试修复。
- 👁️ 实时输出:展开/折叠实时输出面板,显示每步操作的原始日志。
- 若开启了「调试模式」,会额外显示 📋 复制全部 按钮和详细耗时日志。
- 清空:清空当前输出内容。
点击顶部 🧭 故事大纲 页签进入。
- 章节列表:列出所有章节,每章显示标题和生成状态标签:
- ✅ 已生成
- ⏳ 生成中
- ❌ 生成失败
- ⏸ 待生成
- 展开摘要:点击章节标题可展开/折叠该章的故事摘要内容。
- 🔄 重roll本章:重新调用 AI 生成该章的故事摘要和小章剧本(beats),同时重置该章开场白。
- 📖 查看当前章节概览:跳转到「🎬 当前章节概览」页签并定位到该章。
- ▶ 从第一章开始:一键进入章节体验(自动发送第一章开场白并切换到当前章节概览页)。
点击顶部 🎬 当前章节概览 页签进入。这是你"实际走进小说"的核心体验区。
| 区块 | 说明 |
|---|---|
| 故事摘要 | 当前章的整体剧情概括。 |
| 当前小章剧本 | 该章被细分为多个节拍(beats),每个节拍显示:事件摘要、入场事件、退出条件、节拍原文。当前激活的节拍会高亮显示。 |
| 本章开场白 | 进入该章时自动生成并发送到 SillyTavern 聊天窗口的引导文本。若未生成会显示提示;若生成失败会显示降级文案。 |
- ✏️ 编辑章节概览:打开编辑器浮窗,可手动修改:
- 故事摘要
- 关键节点(每行一个)
- 每个节拍的内容(事件摘要、节拍原文、入场事件、退出条件)
- 当前激活的节拍(通过单选框指定)
- 支持 ➕ 新增节拍 和 删除 单个节拍。
- ⏭ 下一章:保存当前进度,生成下一章的开场白并自动发送到聊天窗口,然后进入下一章。若已到最后一章,按钮变灰显示 ⏹ 已是最后一章。
导演不是独立的 AI,而是运行在系统提示词层的约束逻辑。在每回合 AI 生成前,它会读取当前场景、关键锚点(必须发生的事件)、禁忌约束(绝对不能发生的事)以及你的最新输入,生成修正指令并通过 prompt 注入给主 AI。
体验强度的控制方式:
- 强约束(偏剧情跟随):在「⚙️ 设置」中勾选「启用导演裁判(每回合运行)」+「每回合运行导演判定」。此时导演会基于每章的「故事摘要」和「关键节点」建立剧情锚点,确保关键事件必须发生,同时禁止某些绝对不可发生的事。若你的输入偏离锚点但不破坏禁忌 → AI 会通过 NPC 反应或环境描写柔性引导回正轨;若触犯禁忌 → AI 会用剧情内逻辑强制阻断(如"你突然心软了"、"被他人阻止"),但永远不会直接对你说"你不能这样做"。
- 弱约束(偏自由探索):关闭「启用导演裁判」。此时导演不再介入,主 AI 主要依靠世界书条目(含剧情大纲摘要,若启用了该分类)、每章开场白和聊天历史自由生成,不再对每个节拍做硬性边界控制。
本地轻量兜底:若导演 API 调用失败(超时/限流/错误)且勾选了「导演API失败时启用本地导演兜底判定」,系统会退回到一套硬编码的默认连贯性指令(如"承接上文、围绕当前摘要推进1-2个具体互动动作"),它只保证场面衔接,不检查锚点、不阻断禁忌。
点击顶部 ⚙️ 设置 页签进入。所有配置会自动持久化。
- 勾选:WestWorld 直接调用 SillyTavern 当前连接的 AI,无需额外填写 API Key。
- 不勾选:展开下方的 🔧 AI路由配置,使用自定义 API 直连模型。
不勾选酒馆 API 后,出现两张配置卡片,通过 主AI / 导演AI 页签切换填写:
| 字段 | 说明 |
|---|---|
| API提供商 | OpenAI兼容 / Gemini / Anthropic。 |
| API Key | 直连密钥,本地模型可留空。 |
| API Endpoint | 自定义地址。OpenAI 兼容模式下显示;留空使用默认 URL。 |
| 模型 | 模型名称。Gemini / Anthropic 模式下支持 🔄 拉取模型 列表。 |
| Max Tokens | 输出 token 上限,默认 2048。 |
| ⚡ 快速测试 | 发一条测试请求验证连通性。 |
- 启用导演裁判(每回合运行):导演 AI 在每次你发送消息后、AI 生成前介入。
- 导演API失败时启用本地导演兜底判定:导演 API 失败时退回到本地硬编码规则,避免体验断裂。
- 每回合运行导演判定:开启后几乎每次用户回合都跑导演;关闭则只在特定场景触发。
- 启用:世界书流水线与导演流水线独立并行,按各自上一章状态推进,大幅降低互相等待。
- 章节并发 / 主API并发 / 导演API并发:范围 1–10。建议导演 API 并发不高于主 API。
- 并行模式:
- 🚀 独立模式:最快,每章独立提取后合并。
- 📦 分批模式:批次间累积上下文,更连贯。
- 章节完成判定:固定为双流水线独立完成。世界书与导演各自记录进度与失败状态,最终流程在两条流水线都结束后完成。
- 正则输入框:自动识别章节标题。默认适配大部分中文网文。
- 快捷预设:中文通用 / 英文 Chapter / 数字章节。
- 🔍 检测:预检当前正则能匹配到多少个章节标题。
-
支持自动整理句中"第X章/第X卷"到段首后再检测。
- 每块字数:单块提交给 AI 的上下文字数上限,默认 8000。修改后需点 🔄 重新分块 生效。
- API超时(秒):单次请求超时,默认 120 秒。
- 🔄 重新分块:按新字数重新拆分章节队列中的文本块。
| 复选框 | 作用 |
|---|---|
| 📝 增量输出模式 | AI 只输出本章相比上一章新增或变更的条目,减少重复。 |
| 📦 分卷模式 | 上下文超长时自动分卷,避免记忆分裂。 |
| 📌 强制记忆为章节 | 在提示词中强制要求 AI 将每个记忆块视为"当前正在处理的章节"。 |
| 🔄 允许条目递归 | 世界书条目可被其他条目关键词激活,并允许进一步递归触发。 |
- 文本输入框,用逗号分隔标签名,默认
thinking,/think。 - 作用:自动剔除 AI 返回中的
<thinking>...</thinking>、<think>...</think>等内容,避免污染世界书。
- 🔍 调试模式:勾选后,「实时输出」区域会打印每一步操作细节与耗时。
- 勾选后实时输出区会额外显示 📋 复制全部 按钮。
在「📚 TXT转世界书」页的「生成结果」区点击 📖 查看世界书 后打开的大浮窗。
- Token阈值:设置下限(如 100),点击「应用」后低于此值的条目会以红色高亮,方便快速发现可能被截断的短条目。
- 分类卡片:世界书按分类折叠显示(如 角色、地点、组织)。标题右侧显示该分类总条目数和总 Token 数。点击标题可展开/折叠。
- 🟢/🔵 灯图标:
- 蓝灯:常驻条目(constant),始终出现在上下文中。
- 绿灯:触发式条目(selective),仅在关键词匹配时插入。
- 点击图标可切换。
- 条目卡片:显示标题、关键词、内容、Token 数,以及操作按钮:
- ⚙️ 配置:设置该条目的导出位置(Position)、深度(Depth)、顺序(Order)。
- 🎯 重Roll:单独调用 AI 重新生成该条目内容,可附加额外提示词指导。
- 🗑️ 删除:删除单条。
- 🧺 多选删除:进入批量选择模式,统一删除已勾选的条目。
- ✋ 手动合并:跨分类勾选多个疑似重复条目,指定主名称和目标分类后合并。
- 🎲 批量重Roll:一次性选择多个条目进行重Roll修复。
- 📤 导出工程包:保存当前全部进度,包括章节队列、故事大纲、当前章节概览状态、世界书内容、处理进度。
- 📥 导入工程包:从工程包 JSON 恢复,可在换设备或浏览器后一键继续。
- 在「提示词配置」区域有独立的 📤 导出 / 📥 导入 按钮,只保存/恢复提示词、分类、消息链、默认条目等设置,不包含小说数据。
- 在「文件上传」区域点击 📥 合并世界书,可导入已有的 SillyTavern 格式或内部 JSON 格式世界书。
- 若检测到同名条目,可选择:AI 智能合并 / 覆盖 / 保留 / 重命名 / 内容叠加。
- 系统自动记录每次对世界书的变更。
- 点击 📜 修改历史 可查看左右对比,支持一键 ⏪ 回退到任意历史版本。
- 历史数据保存在浏览器 IndexedDB 中,刷新页面不会丢失。
- 检查 API 是否完整配置(酒馆 API 是否已连接,或自定义 API 的 Endpoint/Key/Model 是否正确)。
- 检查 Max Tokens 是否在合法范围(1–8192)。
- 检查是否已上传文件且成功拆分了章节。
- 确认「启用导演裁判」已勾选。
- 确认当前处于有效的章节与节拍上下文中(需要先完成 TXT 转换并进入「当前章节概览」)。
- 检查是否处于静默/后台生成场景(如自动回复、quiet 模式),导演会跳过这些场景。
- 先刷新页面。WestWorld 保留了从旧名称
StoryWeaver的自动迁移层。 - 若仍异常,可导入旧工程包恢复。
- 切换到自定义 API 模式。酒馆 API 会对消息数组进行后处理,可能覆盖你的角色设置。
- 先在生成结果区尝试 🔗 别名合并(AI 自动识别)。
- 若 AI 没识别到,打开 📖 查看世界书 → ✋ 手动合并,勾选重复条目并指定主名称和目标分类。
- 在设置的「响应过滤标签」里保持默认值
thinking,/think即可自动过滤。 - 若仍有其他标签残留,可手动添加标签名到过滤列表,或使用 🏷️ 清除标签 按钮一键清理。
开发相关入口(供调试参考):
- 入口文件:
index.js - 主模块:
txtToWorldbook/main.js - 导演服务:
txtToWorldbook/services/directorService.js - 设置持久化:
txtToWorldbook/services/settingsPersistenceService.js
本次版本核心是新增 导演节拍耗尽提醒:导演在生成演员执行单时判断本轮是否会把当前节拍推进到结尾,演员 AI 输出后由系统给用户一条硬编码提醒,但不自动切换节拍。
- 导演输出新增并使用
will_complete_this_last_turn、will_complete_this_turn、beat_complete_reason。 will_complete_this_last_turn由系统继承上一轮同章节、同节拍的will_complete_this_turn,不交给模型自由猜测。- 若上一轮已经判定本节拍会耗尽,本轮
will_complete_this_turn会被代码强制保持true,避免模型回落为false。
- 当导演判定
will_complete_this_turn=true且当前节拍存在下一节拍时,系统挂起一次待提醒状态。 - 演员 AI 输出完成后,系统只发送固定提示:
🎯 当前节拍剧情已推进到结尾,建议切换到下一节拍。 - 不自动切换节拍,不增加按钮,也不显示下一节拍摘要,节拍切换仍由用户决定。
- 「导演调试」面板新增“上一轮耗尽 / 本轮耗尽 / 耗尽原因”展示,便于检查导演为什么触发提醒。
- 待提醒状态不写入任务导出,避免导入旧任务后误弹过期提醒。
- 生成后事件做了多事件兼容与去重保护,避免重复提醒。
本次版本核心是重做章节节拍初始切分链路,解决“节拍原文错位、摘要与原文不匹配、事件边界被锚点误定位”等问题。
- 章节正文会先按段落生成稳定编号单元:
u001/u002/u003。 - 导演 AI 不再主要依赖原文
anchor定位切点,而是返回每个节拍覆盖的start_id/end_id。 - 系统按段落单元的原文 offset 拼接
original_text,确保节拍原文与章节正文保持字级无损。 - 旧版
anchor输出仍保留兼容路径;新路径日志中会显示source=unit-range-strategy。
- 允许单一完整事件只生成 1 个节拍,不再为了凑 3 个节拍硬切章节。
- 增加连续覆盖校验:第一个节拍必须从
u001开始,最后一个节拍必须覆盖到末尾,中间不能跳号、重叠或遗漏。 - 增加保守异常拦截:明显过短的伪节拍、摘要与原文极低相关的节拍会触发重试。
- 章节摘要不再使用正文开头作为兜底;模型漏掉
outline时,会优先用返回的节拍摘要合成章节摘要。
- 若切拍成功,处理日志会出现
source=unit-range-strategy。 - 复杂章节仍建议在「故事大纲」或「当前章节概览」中人工检查节拍边界,并可对失败章节使用 🔄 重roll本章。
本次版本核心是新增 🎛️ 导演调试 可视化,把每回合导演 AI 给演员 AI 的执行指令从黑箱变成可检查的结构化信息。
- 新增「🎛️ 导演调试」页签,展示最近 20 次导演回合判定。
- 可查看用户输入、当前/锁定节拍、节拍完成判断、导演起点、动作链、终点、下一节拍预览等信息。
- 支持查看导演返回的 JSON 与最终注入给演员 AI 的提示词,方便排查“演员为什么这样写”。
- 导演调试记录会随回合实时刷新,便于对照聊天输出和导演指令。
- 支持复制调试记录,用于复盘或反馈问题。
- 该功能仅用于可视化与排错,不改变导演裁判本身的决策逻辑。
本次版本核心是将导演系统的两个核心提示词从硬编码改为可自由编辑的模板,同时保持 100% 向后兼容。
- 新增两块提示词编辑区(设置面板 → 提示词编辑器):
- 导演AI框架提示词:控制导演给 AI 的角色设定与任务框架。
- 导演注入演员前置提示词:控制导演给演员的具体执行指令。
- 每块编辑区均支持 恢复默认 和 保存 操作。
- 编辑后的提示词会随配置一起 导出/导入,方便备份和分享。
- 导演服务从硬编码字符串拼接切换为 模板占位符渲染。
- 支持动态替换以下占位符(以
{CHAPTER_TITLE}、{CURRENT_BEAT_INDEX}、{ACTION_CHAIN}等为例)。 - 运行时优先使用用户自定义内容;若未编辑或留空,则自动回退到与原先完全一致的默认模板。
- 未编辑提示词的用户:行为与之前完全一致,无任何感知差异。
- 旧配置导入:缺少新字段时自动回退到默认模板,不会报错。
- 旧工程包:不受本次改动影响,可继续正常使用。
本次版本核心是把「世界书生成」与「导演章节节拍」从同章共享完成门槛,重构为两条独立并行流水线,并完成全链路语义收口。
- 世界书流水线与导演流水线改为独立推进,不再互相等待同章完成。
- 两条流水线分别按各自「上一章状态」放行:
- 世界书线只依赖上一章世界书状态。
- 导演线只依赖上一章导演状态。
- 启动处理时两线并发运行;结束时等待两线都 settle 后再整体收尾。
- 停止处理时会同时回收两线的 in-flight 状态,避免单线残留。
- 新增并启用双真值状态字段:
worldbookStatus/worldbookError/worldbookProcessingdirectorStatus/directorError/directorProcessing
- 旧字段
processed/failed/processing仅作为兼容投影保留,不再作为核心业务判定真值。 - 工程包与任务状态归一化升级,导入旧数据时自动迁移到双状态语义。
- 处理服务重构为「主线处理 + 导演处理」双 runner 架构。
- 失败修复、继续处理、断点恢复等流程改为基于主线/导演各自状态判断。
- 设置中的「章节完成判定」统一为双流水线独立完成语义(固定 independent)。
- 处理进度页改为双进度口径展示(世界书/导演)。
- 章节列表与详情弹窗支持双状态、双错误信息显示。
- 「从第 X 章继续」等文案按双流水线继续点计算。
- 故事大纲、搜索筛选、重 roll、历史回退、队列操作等外围模块已统一到新状态语义。
- 旧工程包可继续导入,系统会自动做状态映射与兼容写回。
- 旧字段目前仍可读写用于兼容外部数据,但后续开发应以
worldbookStatus/directorStatus为唯一判定来源。