AI 智能小说创作助手(NovelForge AI)—— 完整开发文档
本文档是交给「华为云码道 CodeArts 代码智能体」(或任意 AI 编程工具)的项目级开发需求规格说明书。 开发模式:对话式全栈开发。技术栈: Vue 3 + Go ,交付形态: Windows 桌面安装包 。 文档版本:v1.0 | 编写日期:2026-10-09
目录
*
- 产品定义
*
- 目标用户与使用场景
*
- 部署形态
*
- 总体功能清单(功能全景)
*
- 技术栈选型
*
- 系统架构
*
- 项目目录结构
第一部分 项目概述与总体设计
1. 产品定义
1.1 产品名称
- 定位:本地化桌面小说创作生产力工具,由 AI 大模型驱动,一键生成 "大纲 — 章节 — 角色 — 物品 — 地图 — 伏笔 — 封面" 全要素完整小说工程。
1.2 产品核心价值
- 全流程自动化:用户只需填写少量参数(分类、标签、描述、章节数量、章节字数、文风、叙事视角等),即可自动生成完整小说及全部配套资料(角色卡、关系图谱、物品、地图、伏笔、封面提示词、大纲等)。
- 章节连贯性保障:生成引擎严格遵循 "故事大纲 + 章节大纲" 约束,通过上下文管理、状态追踪、伏笔状态机、防重复校验,保证 10–2000 章长篇小说前后衔接、不跑题、不重复。
- 本地化与隐私:所有数据(小说、配置、密钥)存储在本地 SQLite;支持接入任何大模型(云端 API 或本地 Ollama),密钥本地加密保存,可完全离线创作。
- 可编辑、可导出、可阅读:所有生成内容支持人工修改;一键导出 TXT;内置小说风格阅读器在线阅读。
- 开箱即用:提供 Windows 安装包(NSIS),双击安装即可使用,无需配置开发环境。
1.3 目标用户
- 网文作者 / 兼职写手(需要快速出稿、搭世界观、管理伏笔)
1.4 关键约束(用户明确要求,必须满足)
| 编号 | 约束 |
| C1 | 技术栈固定为 Vue(前端)+ Go(后端) |
| C2 | 交付 Windows 安装包,安装即用 |
| C3 | 支持所有主流 AI 大模型,可选或自定义,用户自配接口密钥 |
| C4 | 章节数量支持 10–2000 章 |
| C5 | 章节必须衔接贯通、不重复、不跑题,严格符合故事大纲与章节大纲 |
| C6 | 生成要素:角色图谱关系链、角色卡片、角色详情、物品卡、物品详情、地图卡、地图详情、封面、大纲、章节大纲、章节列表、阅读器、伏笔管理、小说介绍、封面 AI 生成描述词(商业向) |
| C7 | 支持查看已生成小说历史列表 |
| C8 | 章节生成支持断点续传 |
| C9 | 所有已生成信息支持人工编辑修改 |
| C10 | 支持导出 TXT 文件 |
| C11 | 支持在线阅读器 |
| C12 | UI 支持黑白双主题切换,窗口顶部标题栏同步变色,整套 UI 带动画与小说风格 |
2. 目标用户与使用场景
(说明:此节为目录占位,具体内容并入 1.3 / 使用场景如下)
典型使用流程(主场景):
- 用户在「设置」中配置 1 个或多个模型(如 DeepSeek / 通义 / 豆包 / OpenAI / Ollama 本地),填写 API Key 并测试连通。
- 点击「新建小说」→ 进入创作向导:选择生成模型、填写标题(可空,AI 生成)、分类、标签、简介 / 描述、章节数量、每章字数、文风、叙事视角(均有预设可快速选择)。
- 点击「开始生成」→ 系统按顺序执行:生成故事大纲 → 生成章节大纲 → 逐章生成正文(流式展示)→ 每章完成后自动抽取 / 更新角色、物品、地图、伏笔、章节摘要。
- 生成过程中可随时「暂停 / 继续 / 停止」;中断或失败后可「断点续传」。
- 生成完成后在「小说工作台」查看与编辑:角色图谱(力导向关系图)、角色卡 / 详情、物品卡 / 详情、地图卡 / 详情、伏笔管理、封面(含商业级 AI 绘图提示词)、大纲、章节大纲、章节列表、小说介绍。
- 在「阅读器」在线阅读全文(换主题、调字号、加书签)。
- 一键导出 TXT;可随时回到「历史列表」继续管理旧项目。
3. 部署形态
- 形态:Windows 桌面应用(原生窗口 + 系统标题栏,支持标题栏深浅色同步)。
- 安装方式:NSIS 安装包(Setup.exe),安装向导、可选安装路径、桌面快捷方式、开始菜单项。
- 运行时:前端 Vue 构建产物由 Go 后端以单二进制内嵌方式托管,无需用户安装 Node / 浏览器。
- 数据:默认数据目录
%APPDATA%\NovelForge\(含 novelforge.db 数据库、covers/ 封面图片、exports/ 导出文件、logs/ 日志)。
4. 总体功能清单(功能全景)
下表为产品功能全景,★ 为优先级(P0 必须、P1 重要、P2 增强)。 斜体项为在用户原始需求基础上补充完善的功能 。
| 模块 | 功能点 | 说明 | 优先级 |
| 模型管理 | 预置模型库 | 内置主流模型模板(见 4.1) | P0 |
| 模型管理 | 自定义模型 | 任意 OpenAI 兼容 API / Anthropic / Gemini,自定义 Base URL + Key + 模型名 | P0 |
| 模型管理 | 密钥本地加密 | 密钥使用本机机器密钥 AES 加密存储,界面掩码显示 | P0 |
| 模型管理 | 连通性测试 | 一键测试模型可用性、延迟、上下文上限 | P0 |
| 模型管理 | 生成参数全局默认值 | 默认温度、超时、重试次数、并发 = 1 顺序生成 | P1 |
| 小说创建 | 创作向导 | 模型、标题、分类、标签、描述、章节数、章节字数、文风、视角、语言 | P0 |
| 小说创建 | 预设体系 | 分类预设 / 标签预设 / 文风预设 / 视角预设 / 语言预设 | P0 |
| 小说创建 | 字数与成本预估 | 按字数 × 章数 × 模型单价预估 Token 与成本 | P1 |
| 大纲系统 | 故事大纲生成 | 卷 / 幕结构、主线、冲突、结局走向 | P0 |
| 大纲系统 | 章节大纲生成 | 每章核心事件、出场角色、伏笔、结尾钩子 | P0 |
| 大纲系统 | 大纲校验与编辑 | 大纲可人工编辑,改动后可选 "重新生成受影响章节" | P0 |
| 章节引擎 | 顺序生成 10–2000 章 | 严格按章节大纲逐章生成 | P0 |
| 章节引擎 | 上下文一致性管理 | 全局设定 + 章节摘要 + 关键事件记忆 + 角色状态注入 | P0 |
| 章节引擎 | 防重复防跑题 | 大纲符合度约束 + 与前文相似度检测 + 校验重试 | P0 |
| 章节引擎 | 流式输出 | 生成过程实时流式展示 | P0 |
| 章节引擎 | 断点续传 | 任务状态机 + 进度持久化,中断 / 失败可续 | P0 |
| 章节引擎 | 暂停 / 继续 / 停止 | 生成队列控制 | P0 |
| 章节引擎 | 失败自动重试 | 指数退避重试,超限自动暂停并提示 | P0 |
| 章节引擎 | 章节摘要自动生成 | 每章完成后生成 200–300 字摘要,供上下文引用 | P0 |
| 角色系统 | 角色自动抽取 | 从大纲 / 章节自动识别角色并建卡 | P0 |
| 角色系统 | 角色卡片 | 姓名、身份、外貌、性格、能力、目标、口头禅等 | P0 |
| 角色系统 | 角色详情 | 完整档案 + 出场章节 + 状态变化时间线 | P0 |
| 角色系统 | 关系图谱 | 力导向图展示角色关系链,可点击跳转详情 | P0 |
| 角色系统 | 角色状态追踪 | 当前位置 / 目标 / 情绪 / 状态持续更新(一致性核心) | P0 |
| 物品系统 | 物品卡 / 物品详情 | 名称、类型、归属、能力、出现章节、状态 | P0 |
| 地图系统 | 地图卡 / 地图详情 | 地点、区域归属、与章节 / 角色 / 物品的关联 | P0 |
| 伏笔管理 | 伏笔列表与状态机 | 埋设→发展→回收 三态管理,关联章节 | P0 |
| 伏笔管理 | 伏笔回收提醒 | 大纲阶段规划伏笔回收点,生成到该章节时强提醒 | P1 |
| 封面系统 | AI 封面描述词 | 生成商业级绘图提示词(风格 / 构图 / 光线 / 色彩 / 商用元素) | P0 |
| 封面系统 | 封面图本地管理 | 封面图片存储、预览、替换(支持 AI 绘图工具出图后导入) | P1 |
| 小说介绍 | 自动生成 | 简介、卖点、受众定位、SEO 关键词 | P0 |
| 阅读器 | 在线阅读器 | 目录、翻页 / 滚动、字号 / 行距 / 字体、书签、进度记忆、深浅主题 | P0 |
| 导出 | TXT 导出 | 全文 / 分卷导出,UTF-8/GBK 编码,排版选项 | P0 |
| 导出 | 工程文件备份 / 恢复 | 导出 JSON 工程包,可再次导入 | P1 |
| 项目管理 | 历史列表 | 全部已生成小说,搜索 / 筛选 / 排序,显示统计信息 | P0 |
| 人工编辑 | 全要素可编辑 | 大纲、章节、角色、物品、地图、伏笔、介绍、封面词全部支持编辑 | P0 |
| 人工编辑 | 自动保存与草稿 | 编辑防丢,本地草稿自动保存 | P1 |
| UI | 黑白双主题 | 浅色(纸墨书香)/ 深色(午夜书房),全局一键切换 | P0 |
| UI | 标题栏主题同步 | 窗口顶部标题栏随主题切换深浅色 | P0 |
| UI | 动画与小说风格 | 页面过渡、骨架屏、打字机效果、图谱动画、章节翻页动效 | P0 |
| 系统 | 日志与异常上报 | 本地日志文件,崩溃兜底提示 | P1 |
| 系统 | 全局快捷键 | 新建小说 / 开始生成 / 暂停 / 主题切换等快捷键 | P2 |
| 系统 | 检查更新 | 可配置自动检查更新(P2 可选) | P2 |
5. 技术栈选型
5.1 总体选型(Vue + Go 桌面应用)
| 层 | 选型 | 说明 |
| 桌面壳 | Wails v2(Go) | Go 写桌面应用 + WebView 渲染前端,天然满足 Vue+Go,单 exe、体积小、原生窗口控制(支持标题栏主题同步)。首选方案 |
| 备选壳 | Electron + Go 侧车服务 | 若需更稳定的 WebView 兼容性可切换;Go 后端以本地 HTTP 服务提供 API,Electron 渲染 Vue 前端。实现方式需整体调整,默认不采用 |
| 前端框架 | Vue 3 + TypeScript | 组合式 API |
| 前端构建 | Vite | 快速开发与打包 |
| 状态管理 | Pinia | 全局状态(主题、当前小说、生成任务进度) |
| 路由 | Vue Router | 页面路由 |
| UI 组件库 | Naive UI(推荐) | 内置完善暗色主题、主题切换 API、动画过渡组件;备选 Element Plus |
| 图表 | ECharts 5 | 角色关系图谱(力导向图)、统计图表 |
| 富文本 / 阅读器 | 自研阅读器 + marked(如需 Markdown 渲染) | 章节正文以纯文本为主,阅读器自研 |
| 后端框架 | Go + Gin(或标准库 net/http) | RESTful API |
| ORM | GORM | 数据库操作 |
| 数据库 | SQLite(modernc.org/sqlite 纯 Go 驱动,无需 CGO) | 单文件、零配置、本地存储 |
| AI SDK | 自研统一适配层(不依赖单一 SDK) | OpenAI 兼容协议为主 + Anthropic + Gemini 原生协议 + Ollama 本地 |
| 密钥加密 | AES-256-GCM + 本机密钥(DPAPI 或机器指纹派生) | 本地密钥安全 |
| 打包 | NSIS(或 Wails 内置打包 + wails build -nsis) | 安装向导 |
5.2 为什么不选纯 Web / 纯 Electron
- 纯 Web 无法满足 "安装包安装 + 顶部标题栏主题同步";Electron 体积大、内存高;Wails(Go)与用户指定的 Vue+Go 技术栈完全一致,且原生支持窗口外观控制。
5.3 前端依赖清单(package.json 要点)
vue ^3.4, vue-router ^4, pinia ^2, naive-ui ^2, echarts ^5,
vite ^5, typescript ^5, axios(或原生 fetch), marked(可选)
5.4 后端依赖清单(go.mod 要点)
github.com/wailsapp/wails/v2 // 桌面壳
gorm.io/gorm + gorm.io/driver/sqlite // ORM
modernc.org/sqlite // 纯 Go SQLite(免 CGO)
github.com/gin-gonic/gin // HTTP(若 Wails 内嵌模式则用标准库即可)
github.com/google/uuid
golang.org/x/crypto // AES-GCM
github.com/sirupsen/logrus // 日志
6. 系统架构
6.1 架构总览(Mermaid)
flowchart TB
subgraph Frontend["前端层 Vue3 + TS(WebView 渲染)"]
UI[小说工作台 UI<br/>向导/大纲/章节/角色/物品/地图/伏笔/封面/阅读器]
Store[Pinia 状态管理<br/>主题/任务进度/当前小说]
Charts[ECharts 关系图谱与统计]
end
subgraph Backend["后端层 Go(Wails Runtime 内嵌)"]
API[HTTP / Wails 绑定 API 层]
SVC[业务服务层<br/>小说/大纲/章节/角色/物品/地图/伏笔/封面/导出]
GEN[AI 生成引擎<br/>上下文组装/一致性校验/断点续传]
ADAPT[模型适配器<br/>OpenAI兼容/Anthropic/Gemini/Ollama]
DB[(SQLite 本地数据库)]
FILES[本地文件:封面/导出/日志]
end
UI --> Store
UI --> API
Store --> API
API --> SVC
SVC --> GEN
SVC --> DB
GEN --> ADAPT
ADAPT -->|HTTPS| CLOUD["云端大模型 API"]
ADAPT -->|HTTP| OLLAMA["本地 Ollama"]
SVC --> FILES
6.2 核心数据流(一次完整小说生成)
sequenceDiagram
participant U as 用户
participant FE as 前端
participant BE as Go后端
participant AI as 大模型API
U->>FE: 新建小说并填写参数
FE->>BE: POST /api/v1/novels (创建+配置)
BE-->>FE: 返回 novel_id
U->>FE: 点击"开始生成"
FE->>BE: POST /api/v1/novels/:id/generate
BE->>AI: 生成故事大纲(JSON)
BE->>AI: 生成章节大纲(JSON,含伏笔规划)
BE-->>FE: 推送大纲完成事件(SSE/轮询)
loop 每个章节 i = 1..N
BE->>BE: 组装上下文(全局设定+章节摘要+角色状态+伏笔+本章大纲)
BE->>AI: 生成章节正文(流式)
AI-->>BE: 流式文本
BE-->>FE: 实时推送流式文本
BE->>BE: 一致性校验(防重复/大纲符合度)
BE->>AI: 生成章节摘要+抽取角色/物品/伏笔变化(JSON)
BE->>BE: 落库+更新角色状态/伏笔状态机
end
BE-->>FE: 生成完成事件
FE->>BE: GET 各要素数据 → 渲染图谱/卡片/阅读器
7. 项目目录结构
novelforge/
├── frontend/ # Vue 3 前端
│ ├── src/
│ │ ├── main.ts
│ │ ├── App.vue
│ │ ├── router/index.ts # 路由
│ │ ├── stores/ # Pinia:theme / novel / task / settings
│ │ ├── api/ # 后端 API 封装
│ │ ├── components/ # 通用组件(骨架屏/打字机/图谱/卡片)
│ │ ├── views/
│ │ │ ├── Home.vue # 工作台/历史列表
│ │ │ ├── CreateWizard.vue # 创作向导
│ │ │ ├── NovelWorkspace.vue # 小说工作台(Tab 容器)
│ │ │ ├── workspace/ # Outline / Chapters / Characters / Items / Maps / Foreshadows / Cover / Intro
│ │ │ ├── Reader.vue # 阅读器
│ │ │ ├── Settings.vue # 模型与全局设置
│ │ │ └── GenerationPanel.vue# 生成面板(流式/进度/控制)
│ │ ├── styles/ # 主题变量(浅色/深色)、动画
│ │ └── utils/
│ └── package.json / vite.config.ts
├── backend/
│ ├── main.go # Wails 入口
│ ├── internal/
│ │ ├── api/ # 路由与 handler
│ │ ├── service/ # 业务服务
│ │ ├── engine/ # AI 生成引擎(核心)
│ │ │ ├── context.go # 上下文组装
│ │ │ ├── pipeline.go # 生成流水线/状态机
│ │ │ ├── validate.go # 一致性/防重复校验
│ │ │ └── prompt.go # Prompt 模板
│ │ ├── adapter/ # 模型适配器
│ │ │ ├── openai.go anthropic.go gemini.go ollama.go factory.go
│ │ ├── model/ # GORM 模型
│ │ ├── store/ # 数据访问层
│ │ └── util/ # 加密/文本/日志
│ └── go.mod
├── build/ # Wails 构建资源、NSIS 脚本、图标
└── README.md / 安装说明.md
第二部分 数据模型设计
数据库:SQLite 单文件 novelforge.db 。全部表使用 utf8mb4 ,时间字段统一 UTC 存储、前端本地化显示。 约定:主键 id 为 INTEGER 自增; novel_id 外键统一指向 novels.id ;所有表包含 created_at / updated_at 。 生成类文本字段(正文、大纲、卡片内容)一律使用 TEXT 。
2.1 表清单总览
| 表名 | 用途 |
novels | 小说主表(含介绍、统计信息) |
novel_configs | 小说生成配置(模型、分类、标签、章节数、字数、文风、视角) |
story_outlines | 故事大纲(卷 / 幕结构) |
chapter_outlines | 章节大纲 |
chapters | 章节正文 |
chapter_summaries | 章节摘要(一致性上下文用) |
characters | 角色卡 |
character_relations | 角色关系(图谱数据) |
character_states | 角色状态快照(位置 / 目标 / 情绪时间线) |
items | 物品卡 |
maps | 地图 / 地点卡 |
foreshadowings | 伏笔 |
covers | 封面(AI 提示词 + 图片) |
generation_tasks | 生成任务(断点续传核心) |
model_configs | 模型配置 |
app_settings | 全局设置(KV) |
bookmarks | 阅读书签 |
reading_progress | 阅读进度 |
generation_logs | 生成日志 |
2.2 各表字段设计
novels(小说主表)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| title | TEXT | 标题(可 AI 生成) |
| category | TEXT | 分类(玄幻 / 都市 / 科幻 / 悬疑 / 言情 / 历史 / 武侠 / 轻小说 / 军事 / 游戏等) |
| tags | TEXT | 标签,JSON 数组字符串,如 ["热血","重生","系统"] |
| description | TEXT | 用户描述 / 创意来源 |
| intro | TEXT | 小说介绍(AI 生成,含卖点 / 受众 / SEO) |
| status | TEXT | 创作状态:draft/outlining/outline_done/generating/paused/completed/failed |
| total\_chapters | INTEGER | 目标章节数(10–2000) |
| total\_words | INTEGER | 全书目标字数(约 = 章节数 × 章节字数) |
| generated\_chapters | INTEGER | 已生成章节数 |
| language | TEXT | 语言:zh-CN 默认,可扩展 en |
| cover\_id | INTEGER | 关联 covers.id(可空) |
| created\_at / updated\_at | DATETIME | |
novel\_configs(生成配置,与 novels 一对一)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| novel\_id | INTEGER FK | |
| model\_config\_id | INTEGER FK | 使用的模型配置 |
| chapter\_count | INTEGER | 章节数量 10–2000 |
| chapter\_words | INTEGER | 每章字数(如 2000/3000/5000,预设 + 自定义) |
| writing\_style | TEXT | 文风(见 4.2 预设) |
| pov | TEXT | 叙事视角:first(第一人称)/ third_limited(第三人称限知)/ third_omniscient(第三人称全知)/ second(第二人称) |
| temperature | REAL | 温度(默认 0.8,可 0–1.5) |
| outline\_first | BOOLEAN | 是否先大纲后正文(默认 true) |
| auto\_extract | BOOLEAN | 每章后自动抽取角色 / 物品 / 伏笔(默认 true) |
| extra\_prompt | TEXT | 用户附加要求(可选) |
story\_outlines(故事大纲)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| novel\_id | INTEGER FK | |
| volume | INTEGER | 卷序号(第几卷) |
| volume\_title | TEXT | 卷名 |
| outline\_text | TEXT | 该卷大纲正文(主线 / 冲突 / 转折 / 结局) |
| order | INTEGER | 排序 |
chapter\_outlines(章节大纲)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| novel\_id | INTEGER FK | |
| chapter\_index | INTEGER | 章节序号 1..N(唯一约束 novel\_id+chapter\_index) |
| title | TEXT | 拟定章节名 |
| summary | TEXT | 本章核心事件(150–300 字) |
| characters | TEXT | 出场角色名 JSON 数组 |
| locations | TEXT | 涉及地点 JSON 数组 |
| foreshadow\_set | TEXT | 本章埋设伏笔 JSON 数组 |
| foreshadow\_reveal | TEXT | 本章回收伏笔 JSON 数组 |
| ending\_hook | TEXT | 结尾钩子 / 悬念设计 |
| status | TEXT | pending/generated/failed |
chapters(章节正文)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| novel\_id | INTEGER FK | |
| chapter\_index | INTEGER | 章节序号(唯一约束 novel\_id+chapter\_index) |
| title | TEXT | 章节标题 |
| content | TEXT | 正文(纯文本,含段落分隔) |
| word\_count | INTEGER | 实际字数 |
| outline\_id | INTEGER FK | 对应章节大纲 |
| status | TEXT | generating/generated/edited/failed |
| is\_edited | BOOLEAN | 是否被人工编辑过 |
| generated\_model | TEXT | 生成时使用的模型名 |
| created\_at / updated\_at | DATETIME | |
chapter\_summaries(章节摘要 —— 一致性核心)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| novel\_id | INTEGER FK | |
| chapter\_index | INTEGER | |
| summary | TEXT | 200–300 字章节摘要 |
| key\_events | TEXT | 关键事件列表 JSON |
| digest | TEXT | 每 10 章压缩一次的记忆摘要(滚动窗口) |
| updated\_at | DATETIME | |
characters(角色卡)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| novel\_id | INTEGER FK | |
| name | TEXT | 姓名 |
| role\_type | TEXT | 主角 / 重要配角 / 配角 / 反派 / 龙套 |
| identity | TEXT | 身份 / 职业 |
| appearance | TEXT | 外貌描述 |
| personality | TEXT | 性格 |
| abilities | TEXT | 能力 / 功法 / 特长 |
| goals | TEXT | 目标 / 动机 |
| background | TEXT | 背景故事 |
| habits | TEXT | 口头禅 / 习惯 |
| first\_appear\_chapter | INTEGER | 首次出场章节 |
| last\_appear\_chapter | INTEGER | 最近出场章节 |
| is\_ai\_generated | BOOLEAN | 是否 AI 抽取生成 |
| cover\_prompt | TEXT | 角色立绘 AI 提示词(可选,商业向) |
character\_relations(角色关系 —— 图谱数据)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| novel\_id | INTEGER FK | |
| source\_char\_id | INTEGER FK | 角色 A |
| target\_char\_id | INTEGER FK | 角色 B |
| relation\_type | TEXT | 关系类型(师徒 / 恋人 / 仇敌 / 兄弟 / 上下级 / 盟友 / 宿敌…) |
| description | TEXT | 关系描述 |
| strength | INTEGER | 关系强度 1–10(图谱连线粗细) |
| chapter\_index | INTEGER | 关系确立 / 变化的章节 |
character\_states(角色状态快照)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| novel\_id | INTEGER FK | |
| character\_id | INTEGER FK | |
| chapter\_index | INTEGER | 快照所在章节 |
| location | TEXT | 当前位置 |
| emotion | TEXT | 当前情绪 |
| current\_goal | TEXT | 当前目标 |
| status | TEXT | 状态(受伤 / 中毒 / 突破 / 昏迷…) |
| relationships\_note | TEXT | 关系变化备注 |
items(物品卡)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| novel\_id | INTEGER FK | |
| name | TEXT | 物品名 |
| item\_type | TEXT | 类型(武器 / 法宝 / 丹药 / 书籍 / 信物 / 科技造物 / 普通道具…) |
| owner | TEXT | 当前归属角色 |
| origin | TEXT | 来历 |
| ability | TEXT | 能力 / 功能描述 |
| history | TEXT | 物品经历 / 重要事件 |
| first\_appear\_chapter | INTEGER | 首次出现章节 |
| last\_appear\_chapter | INTEGER | 最近出现章节 |
| cover\_prompt | TEXT | 物品 AI 提示词(可选) |
maps(地图 / 地点卡)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| novel\_id | INTEGER FK | |
| name | TEXT | 地点名 |
| region | TEXT | 所属区域 / 大陆 / 国家 |
| map\_type | TEXT | 城池 / 宗门 / 森林 / 秘境 / 国家 / 星球… |
| description | TEXT | 地点描述 |
| significance | TEXT | 剧情意义 / 重要事件 |
| related\_characters | TEXT | 常驻角色 JSON |
| first\_appear\_chapter | INTEGER | 首次出现章节 |
| cover\_prompt | TEXT | 场景 AI 提示词(可选) |
foreshadowings(伏笔)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| novel\_id | INTEGER FK | |
| content | TEXT | 伏笔内容描述 |
| status | TEXT | planted(埋设)/ developing(发展)/ revealed(回收) |
| plant\_chapter | INTEGER | 埋设章节 |
| develop\_chapters | TEXT | 发展章节 JSON |
| reveal\_chapter | INTEGER | 计划回收章节(大纲规划) |
| actual\_reveal\_chapter | INTEGER | 实际回收章节 |
| importance | INTEGER | 重要度 1–5 |
| related\_characters | TEXT | 关联角色 JSON |
covers(封面)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| novel\_id | INTEGER FK | |
| prompt\_text | TEXT | 商业级 AI 绘图提示词(多方案可存多行) |
| style | TEXT | 封面风格(国风 / 赛博 / 日漫 / 写实…) |
| image\_path | TEXT | 本地封面图片路径(用户用绘图工具出图后导入) |
| is\_active | BOOLEAN | 是否当前使用 |
| created\_at / updated\_at | DATETIME | |
generation\_tasks(生成任务 —— 断点续传核心)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| novel\_id | INTEGER FK | |
| stage | TEXT | outline / chapter_outline / chapter / post_process / done |
| chapter\_index | INTEGER | 当前进行到的章节号(断点位置) |
| status | TEXT | queued/running/paused/stopped/error/completed |
| progress | REAL | 0–100 |
| error\_message | TEXT | 最近一次错误 |
| retry\_count | INTEGER | 当前章节已重试次数 |
| last\_error\_at | DATETIME | |
| started\_at / finished\_at | DATETIME | |
| resume\_token | TEXT | 断点续传令牌(含上下文指纹,防陈旧上下文) |
model\_configs(模型配置)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| name | TEXT | 显示名(如 "DeepSeek-V3") |
| provider | TEXT | openai_compatible / anthropic / gemini / ollama |
| base\_url | TEXT | API 地址(OpenAI 兼容 / Ollama 必填;官方可留默认) |
| api\_key\_encrypted | TEXT | AES-GCM 加密后的密钥 |
| model\_name | TEXT | 模型标识(如 deepseek-chat) |
| context\_window | INTEGER | 上下文上限(tokens,用于分窗) |
| max\_output\_tokens | INTEGER | 单次最大输出 |
| is\_default | BOOLEAN | 是否默认模型 |
| is\_enabled | BOOLEAN | 是否启用 |
| extra | TEXT | 扩展 JSON(如 anthropic 版本、gemini 项目) |
app\_settings(全局设置 KV)
| 字段 | 类型 | 说明 |
| key | TEXT PK | 如 theme / default_style / max_retries / retry_delay |
| value | TEXT | 值(JSON 序列化) |
bookmarks /reading\_progress(阅读器)
| 字段 | 类型 | 说明 |
| id / novel\_id / chapter\_index / note / created\_at | | 书签 |
| novel\_id(PK) / last\_chapter / scroll\_percent / font\_size / theme / updated\_at | | 阅读进度 |
generation\_logs(生成日志)
| 字段 | 类型 | 说明 |
| id | INTEGER PK | |
| novel\_id | INTEGER FK | |
| level | TEXT | info/warn/error |
| stage | TEXT | 阶段 |
| chapter\_index | INTEGER | 章节(可空) |
| message | TEXT | 日志内容 |
| created\_at | DATETIME | |
第三部分 后端 API 设计
接口风格:RESTful JSON,统一前缀 /api/v1 。在 Wails 模式下由 Go 直接注册路由;如需 Electron 侧车模式,则为 127.0.0.1:端口 本地服务。 通用响应格式:
{ "code": 0, "message": "ok", "data": {...} }
code=0 成功;非 0 为错误码。分页参数统一 ?page=1&page_size=20 。
3.1 模型管理
| 方法 | 路径 | 说明 |
| GET | /api/v1/models | 模型配置列表(密钥脱敏) |
| POST | /api/v1/models | 新增模型配置 |
| PUT | /api/v1/models/:id | 修改模型配置 |
| DELETE | /api/v1/models/:id | 删除模型配置 |
| POST | /api/v1/models/:id/test | 连通性测试(返回延迟 / 上下文可用性) |
| GET | /api/v1/models/presets | 预置模型模板列表(供一键填入) |
3.2 小说与项目管理
| 方法 | 路径 | 说明 |
| GET | /api/v1/novels | 历史列表(分页 + 关键词 / 分类 / 状态筛选 + 排序) |
| GET | /api/v1/novels/:id | 小说详情(含统计) |
| POST | /api/v1/novels | 创建小说(含 config) |
| PUT | /api/v1/novels/:id | 修改小说基本信息 |
| DELETE | /api/v1/novels/:id | 删除小说(级联删除,弹窗确认) |
| GET | /api/v1/novels/:id/stats | 字数 / 章节 / 进度统计(供仪表盘) |
| POST | /api/v1/novels/:id/export-txt | 导出 TXT(参数:范围、编码、排版) |
| POST | /api/v1/novels/:id/export-project | 导出 JSON 工程包 |
| POST | /api/v1/novels/:id/import-project | 导入工程包 |
3.3 生成任务(断点续传核心)
| 方法 | 路径 | 说明 |
| POST | /api/v1/novels/:id/generate | 启动生成(创建 / 恢复任务) |
| POST | /api/v1/novels/:id/generate/pause | 暂停 |
| POST | /api/v1/novels/:id/generate/resume | 断点续传(自动从断点继续) |
| POST | /api/v1/novels/:id/generate/stop | 停止(保留已生成内容) |
| GET | /api/v1/novels/:id/generate/task | 任务状态(供轮询 / 断点信息) |
| GET | /api/v1/novels/:id/generate/stream | SSE 事件流:chapter_start / token / chapter_done / stage_change / error / done |
| POST | /api/v1/novels/:id/generate/single-chapter | 单独生成指定章节(跳过 / 补章) |
3.4 大纲
| 方法 | 路径 | 说明 |
| GET | /api/v1/novels/:id/outlines | 故事大纲(按卷) |
| PUT | /api/v1/novels/:id/outlines/:outlineId | 编辑故事大纲 |
| POST | /api/v1/novels/:id/outlines/regenerate | 重新生成大纲(可选:保留角色 / 伏笔) |
| GET | /api/v1/novels/:id/chapter-outlines | 章节大纲列表(分页) |
| PUT | /api/v1/novels/:id/chapter-outlines/:id | 编辑章节大纲 |
| POST | /api/v1/novels/:id/chapter-outlines/regenerate-range | 重生成某区间章节大纲 |
3.5 章节
| 方法 | 路径 | 说明 |
| GET | /api/v1/novels/:id/chapters | 章节列表(分页 / 虚拟滚动,仅元信息) |
| GET | /api/v1/novels/:id/chapters/:index | 章节详情(正文,可按需懒加载) |
| PUT | /api/v1/novels/:id/chapters/:index | 人工编辑章节(保存后标记 is\_edited) |
| POST | /api/v1/novels/:id/chapters/:index/regenerate | 重新生成该章节 |
| GET | /api/v1/novels/:id/chapters/:index/summary | 章节摘要 |
3.6 角色 / 关系 / 状态
| 方法 | 路径 | 说明 |
| GET | /api/v1/novels/:id/characters | 角色卡列表 |
| GET | /api/v1/novels/:id/characters/:cid | 角色详情(含出场章节、状态时间线) |
| POST | /api/v1/novels/:id/characters | 手工新增角色 |
| PUT | /api/v1/novels/:id/characters/:cid | 编辑角色卡 |
| DELETE | /api/v1/novels/:id/characters/:cid | 删除角色 |
| POST | /api/v1/novels/:id/characters/extract | 手动触发角色抽取 |
| GET | /api/v1/novels/:id/character-graph | 关系图谱数据(nodes+edges) |
| PUT | /api/v1/novels/:id/relations/:rid | 编辑关系 |
| GET | /api/v1/novels/:id/characters/:cid/states | 角色状态时间线 |
3.7 物品 / 地图
| 方法 | 路径 | 说明 |
| GET/POST/PUT/DELETE | /api/v1/novels/:id/items[/:iid] | 物品卡 CRUD |
| GET/POST/PUT/DELETE | /api/v1/novels/:id/maps[/:mid] | 地图卡 CRUD |
3.8 伏笔
| 方法 | 路径 | 说明 |
| GET | /api/v1/novels/:id/foreshadowings | 伏笔列表(按状态筛选) |
| POST | /api/v1/novels/:id/foreshadowings | 手工新增 |
| PUT | /api/v1/novels/:id/foreshadowings/:fid | 编辑 / 变更状态(含回收登记) |
| DELETE | /api/v1/novels/:id/foreshadowings/:fid | 删除 |
| GET | /api/v1/novels/:id/foreshadowings/checklist | 大纲规划的回收点检查表 |
3.9 封面 / 介绍
| 方法 | 路径 | 说明 |
| GET | /api/v1/novels/:id/covers | 封面方案列表(提示词 + 图片) |
| POST | /api/v1/novels/:id/covers/generate-prompt | AI 生成商业级封面提示词(可多次生成多方案) |
| POST | /api/v1/novels/:id/covers | 上传 / 导入封面图片(本地文件) |
| PUT | /api/v1/novels/:id/covers/:cid | 编辑提示词 / 设为当前 |
| DELETE | /api/v1/novels/:id/covers/:cid | 删除封面方案 |
| GET | /api/v1/novels/:id/intro | 小说介绍 |
| POST | /api/v1/novels/:id/intro/generate | AI 生成介绍(卖点 / 受众 / SEO) |
| PUT | /api/v1/novels/:id/intro | 编辑介绍 |
3.10 阅读器
| 方法 | 路径 | 说明 |
| GET | /api/v1/novels/:id/reader/progress | 获取阅读进度 |
| PUT | /api/v1/novels/:id/reader/progress | 保存阅读进度 |
| GET | /api/v1/novels/:id/reader/bookmarks | 书签列表 |
| POST/PUT/DELETE | /api/v1/novels/:id/reader/bookmarks[/:bid] | 书签 CRUD |
| GET | /api/v1/novels/:id/reader/toc | 目录(章节标题列表,用于快速跳转) |
3.11 全局设置
| 方法 | 路径 | 说明 |
| GET/PUT | /api/v1/settings | 全局设置读写(主题、默认文风、重试策略等) |
| GET | /api/v1/presets | 全部预设(分类 / 标签 / 文风 / 视角 / 封面风格) |
| GET | /api/v1/system/health | 健康检查 |
| GET | /api/v1/system/logs | 最近日志(诊断用) |
第四部分 核心功能详细设计
4.1 AI 模型管理模块
4.1.1 支持的模型范围("支持所有主流大模型" 的实现方式)
采用统一适配层(Adapter Factory),按协议分三类,覆盖几乎所有主流模型:
| 协议类型 | 覆盖模型 | 接入要点 |
| OpenAI 兼容协议(默认主力) | DeepSeek、通义千问、豆包(火山方舟)、智谱 GLM、Kimi/Moonshot、MiniMax、混元、讯飞星火、硅基流动、OpenAI、Ollama、vLLM / 本地推理等 | 填 Base URL + API Key + Model 名即可,无需改代码 |
| Anthropic 原生协议 | Claude 3.5/4 系列 | Base URL + Key + model,消息格式走 Anthropic 规范 |
| Gemini 原生协议 | Gemini 系列 | 走 gemini-1.5/2.x 接口,Key 可带 project/location 参数 |
4.1.2 预置模型模板(一键填入,可改)
前端 models/presets 至少内置:
DeepSeek-V3 | provider=openai\_compatible | base=https://api.deepseek.com/v1 | model=deepseek-chat
DeepSeek-R1 | provider=openai\_compatible | base=https://api.deepseek.com/v1 | model=deepseek-reasoner
通义千问 | provider=openai\_compatible | base=https://dashscope.aliyuncs.com/compatible-mode/v1 | model=qwen-max / qwen-plus
豆包(火山方舟) | provider=openai\_compatible | base=https://ark.cn-beijing.volces.com/api/v3 | model=ep-xxx(接入点ID)
智谱GLM | provider=openai\_compatible | base=https://open.bigmodel.cn/api/paas/v4 | model=glm-4-plus
Kimi | provider=openai\_compatible | base=https://api.moonshot.cn/v1 | model=kimi-k2-0711-preview
OpenAI | provider=openai\_compatible | base=https://api.openai.com/v1 | model=gpt-4o / gpt-4o-mini
Claude | provider=anthropic | base=https://api.anthropic.com | model=claude-sonnet-4-20250514
Gemini | provider=gemini | base=https://generativelanguage.googleapis.com | model=gemini-2.0-flash
Ollama 本地 | provider=openai\_compatible | base=http://127.0.0.1:11434/v1 | model=qwen2.5:32b(自定义)
4.1.3 密钥安全
api_key_encrypted:使用 AES-256-GCM,密钥由本机指纹(Windows DPAPI CryptProtectData,Go 中 syscall/golang.org/x/sys/windows)派生,密钥只存在于本机。
- 前端展示一律掩码(
sk-****abc),编辑时可留空表示 "不修改"。
- 测试连通时调用
GET /v1/models(OpenAI 兼容)或对应轻量接口,返回延迟与上下文窗口信息。
4.1.4 调用参数(全局默认,可在小说级覆盖)
temperature=0.8, max\_retries=3, retry\_backoff=指数退避(1s,2s,4s,8s),
timeout=120s(章节长文), request\_concurrency=1(顺序生成保证连贯)
4.2 小说创建与参数预设
4.2.1 创作向导(CreateWizard)页面字段
分三步:
- 基本信息:标题(可留空→AI 起名)、分类(下拉预设)、标签(多选 + 自定义)、描述 / 创意(textarea,可留空)、语言(默认简体中文)。
- 生成参数:生成模型(下拉,来自模型管理)、章节数量(10–2000,数字输入 + 滑块)、每章字数(预设 1000/2000/3000/5000/8000 + 自定义 500–20000)、文风(预设下拉 + 自定义)、叙事视角(四个预设单选)。
- 确认:显示字数 / 成本预估(按模型单价估算 Token 与费用)、附加要求(extra\_prompt 可选)、勾选 "先生成大纲"。
4.2.2 预设体系(写死在代码常量或 app_settings 中,页面下拉使用)
分类预设:玄幻、奇幻、都市、科幻、悬疑、推理、言情、历史、军事、武侠、仙侠、网游、游戏、轻小说、二次元、体育、灵异、惊悚、末世、赘婿 / 战神、系统流、同人
文风预设(每个预设 = 一段可注入 Prompt 的风格描述):
| 预设名 | 风格描述(注入生成 Prompt) |
| 传统网文风 | 快节奏、强冲突、爽点密集、短句、每章结尾留钩子 |
| 细腻文学风 | 长句铺陈、环境与心理描写细腻、节奏舒缓、画面感强 |
| 悬疑惊悚风 | 悬念先行、信息量控制、层层反转、氛围阴郁 |
| 轻松喜剧风 | 幽默对话、吐槽式旁白、节奏明快、不虐主 |
| 科幻硬核风 | 设定严谨、术语合理、逻辑闭环、科技细节丰富 |
| 古风典雅风 | 文言气质、诗词点缀、考据细节、人物称谓考究 |
| 热血战斗风 | 打斗场面宏大、招式描写细致、情绪高涨、燃点密集 |
| 轻小说风 | 轻松吐槽、二次元梗、短段落、角色萌点突出 |
| 定制 | 用户自定义一段风格描述 |
叙事视角预设:
first 第一人称:主角 "我" 视角,心理活动丰富
third_limited 第三人称限知:跟随主角视角,只写主角所知
third_omniscient 第三人称全知:上帝视角,多线叙事
second 第二人称:你,代入感强(较少用,保留)
4.2.3 字数与成本预估
前端按 章节数 × 每章字数 × 经验系数(1.5,中文 token≈1.5字/token) + 大纲/摘要/抽取开销 估算总 Token,乘以该模型单价(模型模板中可填 price_per_1k_tokens),显示预估费用;未填单价则只显示 Token 数。
4.3 大纲生成系统
4.3.1 故事大纲生成
- 输入:模型、分类、标签、描述、章节数、文风、视角、语言。
- 卷数规则:章节数≤50 则 1–2 卷;50–300 则 3–5 卷;>300 则按每 50–100 章一卷自动分卷。
- 存储:写入
story_outlines;用户可在「大纲」Tab 编辑。
4.3.2 章节大纲生成
- 按卷逐段生成,一次请求生成一卷(约 50–100 章)的章节大纲,JSON 数组输出,避免单次超长。
- 每章大纲字段:
title / summary / characters / locations / foreshadow_set / foreshadow_reveal / ending_hook(表结构已定义)。
- 生成时注入:故事大纲、上一卷已生成章节大纲摘要、已规划的伏笔清单(确保埋设→回收节奏)。
- 校验:生成后检查伏笔规划是否闭环(每个 planned 的伏笔都有埋设章与回收章);缺失则在 UI 提示,允许 "AI 补全伏笔规划"。
4.3.3 大纲修改联动
- 编辑任意章节大纲后,该章标记
status=pending 且尚未生成的章节在续传时以新大纲为准;已生成章节如需改大纲,提供 "重写受影响章节" 按钮(可选择章节区间)。
4.4 章节生成引擎(核心中的核心)
目标:10–2000 章长篇, 衔接贯通、不重复、不跑题,严格符合大纲 。 三个支柱:① 强上下文注入;② 状态追踪;③ 生成后校验与自动重试。
4.4.1 生成流水线(pipeline)
开始
 ├─ 1. 组装上下文包(见 4.4.2)
 ├─ 2. 调用模型流式生成本章正文(temperature 按配置)
 ├─ 3. 校验(见 4.4.4):失败→按策略重试/重写
 ├─ 4. 保存章节到 chapters(status=generated)
 ├─ 5. 后处理(见 4.4.5):生成摘要、抽取角色/物品/伏笔、更新状态
 ├─ 6. 更新 generation\_tasks 断点(chapter\_index+1, progress)
 └─ 7. 循环下一章,直至完成
