乐于分享
好东西不私藏

AI 小说写作助手 V2

AI 小说写作助手 V2

📖 AI 小说写作助手

通过网盘分享的文件:AI小说生成器V2版本.exe

链接: https://pan.baidu.com/s/13S3FpXtQ6Uk9lpagSGi6Hw?pwd=xzjc 提取码: xzjc 复制这段内容后打开百度网盘手机App,操作更方便哦

基于 Flask + 大模型 API 的可视化小说写作工具。通过四层记忆架构,让大模型在长篇连载中始终记住人设、大纲、世界观,全程不跑偏。

核心特性

四层记忆架构

层级
功能
说明
第一层
提示词持久设定
人设、世界观、写作风格一次配置,每次生成自动注入
第二层
上下文固定锚定
全书大纲作为锚点始终存在于 prompt 中
第三层
外部大纲文档挂载
100章大纲管理,生成时自动匹配对应章节描述
第四层
Agent 记忆持久化
章节摘要、角色状态跨会话保存,自动加载

主要功能

  • 一键批量生成 — 设置章节范围,自动逐章生成全书
  • 自动摘要存储 — 每章写完自动提取摘要存入记忆,下一章自动带上前文记忆
  • 自动文件存储 — 按书名创建文件夹,每章按 第001章_标题.md 格式保存
  • 多模型适配 — 支持阿里百炼、Kimi、DeepSeek,页面可切换
  • 多主题界面 — 浅色(默认)、深色、暖色、护眼绿四套主题
  • Markdown 输出 — 生成内容强制 Markdown 格式,方便后期排版发布

快速开始

1. 安装依赖

cd novel-writing-assistantpip install -r requirements.txt

2. 启动应用

python app.py

浏览器打开 http://localhost:5000

3. 配置 API Key

打开页面后点击「⚙️ 设置」tab,填入你的阿里百炼 API Key 并保存。

也可以通过环境变量配置:set DASHSCOPE_API_KEY=你的Key

4. 开始写作

方式一:单章生成

  • 在「✍️ 写作」tab 输入 写第1章,点击生成

方式二:一键批量生成

  • 切到「🚀 一键生成」tab
  • 确认书名(默认:我在女子学院当校草)
  • 设置起始章和结束章
  • 点击「开始批量生成」
  • 系统自动逐章完成,每章自动保存文件和摘要

项目结构

novel-writing-assistant/├── app.py                  # Flask 主入口 + API 路由├── config.py               # 配置管理(模型、路径)├── requirements.txt        # Python 依赖├── models/│   └── llm_client.py       # 统一 LLM 接口层├── memory/│   ├── anchor.py           # 提示词 + 大纲锚定管理│   └── persistent.py       # 记忆持久化(章节摘要、角色状态)├── templates/│   └── index.html          # 前端页面├── static/│   └── style.css           # 多主题样式├── data/                   # 配置数据存储│   ├── prompts.json        # 人设、世界观、写作风格│   ├── outline.json        # 书名 + 全书大纲│   ├── memory.json         # 章节摘要 + 角色状态│   └── settings.json       # API Key + 模型选择└── books/                  # 生成的小说存储    └── 我在女子学院当校草/        ├── 第001章_阴差阳错.md        ├── 第002章_308宿舍集合.md        └── ...

页面模块说明

✍️ 写作

手动输入写作指令,如"写第5章"、"续写第三章,加入新角色"。生成完成后自动保存文件和摘要。

🚀 一键生成

  • 书名输入框 — 决定存储文件夹名,可随时修改
  • 章节范围 — 起始章到结束章
  • 进度显示 — 实时显示当前生成进度
  • 已生成章节列表 — 查看已完成的章节和字数
  • 停止按钮 — 随时中断,下次从中断处继续

🎭 人设/世界观

  • 人物设定 — 所有角色的性格、背景、口头禅
  • 世界观设定 — 故事背景、时代环境、核心氛围
  • 写作风格 — 字数要求、对话比例、格式要求、禁止事项

📋 大纲管理

  • 书名 — 同时用于文件夹命名
  • 全书大纲 — 每行一章,格式:第X章:标题 —— 简述

🧠 记忆管理

  • 自动生成的章节摘要(也可手动添加)
  • 角色状态变化记录
  • 可清空重置

⚙️ 设置

  • 模型切换(阿里百炼 / Kimi / DeepSeek)
  • API Key 配置(页面配置优先于环境变量)

工作原理

每次调用大模型生成时,系统自动构建如下 prompt 结构:

System Prompt:├── 【人物设定】 ← prompts.json.character├── 【世界观设定】 ← prompts.json.worldview├── 【写作风格】 ← prompts.json.style├── 【全书大纲】 ← outline.json.content├── 【已完成章节摘要】 ← memory.json(最近5章)└── 【角色最新状态】 ← memory.json(最近10条)User Prompt:└── "请根据以下大纲写第X章..." + 大纲中对应章节描述

这样无论写到第几章,模型始终能"看到"完整的人设、世界观和前文摘要。

执行流程图

以下是用户输入"写第1章"后的完整执行流程:

