易生 9e7fe179c2 feat: 同步即兴写作模式/项目备份/文件编辑
即兴写作模式(improv):项目可在大纲模式 / 即兴模式之间切换。即兴模式不依赖全书蓝图,按章口述意图 → 单章蓝图(可选细纲)→ 正文,靠伏笔池(open_threads)维持连续性,finalize 后自动更新已埋未收 / 已收未结 / 待开发三段结构。
- 新增 novel_generator/improv.py、frontend ImprovStep.vue
- 6 个 improv prompt(已泛化,去除 R-18 措辞)
- WorkshopView 加模式横幅,ArchitectureStep 即兴模式下隐藏剧情弧/全书规划
- 单章蓝图/细纲均支持基于建议修订

项目备份:顶栏「备份管理」面板支持创建带备注的快照、列表查看、一键还原(还原前自动备份)、删除。
文件管理可编辑:FilesView / ReaderView 单章模式新增编辑/保存按钮和「未保存」指示器。

其他:网络小说预设加专属 detailed_outline_prompt(爽点/冲突格式);盖世双谐风格同步反套路武侠校准日志。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 00:00:00 +08:00
2026-05-16 15:13:05 +08:00
2026-03-25 06:36:18 +00:00

NovelWriter

基于大语言模型的智能小说创作平台。Vue 3 前端 + FastAPI 后端,从构思到成稿的一站式 AI 创作体验。

更新记录

2026-05-26

  • 即兴写作模式 — 项目可在「大纲模式」(先写全书蓝图再逐章生成)和「即兴模式」(每章口述意图 → 单章蓝图 → 可选细纲 → 正文)之间切换。即兴模式不依赖全书蓝图,靠**伏笔池open_threads**维持连续性finalize 后自动更新已埋未收 / 已收未结 / 待开发三段结构。
  • 单章蓝图/细纲修订 — 即兴模式下,单章蓝图和细纲都支持基于建议修订("仅调整指出的字段,其他保留")。
  • 创作工坊模式横幅 — 顶部彩色横幅显示当前工作流模式,一键切换。
  • 项目备份与还原 — 项目顶栏新增「备份管理」面板:一键创建带备注的快照、列表查看(时间/备注/大小)、一键还原(还原前自动备份当前状态)、删除旧备份。
  • 文件管理可编辑 — 文件管理页面打开 .txt/.json/.md 后可进入编辑模式,"未保存"指示器与保存/取消按钮齐全。

2026-04-18

  • 创意讨论 5 种模式 — 标题栏快速切换:轻松闲聊(简短随意)/ 专业顾问(结构化建议)/ 头脑风暴(多角色视角碰撞)/ 魔鬼代言人(挑战想法找漏洞)/ 角色扮演(以小说角色身份对话)
  • 润色多模式 — 通用润色 / 修改剧情 / 增加内容 三种模式,可注入细纲/角色状态/前文摘要/世界观 4 项上下文作为参考
  • 详细细纲生成 — 新增独立的"生成章节细纲"步骤位于蓝图与章节生成之间支持精简1000-2000字/章和详细3000-5000字/章)两种模式,可批量生成、修订、原位替换
  • 按场景分段生成 — 章节生成支持"按场景分段"开关:基于细纲解析场景,高强度场景与普通场景分别用不同密度生成(高强度浓墨重彩,普通简练推进)
  • 用户画像系统 — 全局偏好画像(独立"用户画像"页面),可手动编辑,也可在创意讨论/修订/润色中半自动提取偏好(弹窗确认后写入),生成架构/角色/剧情/蓝图/细纲时自动参考
  • 全局网络代理 — 模型配置页新增"网络代理"区块(地址+端口+启用开关),保存后立即生效,对所有 LLM 和 Embedding 请求生效
  • Agent 工具定义 — 新增 agent_tools.py25 个工具的 JSON Schema 定义)和 agent_config.py(完整的 Agent system prompt 和工作流定义),为后续接入 Hermes Agent / LangGraph 等 Agent 框架做准备
  • 导出标题去重 — 合并导出小说时检测章节是否已自带标题,避免重复添加章节标题

