Profile
Back to NewsBack
GitHub Trending 1 min
Reader Mode
CyrilPeng/Novel-Auto-Generator: SillyTavern扩展插件,支持自动化小说生成、智能标签提取、灵活导出

CyrilPeng/Novel-Auto-Generator: SillyTavern扩展插件,支持自动化小说生成、智能标签提取、灵活导出

15 hours ago

Novel Auto Generator | 小说自动生成器


功能概览

本插件包含两个核心功能模块:

自动生成小说 — 设定章节数和提示词,AI 持续创作,支持断点续传、弹窗兼容、标签提取、多格式导出。

TXT转世界书 — 上传 TXT 小说,AI 自动提取角色/地点/组织等信息生成 SillyTavern 世界书。支持并行处理、智能重试、自动断点续传、增量导出、别名合并等。详见 完整文档。


快速开始

安装

  1. SillyTavern 中进入 扩展 → 安装扩展
  2. 输入仓库地址安装:
https://github.com/CyrilPeng/novel-auto-generator
  1. 在扩展栏找到「小说自动生成器」即可使用

自动生成小说

在已有角色对话的基础上,自动发送提示词让 AI 持续创作。

基本用法

  1. 打开一个角色对话(确保 AI 已有上下文)
  2. 展开插件面板,设置目标章节数
  3. 填写提示词(如「继续」「继续推进剧情」)
  4. 点击 开始,挂机等待

控制按钮

| 按钮 | 功能 | | :-----: | :------------------ | | ▶️ 开始 | 从当前进度开始/继续 | | ⏸️ 暂停 | 当前章节完成后暂停 | | ⏯️ 恢复 | 从暂停状态恢复 | | ⏹️ 停止 | 完全停止任务 | | 🔄 重置 | 进度归零 |

断点续传

进度自动保存在浏览器中。关闭页面后重新打开,可从上次位置继续。


高级功能

标签提取

从 AI 回复中提取指定 XML 标签内容,支持白名单提取和黑名单移除。

<thinking>AI 的思考过程...</thinking>
<content>小说正文内容...</content>
<summary>本章总结...</summary>

使用方法:

  1. 勾选「原始 (chat.mes)」读取未经正则处理的原始内容
  2. 模式选择「只提取指定标签」或「全部内容」
  3. 填写要提取/移除的标签名(空格或逗号分隔)
  4. 点击「刷新预览」确认效果
| 模式 | 示例 | 效果 | | :--------- | :------------------------------ | :-------------------------- | | 白名单提取 | content | 只保留 内的内容 | | 黑名单移除 | thinking note | 删除这些标签及其内容 | | 组合使用 | 提取 content,移除 thinking | 两者同时生效 |

弹窗检测(插件兼容)

同时使用剧情推进、总结等插件时,自动检测弹窗通知,等待其他插件处理完成后再继续。

分为发送阶段(消息发送后)和回复阶段(AI 回复后)两个检测点,分别可配置等待超时和额外等待时间。

导出设置

  • 支持 TXT / JSON 格式
  • 可指定楼层范围
  • 可选包含用户消息 / AI 回复
  • 可选读取原始内容或显示内容

生成控制参数

| 参数 | 默认值 | 说明 | | :----------- | :----: | :------------------ | | 自动保存间隔 | 50 章 | 每 N 章自动导出备份 | | 最大重试 | 3 次 | 单章失败后重试次数 | | 最小章节长度 | 100 字 | 低于此字数视为失败 |

AI 返回空内容且酒馆生成已结束时,插件会按「最大重试」自动重发当前章节提示词,避免假流式或截断造成整轮等待超时后停摆;连续失败后停止并提示检查模型设置。


TXT转世界书

将 TXT 小说转换为 SillyTavern 世界书格式。这是一个功能丰富的独立模块,详细文档见 txtToWorldbook.md。

快速上手:

  1. 点击插件面板中的「TXT转世界书」按钮
  2. 选择 API(可直接使用酒馆当前连接的 AI)
  3. 上传 TXT 文件 → 开始转换
  4. 处理完成后导出为 SillyTavern 世界书格式

常见问题

标签提取不生效?

  1. 确认已勾选「原始 (chat.mes)」
  2. 检查标签名拼写
  3. 用 nagDebug() 在浏览器控制台查看原始内容
  4. 确认黑名单没有误删正文标签

生成频繁报错重试?

  • 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

Chat with me