4.4.2 上下文包组装(一致性第一支柱)
每章生成时的 System Prompt 固定包含(按 token 预算分级注入,总长建议控制在模型上下文 60% 以内,剩余给输出):
| 上下文块 | 内容 | 预算 |
| ① 全局设定 | 世界观、力量体系、主线、结局走向(来自 story\_outlines) | 约 10–15% |
| ② 本章大纲 | 当前章节大纲全字段(title/summary/characters/locations/ 伏笔 / 钩子) | 约 10% |
| ③ 近期章节摘要 | 最近 10 章的摘要(chapter\_summaries) | 约 15–20% |
| ④ 记忆摘要 | 每 10 章压缩一次的长程记忆摘要(digest,滚动窗口保留 3 份:前段 / 中段 / 近段) | 约 10% |
| ⑤ 角色状态 | 本章出场角色的最新状态(位置 / 情绪 / 目标 / 受伤等,来自 character\_states 最新快照) | 约 10% |
| ⑥ 活跃伏笔 | 状态为 planted/developing 且与本章相关的伏笔清单 + 本章应回收的伏笔 | 约 5–8% |
| ⑦ 连贯性守则 | 固定指令:衔接上一章结尾、不得重复已写情节、不得违背已设定事实、严格按大纲事件推进 | 约 2% |
| ⑧ 写作要求 | 文风描述 + 视角 + 每章字数目标 + 语言 | 约 5% |
关键机制: 摘要链 :每章生成后立即调用模型生成 200–300 字摘要;每完成 10 章,把最近 10 章摘要压缩为一份 digest 。上下文包只读摘要与 digest, 绝不整章回灌 ,保证 2000 章场景上下文稳定且不超窗。 角色状态追踪 :每章结束后,根据本章内容更新出场角色的最新状态快照(位置 / 情绪 / 目标 / 状态),下一章直接注入,从机制上杜绝 "角色瞬移、情绪断裂"。 伏笔状态机 :planted → developing → revealed;本章回收伏笔必须写进大纲指令并要求正文显式呼应;生成后校验回收是否发生。
4.4.3 断点续传(第二支柱)
任务状态机:
queued → running → (paused | stopped | error | completed)
  running --单章失败重试耗尽--> error →(用户点击继续)→ 从断点 resume