2026-03-30

  • 场景润色对比面板 — 全新段落对齐对比视图,左右分列展示润色前后差异(字符级高亮),下方独立编辑面板支持选择编辑润色前/后文本并保存
  • 续写修订上下文注入 — 续写架构的 5 个修订面板(方向大纲/世界观/角色/剧情弧/角色状态)新增"注入上下文"复选框,可选择注入种子/角色/世界观/剧情作为参考
  • 修订功能增强 — 后端修订接口支持读取项目已有架构内容作为参考资料注入 prompt提升修订质量
  • 角色状态匹配修复 — 修复精炼章节时角色名匹配失败的问题(如"男主角名:\n陈玉"格式),现在会检查角色块文本前几行进行辅助匹配

2026-03-25

  • 功能同步 — 同步私有版功能更新创意讨论、分步修订、角色外貌固定项、蓝图细化、去AI痕迹分轮多深度处理、阅读器可编辑保存等
  • Docker 部署修复 — 修复多个 Docker 首次部署问题xp_presets.json 目录冲突、单文件挂载报错、shell 运算符优先级等),简化部署流程

2026-03-12

  • 初始公开发布 — NovelWriter 公开版首次发布包含完整的小说架构生成、章节生成、文风仿写、叙事DNA、续写扩展等核心功能

功能特性

功能模块 说明
双工作流模式 大纲模式(全书规划 → 逐章生成)/ 即兴模式(按章口述意图 → 单章蓝图 → 正文),可随项目切换
小说架构生成 核心种子 / 世界观构建 / 角色动力学 / 情节架构
章节目录规划 悬念节奏曲线 / 伏笔管理 / 强度分布设计
智能章节生成 知识库检索 / 前文摘要 / 上下文连贯性保障
即兴写作 不依赖全书蓝图靠伏笔池open_threads维持连续性适合心中无完整规划的创作
文风仿写 分析目标文本风格 → 保存为模板 → 章节生成时自动模仿
叙事DNA 分析作者叙事模式(内容配比 / 节奏 / 场景结构)→ 注入架构、蓝图、章节三层生成
作者参考库 导入作者原文 → 向量化存储 → 生成时检索相似片段作为写法示例
续写扩展 在已有故事基础上追加新剧情弧与角色
创意讨论 多轮对话头脑风暴,注入项目上下文(种子/角色/世界观等),与 AI 商讨创意方向
分步修订 对分步生成的每个环节,可基于已有内容 + 修改建议让 LLM 局部修订,无需重新生成
去AI痕迹 分轮多深度清除 AI 生成痕迹,支持单章和批量处理,生成前后对比
状态追踪 角色状态自动更新 / 前文摘要自动维护 / 外貌特征固定项保护(更新时不丢失)
一致性检查 检测剧情矛盾与设定冲突
知识库 导入外部参考资料,增强创作深度
提示词预设 多套提示词方案一键切换,支持自定义编辑(含创意讨论提示词)
XP预设管理 自定义内容类型预设,可创建/编辑/删除,一键注入所有生成阶段
小说阅读 内置阅读器,支持单章 / 全文阅读、字号调节
项目管理 多项目并行管理,独立配置与存储,支持备份/还原快照

快速开始

环境要求

  • Python 3.12
  • Node.js 18+(仅开发模式需要)
  • 有效的 LLM API KeyDeepSeek / OpenAI / Gemini / Ollama 等兼容 OpenAI 格式的服务)

本地启动

# 克隆项目
git clone <你的仓库地址>
cd NovelWriter

# 安装 Python 依赖
pip install -r requirements.txt

# 生产模式启动(自动构建前端)
bash start_api.sh

# 或开发模式(后端热重载 + 前端开发服务器)
bash start_api.sh --dev

启动后访问 http://localhost:7860

Docker 部署

# 构建并启动
docker compose up -d

# 查看日志
docker compose logs -f

# 停止
docker compose down

启动后访问 http://your-server-ip:7860

手动 Docker 构建

docker build -t novel-writer .

docker run -d \
  --name novel-writer \
  -p 7860:7860 \
  -v ./output:/app/output \
  -v ./config.json:/app/config.json \
  -v ./styles:/app/styles \
  -v ./prompts:/app/prompts \
  novel-writer