┌─────────────────────────────────────────────────────────────────┐│                    用户输入:"写第1章"                             │└──────────────────────────┬──────────────────────────────────────┘                           │                           ▼┌─────────────────────────────────────────────────────────────────┐│  步骤1:解析章节号                                                ││  从用户输入中提取 chapter_num = 1                                 │└──────────────────────────┬──────────────────────────────────────┘                           │                           ▼┌─────────────────────────────────────────────────────────────────┐│  步骤2:构建写作指令                                              ││  从 outline.json 中查找第1章大纲:                                ││  "第1章:阴差阳错 —— 杨一凡收到录取通知书..."                      ││  生成 prompt:"请根据以下大纲写第1章的完整内容..."                  │└──────────────────────────┬──────────────────────────────────────┘                           │                           ▼┌─────────────────────────────────────────────────────────────────┐│  步骤3:组装完整 System Prompt(四层记忆注入)                     ││                                                                   ││  ┌───────────────────────────────────────────────┐               ││  │ 第一层:人物设定(prompts.json → character)    │               ││  │ 杨一凡、时大猛、张临志等6人完整人设             │               ││  └───────────────────────────────────────────────┘               ││  ┌───────────────────────────────────────────────┐               ││  │ 第二层:世界观设定(prompts.json → worldview)  │               ││  │ 济南女子学校、308宿舍、时代背景                 │               ││  └───────────────────────────────────────────────┘               ││  ┌───────────────────────────────────────────────┐               ││  │ 第三层:写作风格(prompts.json → style)        │               ││  │ 6000字+、对话70%、Markdown格式、结尾哲理       │               ││  └───────────────────────────────────────────────┘               ││  ┌───────────────────────────────────────────────┐               ││  │ 第四层:全书大纲(outline.json → content)      │               ││  │ 100章完整大纲锚定                              │               ││  └───────────────────────────────────────────────┘               ││  ┌───────────────────────────────────────────────┐               ││  │ 第五层:历史记忆(memory.json)                 │               ││  │ 最近5章摘要 + 最近10条角色状态                  │               ││  └───────────────────────────────────────────────┘               │└──────────────────────────┬──────────────────────────────────────┘                           │                           ▼┌─────────────────────────────────────────────────────────────────┐│  步骤4:调用大模型 API                                            ││  将 System Prompt + User Prompt 发送给阿里百炼(qwen-plus)        ││  max_tokens=8000,temperature=0.8                                │└──────────────────────────┬──────────────────────────────────────┘                           │                           ▼┌─────────────────────────────────────────────────────────────────┐│  步骤5:模型返回第1章内容(Markdown 格式,6000字+)               │└──────────────────────────┬──────────────────────────────────────┘                           │                           ▼┌─────────────────────────────────────────────────────────────────┐│  步骤6:自动保存文件                                              ││  → books/我在女子学院当校草/第001章_阴差阳错.md                    │└──────────────────────────┬──────────────────────────────────────┘                           │                           ▼┌─────────────────────────────────────────────────────────────────┐│  步骤7:自动摘要                                                  ││  再次调用模型,传入本章内容,提取100-200字摘要                    ││  存入 memory.json → chapters[]                                   │└──────────────────────────┬──────────────────────────────────────┘                           │                           ▼┌─────────────────────────────────────────────────────────────────┐│  步骤8:返回前端展示内容                                          ││  显示生成内容 + 字数统计 + "已自动保存"提示                       │└─────────────────────────────────────────────────────────────────┘                           │                           ▼         ┌─────────────────────────────────────┐         │  下次输入"写第2章"时:               │         │  步骤3 的第五层会自动加载第1章摘要   │         │  → 模型"记住"了前面的故事           │         └─────────────────────────────────────┘

上下文一致性保证机制

每一章生成时的 prompt 包含:━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  固定不变(每章都带):    ✓ 完整人设 → 人物性格不会跑偏    ✓ 完整世界观 → 背景设定不会矛盾    ✓ 写作风格规范 → 文风保持统一    ✓ 100章大纲 → 知道整体走向  动态增长(每章累加):    ✓ 前N章摘要 → 记住已发生的事    ✓ 角色状态 → 知道人物当前处境━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

这就是为什么模型能在第50章依然记得第1章的人设——因为每次调用都会把完整设定重新注入,而历史记忆通过摘要的方式传递前文信息。

写作风格默认配置

当前默认配置了以下硬性要求(可在页面修改):

  • 每章 6000 字以上
  • 对话占比 70% 以上
  • 幽默搞笑、积极向上
  • 上下文衔接呼应(承接上章、回顾前文)
  • 每章结尾必须有哲理感慨独白
  • 输出必须为 Markdown 格式
  • 山东各地方言特色点缀

多模型支持

模型
环境变量
说明
阿里百炼
DASHSCOPE_API_KEY
默认使用,模型 qwen-plus
Kimi
KIMI_API_KEY
moonshot-v1-8k
DeepSeek
DEEPSEEK_API_KEY
deepseek-chat

页面配置的 Key 优先级高于环境变量。切换模型在「设置」tab 选择即可。

注意事项

  1. 批量生成时每章约需 1-2 分钟(取决于模型响应速度和字数要求)
  2. 生成 100 章全书预计需要 2-3 小时,建议分批生成(如每次10章)
  3. 如遇 API 限流,可稍后重试,从中断章节继续
  4. data/ 目录下的 JSON 文件均可手动编辑
  5. books/ 目录下的 .md 文件可直接用于公众号发布或电子书排版

    通过网盘分享的文件:AI小说生成器V2版本.exe

    链接: https://pan.baidu.com/s/13S3FpXtQ6Uk9lpagSGi6Hw?pwd=xzjc 提取码: xzjc 复制这段内容后打开百度网盘手机App,操作更方便哦