generation_tasks 每完成一章即落库(stage=chapter, chapter\_index = 当前 + 1, progress = 已完成 / 总数)。
- 应用崩溃 / 断电:重启后检测到
status=running 或 error 的任务,在小说列表显示 "可续传" 角标;点击「继续生成」→ 从 chapter_index 断点重跑,已完成的章节不重复生成。
- 部分写入保护:章节正文只有在完整生成并通过校验后才
INSERT;生成中的文本只走流式推送、不落库,天然避免半章脏数据。
- 上下文指纹:
resume_token 记录续传时的上下文版本(含大纲版本号、已生成章节数),续传时若发现大纲被编辑过,提示 "大纲已变更,可选择:以新大纲续传 / 沿用旧大纲续传"。
4.4.4 一致性校验与防重复(第三支柱)
生成完成后,进入校验环节(可选开启,默认开启):
| 校验项 | 方法 | 不通过处理 |
| 大纲符合度 | 二次调用模型(轻量):比对本章正文与章节大纲的 summary / 事件是否一致,返回 {pass, issues[]} | 有偏差→提示并按配置自动 "局部重写" 或 "整章重写"(重写上限 2 次) |
| 与近期章节重复 | 计算本章正文与最近 5 章正文的 4-gram 重合率;重合率 > 阈值(如 12%)判定重复 | 自动整章重写(上限 2 次);仍超限→暂停并提示人工处理 |
| 设定一致性 | 校验是否出现与 "全局设定 / 角色状态" 矛盾的显性事实(由校验模型判断,如角色已死又出场、地点穿越) | 标记 warning 列在「一致性报告」中,用户可一键 "按报告重写" |
| 字数达标 | word_count >= 目标字数 × 0.85 | 不足→提示 "扩写本章"(调用模型扩写) |
| 结尾钩子 | 校验最后一段是否承接大纲的 ending\_hook(有则记 success,无则 warning) | warning 仅提示 |
校验模型默认复用生成模型;可在设置中指定 "廉价模型做校验" 以节省成本。
4.4.5 章节后处理(每章自动执行,可开关 auto\_extract)
- 章节摘要:生成 200–300 字摘要 + 关键事件列表(JSON),存入
chapter_summaries。
- 角色抽取 / 更新:识别本章新出场角色(建卡,填身份 / 外貌 / 性格初稿)、已有角色(更新 last\_appear\_chapter、状态快照)。
- 物品抽取:新物品建卡(名称 / 类型 / 归属 / 能力初稿)。
- 地点抽取:新地点建卡。
- 伏笔更新:识别本章埋设的伏笔(置 planted,记 plant\_chapter)、发展的伏笔(append develop\_chapters)、回收的伏笔(置 revealed,记 actual\_reveal\_chapter)。
抽取全部使用 结构化 JSON 输出 (见附录 B),由模型一次返回,代码直接解析落库;抽取失败不阻塞正文生成,降级为 "下次抽取",并在日志记录。
4.4.6 流式与前端展示
- 后端经 SSE(或 Wails 事件)推送
token 事件,前端在生成面板以打字机效果实时渲染。
- 面板控件:进度条(已完成章 / 总数 + 百分比)、当前章节流式文本、暂停 / 继续 / 停止按钮、Token 消耗统计、日志。
4.5 角色系统
- 角色卡:字段见表
characters;「角色列表」页以卡片网格展示(头像区 = AI 提示词占位 / 自定义图,姓名、身份、类型徽标、出场章节)。
- 角色详情:完整档案 + 出场章节时间线(点击跳转章节)+ 状态变化时间线(character\_states,滚动展示位置 / 情绪 / 目标的演进)。
- 关系图谱:ECharts 力导向图(graph),节点 = 角色(主角高亮放大),边 = 关系(线宽 = strength,颜色按关系类型);支持拖拽、缩放、点击节点弹角色卡、图例筛选关系类型;图谱数据来自
character-graph 接口。
- 一致性联动:角色卡被人工修改后,在下一章生成的上下文包中自动采用最新版本。
4.6 物品系统
- 物品卡 / 详情页:名称、类型、归属、来历、能力、经历、出现章节。
- 列表支持按类型筛选、按章节排序;物品与角色关联(归属)在详情中可点击跳转角色。
- 支持人工新增 / 编辑 / 删除;AI 抽取的新物品进入 "待确认" 列表,用户确认后转正(避免误建卡)。
4.7 地图系统
- 地图卡:地点名、区域、类型、描述、剧情意义、常驻角色、首次出现章节。
- 地图详情:支持生成文字版地图层级(大陆→国家→城池→具体地点,JSON 树)并在前端以层级树 / 卡片展示;有条件的版本可渲染简单 SVG 示意图(P2)。
- 地点与章节关联:点击地点可查看该地点出现的章节列表。
4.8 伏笔管理
- 列表:按状态(埋设 / 发展 / 回收)筛选,显示重要度、埋设章节、计划回收章节、实际回收章节。
- 状态机流转:人工或 AI 抽取均可变更状态;回收时登记
actual_reveal_chapter 并允许填写 "回收效果" 备注。
- 回收点检查表:从大纲生成阶段就规划伏笔回收章节;生成进行到目标章节时,在生成面板 / 伏笔页高亮 "本章应回收:xxx",并强制注入上下文包,确保伏笔不被遗忘。
- 一致性报告:小说完成后列出 "已埋设但未回收" 的伏笔清单(完结检查用)。
4.9 封面系统
4.9.1 商业级 AI 封面描述词生成器
- 输入:小说标题、分类、简介、文风、主角设定(可选)、目标平台(起点 / 番茄 / 晋江 / 小红书 / 出版,影响尺寸与设计倾向)、风格偏好(国风 / 赛博 / 日漫 / 写实 / 极简)。
【方案一】风格关键词 + 主视觉主体 + 构图(三分法/中心构图/对角线)+ 光线(逆光/冷暖对比/体积光)
  \+ 色彩体系(主色/辅色/强调色,符合品类审美)+ 氛围情绪 + 角色/场景元素 + 留白与文字位
  \+ 商业化要素(封面冲击力、缩略图辨识度、目标读者审美)+ 负面提示词(不要什么)
