Skip to content

01 · 系统架构与技术选型 ​

说明:向量库 / 分桶加权记忆已于 2026-07 移除(embedding 来源长期不可用、且长上下文已使其非必需)。长程一致性现由「时序故事圣经 + 滚动摘要」承担,下文架构图与选型表已相应更新。

一、总体架构 ​

┌──────────────── Web 前端 (React + Vite + TS) ────────────────┐
│  ① 标签化倾向选择器(chips + 我要输入,贯穿大纲/正文/润色)      │
│  ② 大纲编辑器(可随时改,改动触发级联影响分析)                 │
│  ③ 逐章生成(SSE 流式输出)                                    │
│  ④ 一致性看板(角色状态时间线 / 伏笔回收进度 / 大纲-正文同步)    │
│  ⑤ 润色工作台(整章 or 选段,选风格,锁情节)                   │
└───────────────────────────┬─────────────────────────────────┘
                            │ REST + SSE
┌───────────────────────────┴─────────────────────────────────┐
│  FastAPI 后端                                                 │
│  ┌─────────────────────────────────────────────────────┐    │
│  │ A. 生成流水线(借鉴雪花写作法)                        │    │
│  │    种子 → 角色动力学 → 世界观 → 情节架构 → 章节蓝图 → 逐章│  │
│  ├─────────────────────────────────────────────────────┤    │
│  │ B. ★ 长程一致性引擎(双支柱)                          │    │
│  │    · 时序故事圣经(事实绑章节区间)                     │    │
│  │    · 伏笔调度器(四态 + 回收提醒)                      │    │
│  ├─────────────────────────────────────────────────────┤    │
│  │ C. ★ 大纲级联更新引擎(改一处,下游影响分析 + 对齐)     │    │
│  ├─────────────────────────────────────────────────────┤    │
│  │ D. 润色引擎(风格化改写,锁定情节事实)                 │    │
│  ├─────────────────────────────────────────────────────┤    │
│  │ E. 倾向 Prompt 拼装器(标签 → 写作指令注入)            │    │
│  ├─────────────────────────────────────────────────────┤    │
│  │ F. LLM 适配层(DeepSeek / OpenAI / Gemini + 模型路由)  │    │
│  └─────────────────────────────────────────────────────┘    │
└──────────────┬──────────────────────────────┬───────────────┘
               │
     ┌─────────┴──────────┐
     │ 关系库(硬事实)    │
     │ SQLite → Postgres  │
     │ 故事圣经/大纲版本/  │
     │ 伏笔/章节元数据/    │
     │ 滚动摘要            │
     └────────────────────┘

二、技术选型与理由 ​

层选型理由
后端框架Python + FastAPI原生 async + SSE 流式,适合 LLM 长任务;用户指定 Python
LLM 编排自封适配层(不用 LangChain)更可控;参考项目用 LangChain 反而变重
结构化存储SQLite(起步)→ Postgres存故事圣经、大纲版本、伏笔表;SQLite 零配置先跑通
ORMSQLAlchemy 2.xcreate_all + Alembic 迁移(渐进式引入,基线迁移代表当前全量 schema,未来变更走 alembic revision);app/migrate.py 保留为 legacy 数据迁移(建 admin/归属 orphan/加密 key 等),方便日后切 Postgres
数据校验Pydantic v2FastAPI 原生集成,LLM 结构化输出校验
前端React + Vite + TypeScript生态成熟,标签组件/看板好做
前端状态TanStack Query + Zustand服务端状态 + 客户端状态分离
流式SSE(Server-Sent Events)逐字输出生成过程;比 WebSocket 简单
部署Docker Compose单容器,后端 + 前端一键起

三、后端目录结构(规划) ​

