ai-novel-writer

agent
Security Audit
Pass
Health Pass
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 24 GitHub stars
Code Pass
  • Code scan — Scanned 4 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

AI 全链路小说创作工具

README.md

📖 AI 全链路小说创作工具

English | 中文

🚀 低成本AI小说创作,全流程本地向量记忆,兼容主流API

✨ 功能特点

  • 💰 极致低成本:用国内大模型API,10万字小说仅需 3-5元
  • 🧠 RAG上下文记忆:ChromaDB向量库完全本地,自动检索相关设定,解决AI"人设崩了"问题
  • 🔗 全链路创作:从世界观设定 → 人物设计 → 大纲规划 → 逐章生成 → 续写/润色,完整流程
  • ✏️ 可编辑可调整:每一步生成后支持手动编辑,修改自动更新向量库
  • 💾 全数据持久化:所有生成内容、原文本、Prompt、一致性检查结果、角色图谱均自动持久化到向量库,切换标签页或小说不丢失
  • 🎯 章节目标字数:支持设置每章目标字数(500-20000字),AI按目标生成,不足时自动续写
  • 📊 字数统计:每个步骤实时显示当前文本字数,顶部全局统计一览无余
  • 🎨 风格润色:模仿指定作品/作家的写作风格,一键润色已有文本
  • 🔍 AI一致性检查:自动检测人名矛盾、设定冲突、逻辑不一致
  • 🔎 全局查找替换:一键在所有设定和章节中查找替换文本(如修改人名自动同步)
  • 🕸️ 角色关系图谱:AI自动提取角色关系,Graphviz可视化展示
  • 📤 一键导出:完整小说导出Markdown格式,支持直接下载
  • 🔌 通用兼容:默认火山方舟豆包API(按量付费,完全合规),也可接任何OpenAI格式API
  • 🌐 国内友好:不用翻墙,访问稳定
  • 🔒 max_tokens安全截断:API层自动限制max_tokens不超过模型上限,防止参数超限报错
  • 🔒 隐私安全:向量库和所有创作数据都在你本地电脑,不上传第三方
  • 📚 多小说管理:支持同时管理多本小说,独立向量库,一键切换
  • 📋 章节管理面板:可视化卡片式展示所有已生成章节(标题+字数+状态),点击即可选中切换,一目了然
  • 🎭 六阶段渐进式节奏控制:6阶段(开篇→早期发展→中期发展→后期发展→高潮→收尾)策略随进度渐进变化,大纲范围(0→1→2)、RAG前瞻(0→0→1→1→2)、剧透过滤(strict→moderate→minimal→none)逐步放宽,避免开篇剧透、发展中赶进度、高潮仓促、收尾散漫
  • 🛡️ 四级剧透过滤系统:大纲总述和人物设定根据阶段自动过滤前瞻信息——开篇全过滤、早期发展过滤重大剧透、中后期只过滤最终结局、高潮/收尾不过滤,从根源防止AI「知道了结局就抢跑」
  • 🔍 生成后范围校验:每章生成后自动检测是否引用了后续章节关键词或包含与当前阶段不符的前瞻性内容,抢跑问题及时发现
  • 🔒 生成参数持久化:人物设定的主角/配角人数、大纲的总章节数和每章字数等参数在生成时自动保存,刷新页面后自动恢复为上次使用的值,不再重置默认
  • 🚀 全阶段防抢跑指令:每个阶段都有力度不同的防抢跑指令——开篇「严禁抢跑」、早期发展「不要抢跑」、中期发展「控制节奏」、高潮「保持节奏」,续写轮次同样遵循

🏗️ 技术架构

┌──────────────────────────────────────────────────────────────────┐
│                       Web 界面 (Streamlit)                       │
│  世界观|人物|大纲|章节|续写|润色|一致性检查|查找替换|角色图谱|导出│
└────────────────────────────┬─────────────────────────────────────┘
                             │