尺寸:起终点站 900x1200 / 番茄 900x1200 / 小红书 3:4 / 出版 1:1.414(可配置)
- 前端展示 3 个方案卡片,每个可复制、可 "基于此方案再细化"(追加要求二次生成)。
4.9.2 封面图片管理
- 封面方案列表:提示词卡片 + 图片预览区;用户将提示词复制到任意 AI 绘图工具出图后,通过「上传图片」导入本地,设为当前封面。
4.10 小说阅读器
- 字号、行距、页宽、字体(宋体 / 黑体 / 楷体)调节
- 风格:正文排版仿纸质书(首行缩进 2em、段间距、标点排版),深色模式为 "午夜书房" 暖黑底(#1a1a1e 系)配米色文字。
4.11 TXT 导出
- 编码:UTF-8(默认)/ GBK(供部分平台 / 编辑器)
- 排版:章节分隔符样式(
第X章 标题 换行分隔 / 纯文本)、是否带卷标题、是否带简介与目录
- 文件名:
《书名》.txt,导出到 exports/ 目录并弹窗显示位置;进度条展示导出进度(2000 章场景异步导出)。
- 可同时导出「全要素工程包」:JSON 包含大纲 / 章节 / 角色 / 物品 / 地图 / 伏笔 / 配置,支持导入恢复(备份 / 迁移)。
4.12 项目管理与历史列表
- 首页 / 工作台:全部小说卡片网格(封面图 + 标题 + 分类徽标 + 状态角标 + 章节数 / 字数 + 更新时间)。
- 支持:搜索(标题 / 标签)、按分类 / 状态筛选、按更新时间 / 字数排序、置顶(P2)。
- 卡片操作:打开工作台 / 继续生成(状态为 paused/error/running 时显示)/ 导出 TXT / 备份 / 删除(二次确认,级联删除)。
- 统计仪表盘(工作台顶部,P1):总字数、总章节数、进行中任务、模型用量(Token 累计)。
4.13 人工编辑与自动保存
- 所有可编辑内容(大纲、章节正文、角色、关系、物品、地图、伏笔、介绍、封面词、标签、标题)均有编辑入口。
- 自动保存:编辑框失焦或 30 秒内自动保存草稿到内存 + 落库,避免误关丢失;章节编辑器提供「保存」按钮 + 自动保存提示。
- 章节编辑后
is_edited=true,重生成该章前弹窗提示 "将覆盖人工修改"。
- 编辑历史(P2):章节正文保留最近 5 个版本(
chapter_versions 表,P2 扩展)。
4.14 数据统计与备份
- 统计:各小说字数曲线(按章)、生成耗时、Token 消耗(按模型汇总)、分类分布 ——ECharts 图表呈现(P1)。
- 备份:设置页提供「备份全部数据」(复制 db + covers 到用户指定目录)与「恢复备份」。
第五部分 前端 UI / UX 设计规范
5.1 设计语言:小说感 + 沉浸式
核心意象:书房 + 书卷 + 墨迹。
- 浅色主题关键词:宣纸米白、墨黑、朱砂点缀、藏书质感;
- 深色主题关键词:午夜书房、暖黑、烛光暖金、羊皮纸暗米色;
- 图形语言:书页翻动、卷轴展开、印章、毛笔字标题(可用开源书法字型:演示悠然小楷、站酷庆科黄油体等,注意商用授权);
- 通用视觉元素:卡片圆角(8–12px)、章节标题衬线感(宋体族
"Songti SC", "Noto Serif SC", "SimSun", serif)、正文阅读用宋体、UI 控件用无衬线(系统默认 / 思源黑体)。
5.2 双主题系统(用户硬性要求:黑白双主题 + 顶部标题栏同步)
- 全局使用 CSS Variables(Design Tokens) 定义主题,切换主题只改
document.documentElement 的 data-theme 属性,所有组件消费变量,不写死颜色:
:root\[data-theme="light"] {
  \--bg-page: #f7f3ea; /\* 宣纸米白 \*/
  \--bg-card: #fffdf7;
  \--bg-elevated: #ffffff;
  \--text-primary: #2b2a26;
  \--text-secondary: #6b675c;
  \--accent: #a33a2b; /\* 朱砂红 \*/
  \--accent-hover: #8c3125;
  \--border: #e4ddcc;
  \--titlebar-bg: #f7f3ea; /\* 标题栏底色(浅色) \*/
  \--titlebar-text: #2b2a26;
  \--shadow: 0 2px 12px rgba(43,42,38,.08);
}
:root\[data-theme="dark"] {
  \--bg-page: #16161a; /\* 午夜暖黑 \*/
  \--bg-card: #1e1e24;
  \--bg-elevated: #26262e;
  \--text-primary: #e8e3d6; /\* 羊皮纸米色 \*/
  \--text-secondary: #a39e90;
  \--accent: #d4a24e; /\* 烛光暖金 \*/
  \--accent-hover: #e0b461;
  \--border: #33333c;
  \--titlebar-bg: #16161a; /\* 标题栏底色(深色) \*/
  \--titlebar-text: #e8e3d6;
  \--shadow: 0 2px 12px rgba(0,0,0,.4);
}
- Wails 配置窗口为非标准标题栏或使用系统标题栏 + Windows 主题 API:
- Go 端通过
golang.org/x/sys/windows 调用 DwmSetWindowAttribute(hwnd, DWMWA_USE_IMMERSIVE_DARK_MODE, ...),主题切换时前端调 backend.SetWindowTheme(dark bool),实现标题栏深浅色与内容同步切换;
- 若采用自定义标题栏(frameless + 自绘),则由前端直接控制
--titlebar-bg,效果一致。
- 主题记忆:存入
app_settings(theme),启动时恢复;快捷键 Ctrl+Shift+T 快速切换(带过渡动画)。
5.3 动效规范(整套 UI 带动画)
| 场景 | 动效 |
| 主题切换 | 背景 / 文字颜色 300ms ease 渐变过渡(transition 统一变量) |
| 页面路由 | Vue Router 过渡:旧页淡出 + 轻微上移,新页淡入(200–300ms) |
| 卡片进入 | 列表卡片错峰上浮淡入(stagger 60ms,transition-delay 按 index) |
| 骨架屏 | 生成中 / 加载中显示书页形骨架屏 + 微光扫描动画 |
| 流式生成 | 章节文本打字机效果逐字 / 逐词浮现,光标闪烁 |
| 关系图谱 | 节点入场弹跳 + 连线生长动画(ECharts 默认动画开启,边线 dash 流动) |
| 章节翻页 | 阅读器翻页:滑动 / 淡入淡出过渡 |
| 进度条 | 生成进度条平滑填充(transition: width 400ms ease) |
| 按钮 / 悬浮 | hover 抬升阴影 + 轻微缩放,点击 ripple |
| 徽标 / 状态 | 状态变更时小徽标 pop 动画 |
| 侧栏 / 抽屉 | 卷轴式滑入(translateX + ease-out-quart) |
动画统一在 styles/animations.css 定义,尊重 prefers-reduced-motion (无障碍)。
5.4 页面与布局(线框级说明)
5.4.1 首页(历史列表 / 工作台)
┌──────────────────────────────────────────────┐
│ \[Logo AI 小说创作助手] 搜索□ 筛选▾ \[+ 新建小说] │
├──────────────────────────────────────────────┤
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │封面缩略图 │ │封面缩略图 │ │封面缩略图 │ ...卡片网格 │
│ │书名/分类/ │ │书名/分类/ │ │书名/分类/ │ │
│ │状态/章数 │ │状态/章数 │ │状态/章数 │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ 统计条:总字数 总章节 任务中 模型用量 │
└──────────────────────────────────────────────┘
5.4.2 创作向导(三步式)
侧边步骤指示器(1 基本信息 → 2 生成参数 → 3 确认),底部「上一步 / 开始生成」。
5.4.3 小说工作台(核心页,Tab 容器)
┌──────────────────────────────────────────────┐
│ ←返回 《书名》 状态徽标 \[继续生成/暂停] \[阅读] \[导出▾] │
├──────┬───────────────────────────────────────┤
│ Tab列 │ │
│ 封面 │ 内容区(随 Tab 切换) │
│ 介绍 │ - 大纲:卷/章大纲树,可编辑 │
│ 大纲 │ - 章节:列表(虚拟滚动)+流式生成面板 │
│ 章节 │ - 角色:卡片网格 → 详情 → 图谱 │
│ 角色 │ - 物品 / 地图 / 伏笔 / 封面 │
│ 物品 │ │
│ 地图 │ │
│ 伏笔 │ │
└──────┴───────────────────────────────────────┘
5.4.4 生成面板(嵌在工作台章节 Tab / 可全屏)
流式正文(打字机)+ 控制条(进度、Token、暂停 / 继续 / 停止)+ 一致性报告入口。
5.4.5 阅读器
┌──────────────────────────────────────────────┐
│ \[目录] 第X章 标题 AA ▢ 明/暗 书签 ▸ │
├──────────────────────────────────────────────┤
│ 正文区(仿纸质排版,居中限宽 720px) │
│ │
│ ◀ 上一章 进度 下一章 ▶ │
└──────────────────────────────────────────────┘
5.4.6 设置页
- Tab1 模型管理:预置模板列表 + 自定义表单 + 测试按钮
- Tab2 全局默认:文风 / 视角 / 字数默认、重试策略、主题
- Tab3 数据:备份 / 恢复、数据目录打开、日志查看
5.5 路由与状态管理
/ 首页(历史列表)
/create 创作向导
/novel/:id 小说工作台(Tab:cover|intro|outline|chapters|characters|items|maps|foreshadows)
/novel/:id/reader 阅读器
/settings 设置
Pinia stores:themeStore(主题 + 标题栏联动)、novelStore(当前小说 / 各要素数据)、taskStore(生成任务实时状态、SSE 连接)、settingsStore。
第六部分 非功能需求
| 类别 | 要求 |
| 性能 | 章节列表 2000 章使用分页 / 虚拟滚动;正文按章懒加载;图谱节点 >300 时开启 ECharts 降级采样;数据库操作全部走索引(novel\_id+chapter\_index 唯一索引) |
| 稳定性 | 生成任务崩溃可恢复(断点落库);SSE 断线自动重连;内存中不缓存全部章节,防长篇小说 OOM |
| 可靠性 | 模型调用超时 / 限流:指数退避重试(最多 3 次);429/5xx 自动等待重试;连续失败 5 次自动暂停任务并提示 |
| 安全 | API Key AES-256-GCM 本地加密;日志不打印密钥明文;导出 / 备份文件不包含密钥 |
| 数据安全 | 自动保存(编辑防丢);删除操作二次确认;提供备份 / 恢复 |
| 兼容性 | Windows 10/11 x64;高分屏 DPI 适配;WebView2(Wails 自动引导安装) |
| 离线 | 除调用云端模型外全部功能可用;使用 Ollama 本地模型时完全离线 |
| 国际化 | 界面中文为主,预留 i18n 结构(P2);生成语言跟随 novel.language |
第七部分 安装打包与发布
7.1 打包流程(Wails)
wails build -platform windows/amd64 -nsis(Wails v2 内置 NSIS 打包)。
- 产物:
NovelForge-Setup-<version>.exe 安装向导(欢迎页、许可、安装路径选择、桌面快捷方式、开始菜单、完成页)。
- 图标:应用图标为 "书卷 + AI 星火" 风格,256x256 ico(浅深两套资源)。
- 首次运行:检查 WebView2 Runtime,缺失则引导安装(Wails 默认处理)。
- 自动更新(P2):可选接入
go-update 或本地检查 GitHub Release。
7.2 版本规划
- v1.1.0:P1 功能(统计仪表盘、备份、回收提醒、封面图管理、编辑历史)
- v1.2.0:P2 增强(快捷键、自动更新、SVG 地图、i18n)
第八部分 开发里程碑与任务拆解
给码道 AI 的分阶段开发顺序(每阶段完成后应可运行、可验证,再接下一阶段)。
M0 骨架(0.5–1 天)
- Wails 项目初始化(Vue3+TS+Vite 前端模板 + Go 后端)
- 主题 Token 体系 + 黑白主题切换 + 标题栏同步 Demo
- 基础路由与页面壳(首页 / 设置 / 占位工作台)
M1 模型与小说管理(1 天)
- 模型适配层(OpenAI 兼容 + Anthropic + Gemini + Ollama)+ 预置模板 + 测试连通
- 小说 CRUD + 历史列表 + 创作向导(含预设)
M2 生成引擎 v1(2–3 天,核心)
- 上下文包组装(摘要链 / 角色状态 / 伏笔注入)
- 一致性校验(大纲符合度 + 4-gram 防重复)+ 自动重试
M3 全要素系统(2–3 天)
- 章节后处理:摘要 / 角色 / 物品 / 地点 / 伏笔自动抽取(JSON 解析落库)
- 角色卡 + 详情 + 状态时间线 + ECharts 关系图谱
M4 阅读与导出(1 天)
- 阅读器(目录 / 书签 / 进度 / 排版 / 主题)
M5 打磨与发布(1–2 天)
第九部分 测试与验收标准
每阶段交付前按清单回归;以下为 P0 验收清单(对应 C1–C12 约束)。
| # | 验收项 | 通过标准 |
| T1 | 安装包安装 | Setup.exe 安装成功、桌面快捷方式可用、卸载干净 |
| T2 | 模型接入 | 预置模板至少 5 个可用;自定义 OpenAI 兼容模型可测通并生成 |
| T3 | 密钥安全 | 数据库中密钥非明文;界面掩码显示 |
| T4 | 创建小说 | 向导可选模型 / 分类 / 标签 / 描述 / 章节数 (10–2000)/ 字数 / 文风 / 视角,参数生效 |
| T5 | 大纲生成 | 生成故事大纲 + 章节大纲,伏笔规划闭环;大纲可编辑 |
| T6 | 章节生成 | 按章节大纲顺序生成全部章节;流式展示;每章字数达标 |
| T7 | 连贯性 | 抽样 5 处章节衔接无断裂;角色状态(位置 / 情绪)连续;无与设定冲突的显性矛盾;抽样无重复段落 |
| T8 | 防跑题 | 章节内容与章节大纲事件一致(以校验报告为准) |
| T9 | 断点续传 | 生成到第 N 章时强制结束进程,重启后继续生成不重复第 1–N 章,从 N+1 开始 |
| T10 | 暂停 / 继续 / 停止 | 三个控制按钮行为正确,停止后保留已生成内容 |
| T11 | 全要素查看 | 角色图谱 / 角色卡 / 角色详情 / 物品卡 / 物品详情 / 地图卡 / 地图详情 / 封面 / 大纲 / 章节大纲 / 章节列表 / 伏笔 / 介绍全部可见 |
| T12 | 人工编辑 | 至少 10 类实体可编辑并持久化 |
| T13 | TXT 导出 | 全文导出 UTF-8/GBK 均正确,章节分隔与编码无误 |
| T14 | 阅读器 | 目录跳转 / 书签 / 进度记忆 / 字号调节 / 明暗主题正常 |
| T15 | 历史列表 | 多本小说列表显示、搜索筛选排序正常 |
| T16 | 双主题 | 黑白切换全局生效,窗口标题栏同步变色 |
| T17 | 动画 | 主题切换 / 路由 / 流式 / 图谱动画可感知且不卡顿 |
| T18 | 2000 章压测 | 章节列表滚动流畅(虚拟滚动);生成 2000 章配置可创建;导出不卡死 |
| T19 | 异常恢复 | 模型 500/429 自动重试后继续;连续失败暂停并提示 |
第十部分 风险与对策
| 风险 | 对策 |
| 长篇小说后期上下文漂移、设定崩塌 | 三层防线:全局设定固定注入 + 摘要链 /digest + 角色状态快照;一致性校验报告兜底;人工可改设定后重写区间 |
| 模型输出 JSON 解析失败(大纲 / 抽取) | 所有结构化调用开启 JSON mode/response\_format;解析失败重试 1 次,仍失败降级为文本解析(正则抽取关键段),再失败记录日志不阻塞主流程 |
| 生成速度慢(2000 章) | 顺序生成保证连贯(并发 = 1 是设计约束,不妥协);后台批量跑 + 断点续传;前端可最小化继续 |
| Token 成本超预期 | 创建向导成本预估;摘要 / 校验可用廉价模型(设置中可选);上下文包 token 预算上限控制 |
| SQLite 并发写压力 | 生成任务单协程串行写;WAL 模式开启;索引完备 |
| WebView2 缺失 | 安装包内置检测与引导下载 |
| 大模型内容安全 / 敏感词 | 章节生成前注入安全指令(拒绝色情暴力犯罪细节描写,P0 基础版);本地敏感词过滤表可配置(P1) |
附录 A AI 生成 Prompt 模板全集
以下模板为 可直接落地 的中文 Prompt(含角色设定、约束、输出格式),代码中做成 Go 常量模板,按需拼接上下文块。
A1 故事大纲生成模板
你是一位资深小说主编与网文策划,擅长构建长篇故事框架。
请根据以下设定,为一部小说生成完整的故事大纲。
【基础信息】
分类:{category}
标签:{tags}
创意描述:{description}
语言:{language}(正文使用该语言)
文风:{writing\_style}
叙事视角:{pov}
计划章节数:{chapter\_count}(约每章{chapter\_words}字)
【分卷规则】{chapter\_count<=50 ? "全书1-2卷" : chapter\_count<=300 ? "全书3-5卷,每卷约50-100章" : "每卷约50-100章,自动分卷"}
【输出要求】
严格按照以下 JSON 结构输出,不要输出任何其他内容:
{
  "title": "建议书名(若用户未提供)",
  "selling\_point": "一句话卖点",
  "world\_setting": {"background":"世界观背景","rules":"力量/世界规则","factions":"主要势力"},
  "main\_story": {"begin":"开端冲突","development":"发展主线","climax":"高潮","ending":"结局走向"},
  "volumes": \[{"volume":1,"title":"卷名","chapter\_range":\[1,100],"plot":"本卷主线"}],
  "initial\_characters": \[{"name":"","role":"主角/重要配角/反派","identity":"","goal":"","outline":"简要人设"}],
  "foreshadow\_plan": \[{"content":"伏笔内容","importance":1-5,"plant\_volume":1,"reveal\_volume":4}]
}
要求:章节数与计划一致;伏笔必须规划回收;结局与分类调性匹配。
A2 章节大纲生成模板(按卷)
你是网文细纲策划。请为小说《{title}》的第{volume}卷(章节 {range\_start}-{range\_end})生成逐章细纲。
【全书设定】{world\_setting}
【本卷主线】{volume\_plot}
【已完成章节的最近摘要】{recent\_summaries}
【当前活跃伏笔】{active\_foreshadows}(状态=埋设/发展)
【本卷应回收伏笔】{to\_reveal}
【输出】严格 JSON 数组,每章一个对象:
\[
 {"chapter\_index":101,"title":"","summary":"本章核心事件150-300字","characters":\["出场角色"],"locations":\["地点"],"foreshadow\_set":\["本章埋设的伏笔"],"foreshadow\_reveal":\["本章回收的伏笔"],"ending\_hook":"结尾钩子"}
]
要求:章与章事件承接连贯;伏笔埋设/回收节奏合理;每章至少一个冲突或推进点;结尾钩子吸引继续阅读。
A3 章节正文生成模板(系统级 Prompt 骨架)
你是长篇小说作家,正在连载《{title}》({category},{writing\_style},{pov}视角,{language})。
【世界观与主线(必须严格遵守,不得违背)】
{world\_setting}
【本章大纲(本章必须完成的事件,不得遗漏也不得超纲)】
{chapter\_outline}
【近期剧情摘要(衔接上一章结尾,承上启下)】
{recent\_summaries}
【长程记忆摘要】{memory\_digest}
【出场角色当前状态(续写时保持状态连续)】
{character\_states}
【活跃伏笔(本章应回收的伏笔必须显式呼应)】{foreshadows}
【连贯性守则(铁律)】
1\. 开篇必须自然衔接上一章结尾的场景与情绪,不重复已发生的情节;
2\. 严格按本章大纲推进事件,不加入大纲没有的新主线、不跑题;
3\. 已确立的事实(角色生死、能力、关系、地点)不可自相矛盾;
4\. 角色言行符合人设与当前状态;
5\. 若本章大纲安排了伏笔回收,必须在文中明确揭示,不能遗漏。
【写作要求】
\- 文风:{writing\_style}
\- 视角:{pov}(全文视角一致)
\- 目标字数:约{chapter\_words}字
\- 段落自然、对话符合角色;每章结尾按大纲钩子收尾。
现在直接输出本章正文(不要输出标题以外的说明文字,不要输出本章大纲)。
A4 章节摘要生成模板
请为以下小说章节生成摘要。输出严格 JSON:
{"summary":"200-300字概述","key\_events":\["事件1","事件2"]}
要求:只写已发生事实,客观;为后续续写提供足够信息。
【章节标题】{title}
【正文】{content(前若干段即可,为省 token 可截断)}
A5 全要素抽取模板(角色 / 物品 / 地点 / 伏笔)
请从本章正文中抽取以下要素,输出严格 JSON(没有的项给空数组):
{
 "new\_characters":\[{"name":"","role\_type":"","identity":"","appearance":"","personality":"","abilities":"","goal":"","habits":""}],
 "existing\_characters":\[{"name":"","location":"当前位置","emotion":"当前情绪","goal":"当前目标","status":"身体/状态"}],
 "new\_items":\[{"name":"","item\_type":"","owner":"","origin":"","ability":""}],
 "new\_locations":\[{"name":"","region":"","map\_type":"","description":"","significance":""}],
 "foreshadows\_planted":\[{"content":"","importance":1-5}],
 "foreshadows\_developed":\[{"content":"伏笔内容描述,与已有伏笔匹配"}],
 "foreshadows\_revealed":\[{"content":"伏笔内容描述,与已有伏笔匹配"}]
}
【已有角色库(用于匹配 existing\_characters)】{character\_names}
【已有伏笔库(用于匹配)】{foreshadow\_contents}
【本章正文】{content}
A6 一致性校验模板
你是小说审稿编辑。请校验本章正文与大纲的一致性。
输出严格 JSON:{"pass":true/false,"issues":\[{"type":"跑题|遗漏事件|设定矛盾|重复情节","detail":"问题描述","suggestion":"修改建议"}]}
【本章大纲】{chapter\_outline}
【已确立设定】{world\_setting}【角色状态】{character\_states}
【最近3章摘要(防重复)】{recent\_summaries}
【本章正文】{content}
A7 商业封面描述词生成模板
你是商业图书封面设计师。请为小说《{title}》({category},核心卖点:{selling\_point})生成 3 套可交付给 AI 绘图工具的封面提示词。
目标平台:{platform}(影响尺寸与设计规范);风格偏好:{style\_pref};主要角色设定:{characters}
每套输出严格 JSON:
{"schemes":\[{
  "name":"方案一:{风格命名}",
  "prompt":"完整英文/中文提示词:主视觉主体+构图+光线+色彩体系+氛围+商业化元素(冲击力/缩略图辨识度/目标读者)+文字位预留",
  "negative\_prompt":"负面提示词",
  "style":"国风/赛博/日漫/写实/极简",
  "color\_scheme":"主色/辅色/强调色",
  "target\_reader":"目标读者",
  "usage\_suggestion":"投放建议(如起点男频/番茄女频/小红书引流)"
}]}
要求:符合商业封面规律(缩略图可辨识、不堆砌元素、主角醒目、情绪明确)。
A8 小说介绍生成模板
请为小说《{title}》生成商业化介绍,输出严格 JSON:
{"intro":"200-400字简介(有钩子、不剧透结局)","selling\_points":\["卖点1","卖点2","卖点3"],"target\_audience":"目标读者画像","seo\_keywords":\["关键词1","关键词2"]}
【故事大纲】{main\_story}【文风】{writing\_style}【分类】{category}
附录 B JSON 结构化输出 Schema 示例
各结构化调用统一携带 response_format={"type":"json_object"} (OpenAI 兼容)或对应 JSON mode;代码侧用 Go encoding/json 严格解析,失败重试策略见 4.4 与风险表。
B1 章节大纲(数组)
\[
  {
  "chapter\_index": 101,
  "title": "初入宗门",
  "summary": "主角叶尘通过试炼进入青云宗外门……",
  "characters": \["叶尘", "林雪"],
  "locations": \["青云宗外门"],
  "foreshadow\_set": \["林雪身世之谜"],
  "foreshadow\_reveal": \[],
  "ending\_hook": "外门考核名单上出现了叶尘被除名的名字"
  }
]
B2 章节正文传输格式(流式)
SSE event: token data: {"delta": "字" }
SSE event: chapter\_done data: {"index": 12, "title": "...", "word\_count": 3210}
B3 图谱数据(character-graph 返回)
{
  "nodes": \[{"id": 1, "name": "叶尘", "role\_type": "主角", "importance": 10}],
  "edges": \[{"source": 1, "target": 2, "relation\_type": "师徒", "strength": 9, "description": "..."}]
}
附录 C 给码道 AI 的第一轮开工指令
使用方法:把本附录内容(以及可选的完整文档)直接粘贴给华为云码道 CodeArts 代码智能体,作为第一轮对话指令。建议将本文档文件整体上传 / 粘贴,并在对话中附上以下开工指令。
【项目开发指令】请按《AI 智能小说创作助手\_开发文档.md》开发一个 Windows 桌面应用,技术栈为 Vue 3 + Go(Wails v2),交付 NSIS 安装包。
核心需求(必须全部满足):
1\. 支持所有主流大模型(预置 DeepSeek/通义/豆包/智谱/Kimi/OpenAI/Claude/Gemini/Ollama 模板,支持自定义 OpenAI 兼容接口,用户自配密钥,密钥本地 AES 加密)。
2\. 一键生成 10–2000 章完整小说:先生成故事大纲+章节大纲,再按大纲逐章生成正文;严格保证章节衔接贯通、不重复、不跑题(用摘要链+角色状态追踪+伏笔状态机+大纲符合度校验+4-gram 防重复实现)。
3\. 生成全要素资料:角色图谱关系链、角色卡片/详情、物品卡/详情、地图卡/详情、封面(含商业级 AI 绘图提示词)、大纲、章节大纲、章节列表、小说阅读器、伏笔管理、小说介绍。
4\. 章节生成支持断点续传、暂停/继续/停止、流式输出;所有生成内容支持人工编辑;支持导出 TXT;支持查看历史小说列表。
5\. UI:黑白双主题一键切换且窗口顶部标题栏同步变色,整套 UI 带动画和小说风格(书卷/墨迹/书房意象)。
6\. 数据全部本地 SQLite 存储,安装包内嵌前端,开箱即用。
开发方式:请按文档第八部分里程碑 M0→M5 分阶段实现,每个阶段完成可运行验证后再进入下一阶段;生成章节的 Prompt 模板与 JSON Schema 以文档附录 A/B 为准;接口以文档第三部分为准;数据库以文档第二部分为准。
当前请从 M0 开始:初始化 Wails v2 项目(Vue3+TS+Vite),搭建主题 Token 体系与黑白主题切换 Demo(含标题栏同步),建好全部数据库表,搭好路由骨架。
文档结束。有任何模块需要进一步细化(如具体接口字段、页面原型、某个 Prompt 的调优),可在此基础上继续追加章节。