Files
AI_Novel/README.md
T
Administrator 4073edcc20 AI 小说生成工作台:分层流水线 + 故事圣经(一期完整实现)
- 后端:Node/Express + node:sqlite,人物/世界观/分卷/细纲/正文 8 阶段生成流水线(SSE 流式 + zod 校验 + 重试)
- 前端:React 18 + Vite + antd 三栏工作台:流水线引导、章节树、编辑器(快切章节/段落改写)、故事圣经面板
- 写作工艺注入:人物声口/内在冲突/秘密,细纲 POV/情绪曲线/功能/张力,正文专业规则
- 自动回写故事圣经(摘要/设定/人物变化/伏笔/时间线),TXT/EPUB 导出,token 成本日志
2026-09-13 20:35:47 +08:00

82 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 智能小说工作台
从一句话创意到完整长篇的 AI 小说生成工作台。核心设计:**分层流水线 + 故事圣经**——AI 不会一次生成整本书,而是沿「人物卡 → 世界观 → 分卷大纲 → 分章细纲 → 逐章正文」推进,每一步产物都可编辑确认;正文生成时自动注入相关人物卡、前情摘要与未回收伏笔,写完后自动把摘要、新设定、人物变化、伏笔、时间线回写进"故事圣经",保证长篇的前后一致性。
## 功能
- **项目管理**:作品名 / 题材 / 故事创意 / 文风要求与示例 / 目标规模,卡片式总览,字数与进度统计
- **人物卡 & 世界观**:AI 生成(可反复重生成),全部字段可编辑;生成正文后自动追加人物近况
- **大纲与细纲**:AI 生成分卷大纲、每卷分章细纲(事件 / 涉及人物 / 伏笔安排),均可编辑
- **逐章正文生成**:流式输出(SSE),可中断;上下文注入 = 本章细纲 + 涉及人物完整卡 + 相关设定 + 全部前章摘要 + 上一章结尾 500 字 + 未回收伏笔
- **段落级改写**:选中任意段落重写 / 扩写 / 缩写 / 自定义指令,结果确认后替换
- **故事圣经面板**:人物 / 世界观 / 伏笔(未回收·已回收)/ 时间线,右侧栏常驻可直接增删改
- **自动回写**:每章正文采纳后,AI 自动提取章节摘要、新设定、人物状态变化、埋设/回收的伏笔、时间线事件
- **导出**:TXT(含卷章结构)与 EPUB(EPUB 3,目录按卷分组)
- **生成日志**:记录每次调用的模型与 token 用量(`generation_logs` 表)
## 快速开始
```bash
npm install # 已安装过可跳过
npm run dev # 开发模式:API 127.0.0.1:5175 + 前端 127.0.0.1:5173(自动代理)
```
生产模式(单端口,服务同时托管前端页面):
```bash
npm run build
npm start # 打开 http://127.0.0.1:5175
```
数据存放在 `server/data/novel.db`(SQLite 单文件,WAL 模式),备份即复制该文件。
## 模型接入(重要)
支持任意 **OpenAI 兼容接口**。首次启动会从 `.env` 读取初始配置,之后在界面右上角「模型设置」中查看修改,可一键「测试连接」。
当前 `.env` 预置了火山方舟配置:
```
ARK_BASE_URL=https://ark.cn-beijing.volces.com/api/plan/v3
ARK_API_KEY=ark-xxxx # 你的 API Key
ARK_MODEL=doubao-seed-2.0-lite
```
当前 `.env` 已配置火山方舟 Agent Plan 并实测连通:
```
ARK_BASE_URL=https://ark.cn-beijing.volces.com/api/plan/v3
ARK_API_KEY=ark-xxxx
ARK_MODEL=doubao-seed-2.0-lite
```
> 配置以界面「模型设置」中保存的为准(存在数据库里)。若要换模型,注意 Agent Plan 只支持套餐内模型(如 `doubao-seed-2.0-lite`),标准后付费模型名会报 UnsupportedModel。应用会自动关闭豆包 seed 系列的深度思考以提速并保证输出干净。
## 目录结构
```
├── server/ # Node.js + Express + node:sqlite
│ └── src/
│ ├── db/ # 建表 / 种子 / 行类型
│ ├── routes/ # CRUD、生成(SSE)、导出、设置
│ ├── llm/ # OpenAI 兼容客户端 + 各阶段提示词
│ └── pipeline/ # 上下文组装 + 圣经回写
├── web/ # React 18 + Vite + Ant Design
│ └── src/components/ # 章节树 / 编辑器 / 生成抽屉 / 故事圣经 等
├── scripts/e2e_test.py # 端到端回归测试(python -X utf8 scripts/e2e_test.py,需服务已启动)
└── .env # 模型配置(已 gitignore,勿提交)
```
## 设计说明
- **为什么不是一键生成整本**:长篇的难点是一致性(人物/伏笔/设定),分层生成 + 中间产物人工确认,比"一把梭"质量高得多,也便宜得多(改大纲比重写正文便宜)。
- **上下文策略**:MVP 采用"滚动摘要 + 相关实体注入",可稳定支撑数百章;向量检索留作二期增强。
- **模型容错**:自动兼容豆包 seed 系列的 thinking 参数(400 时降级重试)、JSON 输出解析失败自动带反馈重试(最多 3 次)。
## 常见问题
- **生成报 401 / AuthenticationError**:API Key 无效,去「模型设置」更换。
- **生成报 UnsupportedModel**:Agent Plan Key 只能用套餐内模型名(当前可用:`doubao-seed-2.0-lite`)。
- **生成报 max_tokens 相关错误**:模型输出上限小于设置值,调小「单次最大输出 tokens」。
- **端口号**:默认 API 5175、前端开发端口 5173,可在 `server/src/index.ts` / `web/vite.config.ts` 修改。