┌────────────────────────────▼─────────────────────────────────────┐
│                    全链路创作工作流                                │
│  严格顺序:世界观 → 人物 → 大纲 → 章节 → 续写/润色              │
│  修改上游 → 冲突预警 → 全局查找替换 → 一致性检查                │
│  AI角色关系提取 → Graphviz可视化图谱                              │
│  章节生成优化:分类上下文构建 + 六阶段渐进节奏控制 + 四级剧透过滤,避免Token膨胀和剧情前移         │
└────────────────────────────┬─────────────────────────────────────┘
                             │
┌────────────────────────────▼─────────────────────────────────────┐
│ 🔍 RAG检索流程                                                   │
│  新章节 → 分类上下文构建 → 本地向量库找出相关设定 → 拼给AI       │
│  核心设定直取 + 相关大纲提取 + 前章摘要 + 语义搜索补充          │
└────────────────────────────┬─────────────────────────────────────┘
                             │
        ┌────────────────────┴────────────────────┐
        │                                    │
┌───────▼───────┐                ┌───────────▼───────────┐
│ 本地ChromaDB  │                │   云端大模型API        │
│ (向量存储检索)│                │ (豆包/GPT/其他)         │
│  完全免费     │                │   按token按量付费       │
└───────────────┘                └───────────────────────┘

核心原理

为什么用本地向量库?

  • AI上下文窗口有限,写长篇小说容易遗忘前面设定,导致人设崩塌
  • RAG(检索增强生成)技术只把当前章节最相关的上下文给AI,Token数量稳定不暴涨,省钱又精准
  • 向量库放本地,不用花钱买云端向量服务,隐私更好

章节生成的AI上下文逻辑(含六阶段渐进节奏控制)

  • 不是简单地把所有内容都塞给AI,而是分类构建 + 阶段感知 + 剧透过滤上下文,控制Token用量并保证叙事节奏:
    1. 阶段自动识别:根据当前章节数/总章数自动判断所处阶段(开篇/早期发展/中期发展/后期发展/高潮/收尾),6阶段策略渐进变化而非跳跃式切换
    2. 核心设定直取:从已生成内容直接获取世界观(≤4000字)、人物(≤6000字),比向量检索更完整精准(所有阶段一致传入)
    3. 相关大纲提取:范围随阶段渐进增长(0→1→2) — 开篇只看本章(range=0);早期发展±1章;中后期发展/高潮±2章。大纲总述部分根据剧透级别做渐进式过滤(strict→moderate→minimal→none),≤3000字
    4. 前情回顾:仅取最近2章末尾1500字作为衔接,不传全文
    5. 语义搜索补充:用当前章节标题在向量库做语义搜索;RAG前瞻策略随阶段渐进变化(0→0→1→1→2) — 开篇和早期发展不看后续,中期发展看下一章,高潮允许跨章联动;跳过已直接包含的设定/人物/大纲,其他章节内容每条截取前800字
    6. 四级剧透过滤:大纲总述和人物设定中的前瞻信息(角色最终命运、结局走向等)根据阶段自动过滤——开篇strict(全过滤)、早期发展moderate(过滤重大剧透)、中后期minimal(只过滤结局)、高潮/收尾none(不过滤)
    7. 阶段专属叙事指令:每阶段注入不同的AI叙事指导+防抢跑指令——开篇「严禁抢跑+循序渐进」、早期发展「不要抢跑+小步前进」、中期发展「控制节奏+稳步推进」、后期发展「不要跳章+蓄势待发」、高潮「张力拉满+切忌仓促」、收尾「聚焦收束+不要拖沓」
    8. 目标字数控制(分阶段策略)
      • 开篇阶段:Prompt采用宽松策略——目标字数仅作参考,若自然结尾在70%以上也可接受,质量优先于字数
      • 收尾阶段:允许略少于目标字数,收尾重在质量而非篇幅
      • 其他阶段:硬性要求目标字数(允许±20%浮动),AI输出不足70%时自动续写(最多3轮)
    9. 生成后范围校验:每章生成后自动检查是否引用了后续章节关键词或包含与当前剧透级别不符的前瞻性表述,抢跑问题及时发现并记录警告
    10. max_tokens安全截断:API层自动限制max_tokens不超过模型上限(32768),防止参数超限报错

