Novel Auto Generator | 小说自动生成器
功能概览
本插件包含两个核心功能模块:
自动生成小说 — 设定章节数和提示词,AI 持续创作,支持断点续传、弹窗兼容、标签提取、多格式导出。
TXT转世界书 — 上传 TXT 小说,AI 自动提取角色/地点/组织等信息生成 SillyTavern 世界书。支持并行处理、智能重试、自动断点续传、增量导出、别名合并等。详见 完整文档。
快速开始
安装
- SillyTavern 中进入
扩展→安装扩展 - 输入仓库地址安装:
https://github.com/CyrilPeng/novel-auto-generator
- 在扩展栏找到「小说自动生成器」即可使用
自动生成小说
在已有角色对话的基础上,自动发送提示词让 AI 持续创作。
基本用法
- 打开一个角色对话(确保 AI 已有上下文)
- 展开插件面板,设置目标章节数
- 填写提示词(如「继续」「继续推进剧情」)
- 点击 开始,挂机等待
控制按钮
| 按钮 | 功能 | | :-----: | :------------------ | | ▶️ 开始 | 从当前进度开始/继续 | | ⏸️ 暂停 | 当前章节完成后暂停 | | ⏯️ 恢复 | 从暂停状态恢复 | | ⏹️ 停止 | 完全停止任务 | | 🔄 重置 | 进度归零 |
断点续传
进度自动保存在浏览器中。关闭页面后重新打开,可从上次位置继续。
高级功能
标签提取
从 AI 回复中提取指定 XML 标签内容,支持白名单提取和黑名单移除。
<thinking>AI 的思考过程...</thinking>
<content>小说正文内容...</content>
<summary>本章总结...</summary>
使用方法:
- 勾选「原始 (chat.mes)」读取未经正则处理的原始内容
- 模式选择「只提取指定标签」或「全部内容」
- 填写要提取/移除的标签名(空格或逗号分隔)
- 点击「刷新预览」确认效果
content | 只保留 内的内容 |
| 黑名单移除 | thinking note | 删除这些标签及其内容 |
| 组合使用 | 提取 content,移除 thinking | 两者同时生效 |
弹窗检测(插件兼容)
同时使用剧情推进、总结等插件时,自动检测弹窗通知,等待其他插件处理完成后再继续。
分为发送阶段(消息发送后)和回复阶段(AI 回复后)两个检测点,分别可配置等待超时和额外等待时间。
导出设置
- 支持 TXT / JSON 格式
- 可指定楼层范围
- 可选包含用户消息 / AI 回复
- 可选读取原始内容或显示内容
生成控制参数
| 参数 | 默认值 | 说明 | | :----------- | :----: | :------------------ | | 自动保存间隔 | 50 章 | 每 N 章自动导出备份 | | 最大重试 | 3 次 | 单章失败后重试次数 | | 最小章节长度 | 100 字 | 低于此字数视为失败 |
AI 返回空内容且酒馆生成已结束时,插件会按「最大重试」自动重发当前章节提示词,避免假流式或截断造成整轮等待超时后停摆;连续失败后停止并提示检查模型设置。
TXT转世界书
将 TXT 小说转换为 SillyTavern 世界书格式。这是一个功能丰富的独立模块,详细文档见 txtToWorldbook.md。
快速上手:
- 点击插件面板中的「TXT转世界书」按钮
- 选择 API(可直接使用酒馆当前连接的 AI)
- 上传 TXT 文件 → 开始转换
- 处理完成后导出为 SillyTavern 世界书格式
常见问题
标签提取不生效?
- 确认已勾选「原始 (chat.mes)」
- 检查标签名拼写
- 用
nagDebug()在浏览器控制台查看原始内容 - 确认黑名单没有误删正文标签
生成频繁报错重试?
- AI 回复过短未达最小长度 → 降低最小章节长度
- 网络波动 → 检查连接,增加回复后等待时间
使用其他插件时冲突?
展开高级设置,在对应阶段开启弹窗检测,适当增加等待超时和额外等待时间。
导出内容为空?
检查是否勾选了 AI 回复、楼层范围是否正确、标签名是否匹配。
TXT转世界书相关问题?
请参阅 txtToWorldbook.md 中的常见问题章节。
调试
浏览器控制台 (F12) 中可用:
nagDebug(); // 查看最后一条 AI 消息的原始内容
nagDebug(5); // 查看第 5 楼的原始内容
项目结构
novel-auto-generator/
├── index.js / manifest.json # 稳定安装入口
├── src/
│ ├── bootstrap.js # 宿主启动
│ ├── host/ # SillyTavern 能力与生成接口
│ ├── novel/ # 自动续写、恢复、标签过滤
│ ├── storage/ # 检查点、事务、迁移与写入锁
│ └── worldbook/ # commands / entries / processing / formats
├── txtToWorldbook/
│ ├── app/ / main.js # 应用装配与兼容 API
│ ├── core/ / infra/ # 状态、请求基础设施与数据库
│ ├── services/ # DOM-free 业务服务与兼容入口
│ └── ui/ / styles/ # UI 适配、视图与独立弹窗样式
├── scripts/ # 边界检查、真实宿主验收、压力测试
├── tests/ # Vitest 单元与集成回归
└── docs/ # 方案、验收、发布与回退
1.9.0 升级说明
已验收 SillyTavern 1.13.2、1.19.0,Edge 和 Firefox;请通过 localhost 或 HTTPS 使用任务功能(需要 Web Locks)。更新前先导出任务和世界书。新版本保留完成成果、迁移前备份和待确认续写状态;设置/任务导出不含 API 密钥,导入后按需重新填写。凭据仍存放于本地浏览器明文存储。
人工修改在章节重生成后保留;单独重 Roll 某条目会明确替换该条目的人工覆盖。停止续写后,酒馆已发出的生成可能继续完成;原聊天存在待确认发送时,不会向新聊天自动重发。
升级、备份及回退步骤见 发布与回退。
开发与测试
本项目使用 Vitest 作为自动化测试框架,覆盖 TXT 转世界书核心模块。
后续结构调整与可靠性改进见 重构与可靠性改进方案,包含任务生命周期、兼容迁移、分批实施和验收标准。
运行测试
# 安装依赖
npm ci
执行完整检查(lint、格式、类型、边界、版本、363 项测试)
npm run verify
监听模式(开发时使用)
npm run test:watch
核心存储/命令/生命周期覆盖率门槛
npm run test:coverage
合成数据性能基线(Node + fake-indexeddb)
npm run benchmark:commit
npm run benchmark:text
测试覆盖范围
自动化测试覆盖工具、错误、国际化、差异、响应解析、世界书合并、任务处理、API URL、IndexedDB、设置面板 DOM 装配与持久化,以及公开 API 契约。实际文件数与用例数以 npm test 输出为准。
工程与兼容测试基线见 B00 基线记录。自动化测试不能替代真实酒馆、浏览器和恢复流程的手动回归。
手动回归测试
发布前检查清单见 tests/REGRESSION.md,已执行的浏览器与集成验收范围见 验收记录。
贡献
欢迎提交 Issue 和 Pull Request。
许可证
MIT License