使用流程

1. 配置模型

在「模型配置」页面设置:

  • LLM 配置 — API Key、Base URL、模型名、Temperature 等
  • Embedding 配置 — 向量嵌入模型,用于知识库和作者参考库检索

支持所有兼容 OpenAI API 格式的服务DeepSeek、硅基流动、OpenRouter、Ollama 等)。

2. 创作

在「创作工坊」中按步骤操作:

  1. Step 1 生成架构 — 输入主题 / 类型 / 章节数,生成核心种子、角色体系、世界观、情节架构(支持分步生成,每步可基于建议修订)
  2. Step 2 生成目录 — 规划各章定位、悬念密度、伏笔操作
  3. Step 3 生成章节 — 逐章生成正文,可指定角色 / 道具 / 场景 / 文风(支持流式输出)
  4. Step 4 定稿 — 润色章节,自动更新前文摘要与角色状态
  5. Step 5 去AI痕迹 — 分轮清除 AI 生成痕迹,支持单章和批量处理
  6. Step 6 续写 — 追加新弧与角色(支持分步续写,每步可修订),回到 Step 2-5 继续

3. 辅助功能

  • 创意讨论 — 在导航栏「创意讨论」中与 AI 进行多轮对话头脑风暴,可选择注入项目上下文(核心种子 / 角色 / 世界观等),讨论创意方向和解决创作难题
  • 分步修订 — 分步生成的每个环节(核心种子 / 角色 / 世界观 / 情节等)生成后,展开「✏️ 基于建议修订」面板,输入修改建议即可局部修订
  • 文风仿写 — 粘贴目标文本 → 分析风格 → 保存模板 → 在 Step 3「文风选择」中选用
  • 叙事DNA — 粘贴样本文章 → 分析叙事模式 → 在 Step 1/2/3 的「叙事DNA风格」中选用
  • 作者参考库 — 上传 .txt 原文 → 向量化 → 生成时自动检索相似片段注入 prompt
  • 提示词方案 — 切换 / 编辑不同风格的提示词预设(含创意讨论提示词)
  • 知识库 — 导入 .txt 参考资料,生成章节时自动检索
  • 一致性检查 — 检测章节与设定的逻辑矛盾
  • 小说阅读 — 内置阅读器,按章或全文阅读已生成的内容

高级功能

叙事DNA

叙事DNA 分析作者在内容层面的写作模式,包括:内容配比、推进节奏、场景结构、角色关系模式、对话风格、叙事视角。

使用步骤:

  1. 打开「文风与DNA」页面
  2. 选择 LLM 配置和目标样式(需先创建同名文风样式)
  3. 粘贴 10005000 字的样本文本(建议使用完整章节)
  4. 点击「分析叙事DNA」结果自动保存
  5. 在创作工坊 Step 1/2/3 的「叙事DNA风格」下拉框中选择

叙事DNA vs 文风仿写:

  • 文风仿写(文笔层)= 词汇、句式、修辞、节奏感 → Step 3「文风选择」
  • 叙事DNA叙事层= 内容配比、升温节奏、场景结构 → 各阶段「叙事DNA风格」
  • 两者可独立选择、相互叠加

作者参考库

将作者原文导入向量库,生成章节时自动检索相似片段作为写法示例。

  1. 在「文风与DNA」页面右侧「作者参考库」区域
  2. 选择 Embedding 配置,选择关联的文风样式
  3. 上传 .txt 格式作者原文(支持多文件批量上传)
  4. 生成章节时系统自动检索并以 【参考原文写法】 注入 prompt

提示词预设

项目内置多套提示词方案,可在「提示词方案」页面切换或自定义编辑:

预设 适用场景
网络小说 起点、番茄等网络连载小说
短篇小说 3 万字内短篇小说,剧情短平快
连载小说 多弧结构连载小说

每套预设包含完整的架构、目录、章节等各阶段 prompt可根据需要自由修改。

项目结构