六阶段渐进式节奏控制总览

核心原则:策略随进度渐进变化,而非跳跃式切换。早期紧、中期稳、后期宽,每个阶段都有明确的节奏边界。

阶段 占比 大纲范围 RAG前瞻 剧透过滤 叙事重点
开篇 (opening) ≤12% 0(仅看本章) 不看后续 strict(全过滤) 循序渐进、悬念留白、严禁抢跑
早期发展 (early_dev) 12-35% ±1 不看后续 moderate(过滤重大剧透) 小步前进、不要提前写结果
中期发展 (mid_dev) 35-60% ±2 看下一章 minimal(只过滤结局) 稳步推进、不要赶进度
后期发展 (late_dev) 60-78% ±2 看下一章 minimal(只过滤结局) 蓄势待发、不要提前写高潮
高潮 (climax) 78-92% ±2 允许跨章联动 none(不过滤) 张力拉满、回收伏笔、切忌仓促
收尾 (resolution) ≥92% ±1 看下一章 none(不过滤) 聚焦收束、回响前文、不要拖沓

🚀 快速开始

前置要求

  • Python 3.9+
  • Graphviz 系统包(用于角色关系图谱渲染,macOS: brew install graphviz
  • 一个大模型API Key(推荐火山方舟按量付费)

1. 克隆项目

git clone https://github.com/KKKenChow/ai-novel-writer.git
cd ai-novel-writer

2. 安装依赖

pip install -r requirements.txt

3. 配置 API Key

复制环境变量模板:

cp .env.example .env

编辑 .env 文件:

# 你的API Key
VOLC_API_KEY=your_actual_api_key_here

# API Base URL(默认火山方舟,可换成其他兼容OpenAI格式的API)
VOLC_API_BASE=https://ark.cn-beijing.volces.com/api/v3/chat/completions

# 模型名称
VOLC_MODEL=doubao-pro-32k

💡 也可以在启动后的界面侧边栏直接输入,无需修改文件。

⚠️ 重要:合规使用说明

  • 不要使用 CodingPlan 优惠订阅的API Key做非编程用途,会违反用户协议,可能封号
  • 正确做法:使用 火山方舟 按量付费,任何合法用途都允许,价格依然很便宜

其他API兼容

你可以换成任何兼容OpenAI API格式的服务商:

服务商 API Base URL 示例 价格参考
火山方舟(推荐) https://ark.cn-beijing.volces.com/api/v1/chat/completions 10万字≈3-5元
百度千帆 https://qianfan.baidubce.com/v2 类似价格
阿里通义 https://api.openai-proxy.org/v1 类似价格
DeepSeek https://api.deepseek.com/v1 更便宜
OpenAI https://api.openai.com/v1 稍贵

改完API Base和模型名称就能用,代码不用动。

4. 运行

streamlit run app.py

终端会输出本地地址 http://localhost:8501,浏览器打开即可使用。

默认只监听本机(localhost),不会暴露到外网,安全可靠。


📖 使用指南

创作流程(严格顺序)

工具采用严格的顺序创作流程,每一步依赖前一步的输出作为上下文:

1️⃣ 世界观设定 → 2️⃣ 人物设定 → 3️⃣ 小说大纲 → 4️⃣ 生成章节 → 5️⃣ 续写/润色/工具/导出

为什么必须按顺序?

  • 人物的力量体系、社会地位必须基于世界观来设计
  • 大纲的情节走向必须基于人物关系来规划
  • 章节正文必须引用世界观、人物和大纲来保持一致性

前置步骤未完成时,生成按钮会被禁用,并明确提示缺少哪些步骤。

第一步 🌍 世界观设定

  1. 在文本框描述你想要的小说题材和背景
    • 例如:一部现代都市背景的修真小说,主角在大城市打工偶然获得修炼传承
  2. 点击「生成世界观」
  3. 生成后可以直接编辑修改,修改后自动保存更新到向量库
  4. ⚠️ 如果后续步骤(人物/大纲/章节)已存在,修改世界观会弹出冲突预警
  5. 支持「🗑️ 清除世界观」一键清空并删除向量库数据

第二步 👤 人物设定

  1. 前置条件:必须先完成世界观设定
  2. 补充你对人物的特殊要求
  3. 选择要几个主角、几个配角(参数自动保存:生成后刷新页面不会重置为默认值,保持上次使用的设置)
  4. 点击「生成人物设定」
  5. 编辑调整,自动保存
  6. 支持「🗑️ 清除人物设定」一键清空

第三步 📋 小说大纲

  1. 前置条件:必须先完成世界观 + 人物设定
  2. 补充对情节走向的要求
  3. 设定总章节数(支持范围输入如"30-50",参数自动保存
  4. 设定每章大概字数(参数自动保存
  5. 点击「生成大纲」
  6. 编辑调整,自动保存
  7. 支持「🗑️ 清除大纲」一键清空

第四步 📖 生成章节正文

  1. 前置条件:必须先完成世界观 + 人物 + 大纲
  2. 章节管理面板
    • 在选择框上方展示可视化卡片网格,所有已生成章节一目了然
    • 每张卡片显示:章节号、标题(截断)、字数统计、状态着色(✅绿色≥1500字 / ⚠️橙色500~1500字 / ❗红色<500字)
    • 点击任意卡片即可自动选中该章节,无需在下拉列表中查找
    • 顶部显示总章节数、总字数、规划章节数等统计信息
  3. 选择/新建章节
    • 已有章节可通过下拉列表快速选择,进行编辑或重新生成
    • 也可手动输入新的章节号和标题(大纲中的标题会自动推荐)
  4. 设置目标字数:500-20000字,默认2000字
  5. 点击「生成这一章」
    • ✨ 自动分类构建上下文(核心设定 + 相关大纲 + 前章摘要 + 向量检索),保证设定一致性
    • 💡 全阶段节奏控制:6阶段渐进策略(开篇→早期发展→中期发展→后期发展→高潮→收尾),大纲范围、RAG前瞻、剧透过滤均随进度渐进变化,每个阶段都有专属防抢跑指令
    • 💡 点击章节标题旁的 ? 图标可查看AI上下文构建逻辑详情
  6. 生成后可以编辑修改,修改自动更新向量库
  7. 已生成的章节可点击「🔄 重新生成这一章」
  8. 支持「🗑️ 删除这一章」单章删除

⚠️ 目标字数与max_tokens的关系:中文1字≈1.5-2个token,如果 max_tokens 设置小于目标字数×1.5,AI输出可能会在达到目标字数前被截断。建议 max_tokens ≥ 目标字数 × 1.5。如果AI一次生成的内容不足目标字数的70%,系统会自动续写(最多3轮),直到内容长度达标。

第五步 ✍️ 续写

续写功能不受流程顺序约束,但建议至少有世界观和人物设定:

  1. 选择续写来源
    • 从已有章节续写:下拉选择章节,自动加载内容
    • 自由输入文本续写:粘贴任意文本
  2. 填写续写要求(默认"继续往下写"就行)
  3. 设置续写目标字数
  4. 点击「开始续写」
  5. 续写结果支持:
    • 📋 合并全文预览(原文 + 续写)
    • 📎 一键追加到章节末尾
    • 🗑️ 清除续写结果

第六步 🎨 风格润色

模仿指定作品或作家的写作风格润色已有文本:

  1. 选择润色来源
    • 从已有章节选择
    • 自由输入文本
  2. 选择模仿风格:输入作品名(如"红楼梦")或作家名(如"余华")
  3. 点击「开始润色」
  4. 左右对比显示原文和润色后文本
  5. 润色结果支持:
    • ✅ 一键替换章节内容
    • 🗑️ 清除润色结果

第七步 🔍 一致性检查

修改了人物名字、世界观设定后,担心前后矛盾?用一致性检查:

  1. 至少完成两个步骤(世界观/人物/大纲)后可用
  2. 点击「开始一致性检查」
  3. AI会逐对交叉比对并标出:
    • 🔴 严重矛盾(如人名不一致,必须修改)
    • 🟡 潜在问题(建议修改,可能影响连贯性)
    • 一致无问题
  4. 检查结果自动持久化,切换标签页后仍在
  5. 支持「🗑️ 清除检查结果」

第八步 🔎 全局查找替换

修改人物名字后,不再需要手动去每个步骤逐一修改:

  1. 在「查找内容」输入要替换的文本(如"李明")
  2. 实时预览匹配结果(显示在哪些部分、各有多少处)
  3. 在「替换为」输入新文本(如"张三")
  4. 点击「执行替换」→ 二次确认后,一键替换所有内容
  5. 替换范围包括:世界观、人物设定、大纲、所有章节(标题+正文)
  6. 替换后自动同步更新向量库

第九步 🕸️ 角色关系图谱

可视化展示角色之间的关系网络:

  1. 前置条件:必须先完成人物设定
  2. 点击「生成角色关系图谱」
  3. AI自动从设定中提取角色和关系
  4. 生成可视化图谱:
    • 🔵 主角、🔴 反派、🟡 配角 — 不同颜色区分角色类型
    • 连线标注关系类型:师徒、恋人、敌人、朋友、主仆、同门、亲属等
  5. 下方同时显示角色列表和关系详情
  6. 图谱数据自动持久化,支持「🗑️ 清除角色图谱」

第十步 📤 导出小说

全部创作完成后:

  1. 切换到「导出小说」标签
  2. 可以预览,点击「保存到文件」存在 output/ 目录
  3. 或者直接点击「下载Markdown文件」下载到本地

🔄 编辑与冲突管理

编辑已有内容

所有步骤生成后都支持手动编辑,编辑会自动保存到向量库:

  • 世界观、人物、大纲、章节内容均可随时编辑
  • 编辑后离开焦点即自动保存,无需手动操作

冲突预警机制

修改上游步骤时,系统会自动检测下游已存在的内容并发出预警:

修改步骤 可能影响的下游内容
🌍 世界观设定 👤 人物、📋 大纲、📖 章节
👤 人物设定 📋 大纲、📖 章节
📋 小说大纲 📖 章节

例如:你在人物设定中把主角名字从"李明"改成"张三",大纲和章节里的"李明"不会自动变化。系统会警告你:

⚠️ 人物设定已更新!以下内容可能需要重新生成:📋 小说大纲、📖 正文章节

推荐修改流程:

  1. 修改上游内容 → 收到冲突预警
  2. 使用「🔎 全局查找替换」一键同步旧名称
  3. 使用「🔍 一致性检查」确认无遗漏矛盾
  4. 完成!

重新生成与删除

如果对某一步的结果不满意:

  • 已有内容时,生成按钮自动变为「🔄 重新生成XXX」
  • 重新生成会覆盖当前内容,请确认后再操作
  • 每个标签页都提供「🗑️ 清除」按钮,可一键清空该步骤的所有数据(包括向量库中的持久化数据)
  • 章节支持单独删除某一章

💾 数据持久化

持久化范围

所有操作结果均自动保存到本地ChromaDB向量库,切换标签页或切换小说后数据不会丢失:

数据类型 持久化内容 存储方式
世界观 生成内容 + 原始Prompt 向量库section + extra_data
人物设定 生成内容 + 原始Prompt + 主角人数+配角人数(参数持久化) 向量库section + extra_data
大纲 生成内容 + 原始Prompt + 总章节数+每章字数(参数持久化) 向量库section + extra_data
章节 章节内容 + 标题 向量库section
一致性检查 检查结果 extra_data
角色图谱 图谱JSON数据 extra_data

extra_data 机制

非核心创作内容(如检查结果、原始Prompt、图谱数据等)通过 extra_data 机制存储在ChromaDB中:

  • 使用单个JSON文档(_extra_data)存储所有额外数据
  • 通过 save_extra_data(key, value) / load_extra_data(key) / delete_extra_field(key) 读写
  • 与向量库section独立管理,互不影响

📚 多小说管理

侧边栏小说列表

左侧边栏展示所有小说,当前选中的小说以醒目的蓝色渐变卡片显示:

  • 📖 + 蓝色高亮边框 + 「当前选中」标签 = 正在编辑的小说
  • 📕 + 暗色卡片 = 其他小说

操作

操作 说明
创建新小说 在「小说名称」输入框输入新名称,自动创建新向量库
切换小说 点击小说列表中的「✏️ 继续」按钮
删除小说 点击「🗑️ 删除」,二次确认后删除
删除所有小说 点击「💣 删除所有小说」,二次确认后清空

数据存储

  • 每本小说保存在 chroma_db/ 目录下的独立 Collection 中
  • 小说ID格式:novel_时间戳(不含书名,避免特殊字符问题)
  • 切换小说时自动加载对应向量库数据(包括所有持久化的extra_data)
  • 导出的小说保存在 output/ 目录

💡 使用技巧

成本控制

小说长度 预估费用(火山方舟)
1万字 0.3-0.5元
10万字 3-5元
50万字 15-25元
100万字 30-50元

就是一杯奶茶钱写一本长篇小说。

省钱技巧

  • 先用大纲规划好:大纲占Token少,调好大纲再写章节,避免写完不满意重来
  • 善用编辑:AI生成的内容可以直接修改,不用每次都重新生成
  • 续写代替重写:如果只是一段不满意,用续写功能补充,比整章重生成便宜
  • 合理设置max_tokens:章节生成时,max_tokens 设为目标字数的1.5-2倍即可,设太大会浪费配额

写作技巧

  • 世界观描述尽量具体:越详细的描述,AI生成的设定越贴合你的想法
  • 人物设定补充关键冲突:告诉AI你想要什么样的角色矛盾,大纲会更精彩
  • 大纲分卷规划:设定较多的章节数(如50章),大纲会自动分卷,节奏更好
  • 章节标题先定好:在生成前先想好章节标题,AI会根据标题方向生成内容
  • 善用全局替换:改人名时用「查找替换」一键同步,比手动改省事得多
  • 善用一致性检查:写了几章后跑一次检查,及早发现矛盾,避免越写越乱
  • 利用风格润色:先生成内容,再用喜欢的作家风格润色,效果更好
  • 利用章节管理面板:通过卡片颜色快速定位字数不足或过短的章节,有针对性地补写或重新生成
  • 第一章不必追求长:系统对开篇阶段采用质量优先策略,如果自然收束在目标字数70%以上也是可以接受的;如果感觉节奏太快,可以适当降低目标字数让AI更从容地写好引入部分
  • 相信节奏控制系统:系统会根据章节位置自动调整策略——早期不会让你看到后续剧透,中期不会让你赶进度,后期不会让你提前写高潮。你只需要在大纲中规划好每章的内容范围,系统会确保AI不抢跑不跑偏

📂 项目文件结构

local-ai-novel/
├── api/
│   └── api_client.py           # 通用大模型API客户端(兼容OpenAI格式)
├── vector_store/
│   └── local_chroma.py         # 本地ChromaDB向量存储封装(含extra_data持久化)
├── workflow/
│   └── novel_workflow.py       # 全链路创作工作流 + 一致性检查 + 查找替换 + 角色图谱
├── app.py                      # Streamlit Web界面(主入口,10个功能标签页)
├── output/                     # 导出的小说保存在这里(自动创建)
├── chroma_db/                  # Chroma向量数据库文件(运行后自动生成)
├── .streamlit/
│   └── config.toml             # Streamlit配置(默认仅本地访问)
├── requirements.txt            # Python依赖
├── .env.example                # 环境变量示例
├── .env                        # 环境变量(需自行创建,勿提交到Git)
├── .gitignore                  # Git忽略规则(排除敏感数据和向量库)
├── LICENSE                     # MIT许可证
└── README.md                   # 本文件

❓ 常见问题

Q: 向量库是什么?放在本地是什么意思?

A: 向量库就是一个智能搜索引擎,帮AI记住前面写过的设定。放在本地就是数据存在你自己电脑硬盘上,不花钱,隐私好。

Q: 所有AI模型都能用吗?

A: 是的,只要是兼容OpenAI聊天API格式的都能用。向量库只输出纯文本,任何AI都看得懂。

Q: prompt会越来越长吗?token会越来越贵吗?

A: 不会。章节生成采用分类上下文构建 + 六阶段渐进节奏控制

  • 核心设定直取(世界观≤4000字、人物≤6000字,所有阶段一致传入,不裁剪以避免关键信息缺失)
  • 大纲范围随阶段渐进增长(开篇0→早期发展±1→中后期±2),总述部分根据剧透级别做渐进式过滤,≤3000字
  • 前章摘要(仅最近2章末尾1500字)
  • RAG前瞻随阶段渐进变化(开篇/早期发展0→中期/后期1→高潮2),最多4条结果,跳过已包含的设定
  • 阶段专属叙事指令 + 防抢跑指令自动注入prompt,力度随阶段调整
    整体prompt长度稳定可控,费用也稳定。
  • 开篇阶段采用宽松字数策略:目标字数仅作参考,质量优先于长度;若自然结尾在70%以上即可接受
  • 收尾阶段允许略少于目标字数,重在质量
  • 其他阶段:如果AI一次输出不足目标字数70%,系统会自动续写(最多3轮)

Q: 目标字数和max_tokens什么关系?

A: 中文1字≈1.5-2个token。如果 max_tokens < 目标字数×1.5,AI输出会在达到目标字数前被截断(比如目标2000字但max_tokens设1500,可能只输出1000字左右就被截断了)。建议 max_tokens ≥ 目标字数 × 1.5。系统会在API层自动限制max_tokens不超过模型上限(32768),防止参数超限报错。

Q: 生成的章节字数不够怎么办?

A: 系统内置了自动续写机制:如果AI一次输出的内容不足目标字数的70%,会自动发起续写请求(最多3轮),每轮带上前文末尾保持连贯,直到内容长度达标。你可以在每个步骤的编辑区域上方看到当前字数,顶部进度区域也有全局字数统计概览。

Q: 编辑后旧数据会留在向量库里吗?

A: 不会。每次保存时使用固定的文档ID(如 setting_world_settingchapter_chapter_1),编辑保存会自动覆盖旧数据,向量库里永远是最新版本。

Q: 修改了人物名字,怎么同步到所有内容?

A: 使用「🔎 全局查找替换」功能!输入旧名字和新名字,一键替换所有设定和章节中的匹配文本,替换后自动同步向量库。再也不用逐个手动修改了。

Q: 角色关系图谱是怎么生成的?

A: AI会分析你的人物设定和大纲,自动提取角色及其关系(师徒、恋人、敌人等),然后用Graphviz渲染成可视化图谱。每次点击生成都会重新分析,确保和最新设定一致。图谱数据会持久化,切换标签页不会丢失。

Q: 一致性检查和角色图谱的结果会保存吗?

A: 会的!所有结果(包括一致性检查结果、角色图谱数据、各步骤的原始Prompt)都通过ChromaDB的extra_data机制持久化。切换标签页或切换小说后再回来,数据仍然在。清除需要手动点击「🗑️ 清除」按钮。

Q: 生成人物/大纲后刷新页面,参数会重置吗?

A: 不会。主角人数、配角人数、总章节数、每章字数等参数在生成时会自动保存到本地向量库和session状态中,刷新页面后会自动恢复为上次生成时使用的值。只有点击「清除」后才会重置为默认值。

Q: 第一章生成出来感觉内容很挤、节奏太快怎么办?

A: 系统已对第1章做了专项优化(开篇阶段 strict 级别,四层防护):

  1. 大纲隔离:开篇阶段大纲范围=0,只看本章大纲行,完全不知道后续章节内容,从根源防止抢跑
  2. 剧透全过滤:大纲总述和人物设定中的所有前瞻信息(角色命运、结局走向等)全部过滤,AI不知道角色最终会怎样
  3. 宽松字数策略:允许低于目标字数,质量优先于长度,不给模型凑字数的压力
  4. 「严禁抢跑」指令:Prompt明确要求本章只需完成引入,绝不能提前写后续章节剧情;续写轮次同样禁止跨章
  5. 生成后范围校验:自动检测是否引用了后续章节关键词,抢跑问题及时发现
    如果仍然感觉急促,可以在生成前适当降低目标字数,或在编辑时手动调整内容分布。

Q: 不只是开篇,其他章节也有抢跑/节奏问题怎么办?

A: 系统已实现了六阶段渐进式节奏控制,每一章都会根据其位置自动调整策略:

  • 早期发展(12-35%):大纲±1章、RAG不看后续、剧透过滤重大信息、prompt要求「小步前进,不要提前写结果」
  • 中期发展(35-60%):大纲±2章、RAG看下一章、只过滤结局剧透、prompt要求「控制节奏,不要赶进度」
  • 后期发展(60-78%):大纲±2章、RAG看下一章、只过滤结局剧透、prompt要求「蓄势待发,不要提前写高潮」
  • 每章生成后都会做范围校验,检查是否覆盖了超出当前大纲范围的内容

Q: 这个项目合规吗?用火山会封号吗?

A: 如果你按说明用火山方舟按量付费,完全合规,不会封号。不要用CodingPlan优惠订阅做非编程用途就行。

Q: 安全吗?别人能通过网络访问我的应用吗?

A: 默认配置只监听localhost(本机回环地址),不对外暴露。.env 文件包含你的API Key,已在 .gitignore 中排除,不会被提交到Git。chroma_db/ 目录包含你的创作数据,同样已排除。


🛠️ 开发计划

欢迎提Issue和PR:

  • 支持自动连续生成多章
  • 支持情节分支/剧情树
  • 支持导出PDF/EPUB
  • 支持更多向量库后端(FAISS、Milvus等)
  • 角色图谱交互式编辑
  • 写作风格模板(古风、科幻、言情等)
  • 章节生成支持自定义上下文策略 → 已完成:六阶段渐进式节奏控制(开篇→早期发展→中期发展→后期发展→高潮→收尾,大纲范围/RAG前瞻/剧透过滤渐进变化 + 生成后范围校验)

🤝 贡献指南

  1. Fork 本仓库
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

📄 许可证

MIT License - 见 LICENSE 文件。

你可以自由使用、修改、分发,用于个人或商业项目。


🙏 致谢

  • ChromaDB - 开源轻量级向量数据库
  • Streamlit - 快速Web框架
  • Graphviz - 图形可视化工具
  • 火山引擎 - 高性价比中文大模型

Reviews (0)

No results found