backend/
├── app/
│   ├── main.py                  # FastAPI 入口
│   ├── config.py                # 配置管理(API keys / base_url / 模型路由)
│   ├── db/
│   │   ├── base.py              # SQLAlchemy 基础
│   │   ├── session.py           # DB session
│   │   └── models/              # 数据模型(见 02-data-model.md)
│   │       ├── project.py       # 小说项目
│   │       ├── outline.py       # 大纲 + 版本
│   │       ├── chapter.py       # 章节 + 正文
│   │       ├── story_bible.py   # 时序故事圣经(事实/角色/地点/物品)
│   │       ├── foreshadowing.py # 伏笔调度
│   │       └── preset.py        # 倾向预设
│   ├── llm/
│   │   ├── base.py              # LLM 适配器抽象基类
│   │   ├── deepseek.py          # DeepSeek 适配
│   │   ├── openai.py            # OpenAI 适配
│   │   ├── gemini.py            # Gemini 适配
│   │   ├── factory.py           # create_llm_adapter 工厂
│   │   └── router.py            # 任务级模型路由(强模型/快模型)
│   ├── engines/
│   │   ├── pipeline/            # A. 生成流水线
│   │   │   ├── architecture.py  # 种子/角色/世界观/情节
│   │   │   ├── blueprint.py     # 章节蓝图
│   │   │   └── chapter.py       # 逐章生成
│   │   ├── consistency/         # B. 长程一致性引擎
│   │   │   ├── bible.py         # 时序故事圣经(查询/更新)
│   │   │   ├── ledger.py        # 角色资源账本(possession/ability 专用视图)
│   │   │   ├── foreshadow.py    # 伏笔调度器
│   │   │   ├── extractor.py     # 章节后状态/事实抽取
│   │   │   └── checker.py       # 一致性校验
│   │   ├── cascade/             # C. 大纲级联更新引擎
│   │   │   ├── differ.py        # 大纲改动 diff
│   │   │   ├── impact.py        # 下游影响分析
│   │   │   └── regenerate.py    # 级联重生成
│   │   ├── polish/              # D. 润色引擎
│   │   │   └── polisher.py
│   │   ├── tendency/            # E. 倾向拼装器
│   │   │   ├── catalog.py       # 内置标签目录
│   │   │   └── assembler.py     # 标签 → Prompt 片段
│   │   ├── media/               # F. 三条出片线的共用内核(叶子,不许反向依赖任一条线)
│   │   │   ├── segments.py      # 切段与时间码(段边界只落在镜头边界上)
│   │   │   ├── subtitles.py     # SRT 时间码与累计时间轴
│   │   │   ├── anchors.py       # 画风锚 / 负面词兜底
│   │   │   ├── audio.py         # 音频分轨口径(环境音归模型,人声/BGM 后期铺)
│   │   │   ├── directions.py    # 画风方向目录(三线同一份,加一档三线都多一项)
│   │   │   └── text.py          # LLM 脏值收敛 + 带 BOM 的 CSV
│   │   ├── drama/               # 出片线①漫剧(风格卡→资产卡→集→剧本→分镜→三轨提示词)
│   │   ├── promo/               # 出片线②宣传片(命题短视频)
│   │   └── clips/               # 出片线③情绪短片(一次产三本子三选一)
│   ├── prompts/                 # 所有 Prompt 模板(借鉴雪花写作法)
│   ├── api/                     # 路由
│   │   ├── projects.py
│   │   ├── outline.py
│   │   ├── chapters.py
│   │   ├── consistency.py
│   │   ├── polish.py
│   │   └── tendency.py
│   └── schemas/                 # Pydantic 请求/响应模型
├── scripts/                     # 阶段自检脚本(smoke_test / stage1~5_test / ...)
├── requirements.txt
└── Dockerfile

> 已渐进式引入 Alembic:启动时先 `alembic upgrade head`(现有用户自动 stamp 到基线),再 `create_all` 兜底,最后 `app/migrate.py` 跑 legacy 数据迁移(建 admin/归属 orphan/加密 key 等)。

frontend/
├── src/
│   ├── api/                     # 对应后端路由的客户端
│   ├── components/
│   │   ├── TendencySelector/    # ① chips + 我要输入
│   │   ├── OutlineEditor/       # ② 大纲编辑 + 级联提示
│   │   ├── ChapterStream/       # ③ 流式生成
│   │   ├── ConsistencyBoard/    # ④ 一致性看板
│   │   └── PolishWorkbench/     # ⑤ 润色台
│   ├── pages/
│   ├── store/
│   └── main.tsx
├── package.json
└── Dockerfile

四、模型路由策略(借鉴 AI_NovelGenerator) ​

不同任务用不同模型平衡成本与质量:

任务模型档位理由
架构生成(种子/世界观/情节)强模型定基调,质量优先
章节蓝图强模型结构关键
正文草稿快模型量大,成本优先
章节摘要/事实抽取快模型结构化任务,快模型够用
定稿/润色强模型直接影响成品质量
一致性校验快/中模型找矛盾,够用即可

档位落地为 cc-switch 风格的多配置体系:设置页可存多套命名配置 (provider_configs,如「DeepSeek 官方」「中转站 A」),并各选一个 默认(quality 档)与快档(fast 档);未单独指定快档时 fast 跟随 quality。路由表另带任务级采样温度与输出预算(草稿/定稿 16384 tokens 等), 单套配置还可覆盖 timeout / max_tokens。调用侧长生成失败(中转站 CDN 掐断 524、429/5xx、网络超时)会自动退避重试,并改走流式聚合规避 CDN 长请求墙。

基于 Apache License 2.0 开源