NovelWriter/
├── api_server.py              # FastAPI 后端入口
├── web_server.py              # Gradio 旧版入口(兼容保留)
├── prompt_definitions.py      # 提示词定义与预设管理
├── config_manager.py          # 配置管理
├── llm_adapters.py            # LLM 接口适配OpenAI / Ollama
├── embedding_adapters.py      # Embedding 接口适配
├── consistency_checker.py     # 一致性检查
├── chapter_directory_parser.py# 章节目录解析
├── utils.py                   # 工具函数
├── novel_generator/           # 核心生成逻辑
│   ├── architecture.py        #   架构生成
│   ├── blueprint.py           #   目录生成
│   ├── chapter.py             #   章节生成
│   ├── improv.py              #   即兴模式(单章蓝图/细纲/正文/伏笔池)
│   ├── finalization.py        #   定稿处理
│   ├── humanizer.py           #   去AI痕迹处理
│   ├── knowledge.py           #   知识库管理
│   └── vectorstore_utils.py   #   向量存储工具
├── api/                       # FastAPI 路由
│   └── routers/               #   各功能模块路由
├── frontend/                  # Vue 3 + TypeScript 前端
│   └── src/
│       ├── views/             #   页面视图
│       ├── components/        #   组件
│       └── stores/            #   状态管理
├── prompts/                   # 提示词预设 JSON
├── styles/                    # 文风模板 JSON
├── config.example.json        # 配置模板
├── Dockerfile                 # Docker 多阶段构建
├── docker-compose.yml         # Docker Compose 编排
├── requirements.txt           # Python 依赖
├── start_api.sh               # Linux/macOS 启动脚本
└── start_web.bat              # Windows 启动脚本

常用配置模板

DeepSeek

LLM:
  Base URL: https://api.deepseek.com/v1
  模型: deepseek-chat
  Temperature: 0.7
  Max Tokens: 8192

Embedding:
  接口格式: OpenAI
  Base URL: https://api.openai.com/v1
  模型: text-embedding-ada-002

硅基流动SiliconFlow

LLM:
  Base URL: https://api.siliconflow.cn/v1
  模型: deepseek-ai/DeepSeek-V3
  Temperature: 0.7
  Max Tokens: 32768

Embedding:
  接口格式: OpenAI
  Base URL: https://api.siliconflow.cn/v1
  模型: Qwen/Qwen3-Embedding-4B

Ollama 本地(免费)

# 先安装模型
ollama pull qwen2.5:7b
ollama pull nomic-embed-text
LLM:
  Base URL: http://localhost:11434/v1
  模型: qwen2.5:7b
  API Key: ollama

Embedding:
  接口格式: Ollama
  Base URL: http://localhost:11434
  模型: nomic-embed-text

服务器部署

systemd 服务

创建 /etc/systemd/system/novel-writer.service

[Unit]
Description=NovelWriter Web Service
After=network.target

[Service]
Type=simple
User=your-username
WorkingDirectory=/path/to/NovelWriter
ExecStart=/usr/bin/python3 -m uvicorn api_server:app --host 0.0.0.0 --port 7860
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now novel-writer

Nginx 反向代理(可选)

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost:7860;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

疑难解答

Q: 无法访问页面? 检查防火墙是否放通 7860 端口,确认服务正常运行。

Q: 生成失败 / Expecting value 错误? API Key 或 Base URL 配置有误,检查「模型配置」页面。

Q: 生成速度慢? 尝试降低 max_tokens、使用更快的模型或部署本地 Ollama。

Q: 章节目录信息(本章定位/简述等)全部为空? LLM 生成目录时格式不标准。系统已内置兼容处理,若仍出现可打开「文件管理」检查 Novel_directory.txt,确认章节头为 第X章 - 标题 格式。

Q: 叙事DNA 分析后章节没有体现风格? 确认在 Step 1/2/3 各自的「叙事DNA风格」下拉框中选择了对应样式。叙事DNA 与文风仿写是两个独立的选项。

致谢

部分代码参考了:https://github.com/YILING0013/AI_NovelGenerator

License

AGPL-3.0

Description
基于AI_NovelGenerator,我改进得到的小说生成器。
Readme AGPL-3.0 642 KiB
Languages
Python 68.3%
Vue 23.4%
TypeScript 7.5%
CSS 0.3%
Dockerfile 0.2%
Other 0.2%