# AI书籍生成引擎 **本文档引用的文件** - [index.ts](file://server/src/modules/book-generator/index.ts) - [graph.ts](file://server/src/modules/book-generator/graph.ts) - [stage-manager.ts](file://server/src/modules/book-generator/stage-manager.ts) - [book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts) - [book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [selector.ts](file://server/src/modules/book-generator/strategies/selector.ts) - [full-outline.node.ts](file://server/src/modules/book-generator/nodes/full-outline.node.ts) - [templates.ts](file://server/src/modules/book-generator/prompts/templates.ts) - [book-generator.types.ts](file://server/src/modules/book-generator/book-generator.types.ts) - [deep-plan-parallel.strategy.ts](file://server/src/modules/book-generator/strategies/deep-plan-parallel.strategy.ts) - [fault-tolerance.ts](file://server/src/modules/book-generator/fault-tolerance.ts) - [utils.ts](file://server/src/modules/book-generator/utils.ts) - [book-type-config.ts](file://server/src/modules/book-generator/book-type-config.ts) - [book-tools.ts](file://server/src/services/llm/book-tools.ts) ## 目录 1. [简介](#简介) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构总览](#架构总览) 5. [详细组件分析](#详细组件分析) 6. [依赖分析](#依赖分析) 7. [性能考虑](#性能考虑) 8. [故障排查指南](#故障排查指南) 9. [结论](#结论) 10. [附录](#附录) ## 简介 本项目是一个基于LangGraph的AI书籍生成引擎,提供从“书籍规划→大纲生成→内容创作→媒体合成”的全流程自动化能力。系统采用策略门面模式,支持多种生成策略(串行、一步大纲+并行内容、逐章内聚、DeepPlan+富大纲+并发+连贯性编辑),并通过阶段管理器、存储层、容错层与进度监控,确保大规模生成任务的稳定性与可观测性。 ## 项目结构 - 服务端核心位于 server/src/modules/book-generator,包含: - 策略系统:strategies/selector.ts、deep-plan-parallel.strategy.ts 等 - LangGraph工作流:graph.ts、nodes/*、prompts/templates.ts - 存储与阶段管理:book-generator.store.ts、stage-manager.ts - 批量编排与进度:book-generator.service.ts - 容错与监控:fault-tolerance.ts - 工具与配置:book-tools.ts、book-type-config.ts、utils.ts、book-generator.types.ts - 前端位于 my-uniapp-vue3,提供书籍生成界面与状态展示 ```mermaid graph TB subgraph "策略层" S1["策略选择器
selector.ts"] S2["DeepPlan+并行策略
deep-plan-parallel.strategy.ts"] end subgraph "LangGraph工作流" G1["状态定义
graph.ts"] N1["一步大纲节点
full-outline.node.ts"] P1["提示词模板
prompts/templates.ts"] end subgraph "编排与存储" B1["批量编排器
book-generator.service.ts"] ST["阶段管理器
stage-manager.ts"] DS["存储层
book-generator.store.ts"] end subgraph "容错与工具" FT["容错层
fault-tolerance.ts"] BT["LLM工具集
book-tools.ts"] CFG["类型配置
book-type-config.ts"] end S1 --> S2 S2 --> G1 G1 --> N1 N1 --> P1 B1 --> DS B1 --> ST DS --> FT DS --> BT DS --> CFG ``` **图表来源** - [selector.ts:1-81](file://server/src/modules/book-generator/strategies/selector.ts#L1-L81) - [deep-plan-parallel.strategy.ts:1-74](file://server/src/modules/book-generator/strategies/deep-plan-parallel.strategy.ts#L1-L74) - [graph.ts:1-83](file://server/src/modules/book-generator/graph.ts#L1-L83) - [full-outline.node.ts:1-243](file://server/src/modules/book-generator/nodes/full-outline.node.ts#L1-L243) - [templates.ts:1-361](file://server/src/modules/book-generator/prompts/templates.ts#L1-L361) - [book-generator.service.ts:1-549](file://server/src/modules/book-generator/book-generator.service.ts#L1-L549) - [stage-manager.ts:1-202](file://server/src/modules/book-generator/stage-manager.ts#L1-L202) - [book-generator.store.ts:1-800](file://server/src/modules/book-generator/book-generator.store.ts#L1-L800) - [fault-tolerance.ts:1-387](file://server/src/modules/book-generator/fault-tolerance.ts#L1-L387) - [book-tools.ts:1-104](file://server/src/services/llm/book-tools.ts#L1-L104) - [book-type-config.ts:1-133](file://server/src/modules/book-generator/book-type-config.ts#L1-L133) **章节来源** - [index.ts:1-119](file://server/src/modules/book-generator/index.ts#L1-L119) - [book-generator.types.ts:1-226](file://server/src/modules/book-generator/book-generator.types.ts#L1-L226) ## 核心组件 - 策略门面与主生成器:LangGraphBookGenerator,负责根据书籍规模与话题推断大纲层级,调用当前策略执行生成 - LangGraph状态与节点:GraphState定义状态字段;full-outline.node.ts等节点实现“一步大纲生成”等步骤 - 存储层:BookStore封装数据库读写、树形大纲构建、章节批量创建与更新、音频/视频生成与关联 - 阶段管理器:线性阶段模型与安全转移,支持前进与回退(regenerate),并自动清理下游资源 - 批量编排器:BatchGenerationOrchestrator,按步骤顺序执行内容生成、音频生成、音频合并、视频生成、视频合并,并推送进度 - 容错层:AI调用重试、节点超时、进度监控、自动恢复 - 提示词模板与工具:templates.ts提供系统提示词;book-tools.ts提供LLM工具(获取大纲、已写章节、问题上报) **章节来源** - [index.ts:74-119](file://server/src/modules/book-generator/index.ts#L74-L119) - [graph.ts:23-82](file://server/src/modules/book-generator/graph.ts#L23-L82) - [full-outline.node.ts:135-218](file://server/src/modules/book-generator/nodes/full-outline.node.ts#L135-L218) - [book-generator.store.ts:163-800](file://server/src/modules/book-generator/book-generator.store.ts#L163-L800) - [stage-manager.ts:100-198](file://server/src/modules/book-generator/stage-manager.ts#L100-L198) - [book-generator.service.ts:45-549](file://server/src/modules/book-generator/book-generator.service.ts#L45-L549) - [fault-tolerance.ts:17-387](file://server/src/modules/book-generator/fault-tolerance.ts#L17-L387) - [templates.ts:1-361](file://server/src/modules/book-generator/prompts/templates.ts#L1-L361) - [book-tools.ts:19-104](file://server/src/services/llm/book-tools.ts#L19-L104) ## 架构总览 系统采用“策略门面 + LangGraph工作流 + 编排器 + 存储/阶段/容错”的分层架构。策略门面根据输入选择具体工作流;LangGraph节点负责AI提示词工程与内容生成;编排器负责跨阶段的协调与进度推送;存储层负责持久化与树形大纲构建;阶段管理器保证状态机安全;容错层提供鲁棒性保障。 ```mermaid sequenceDiagram participant U as "用户" participant API as "API控制器" participant GEN as "LangGraphBookGenerator" participant STR as "策略选择器" participant WF as "LangGraph工作流" participant NODE as "大纲/内容节点" participant STORE as "BookStore" participant STAGE as "阶段管理器" U->>API : "提交生成任务" API->>GEN : "generate(bookId, topic, scale, genLevel)" GEN->>STR : "getCurrentStrategy()" STR-->>GEN : "返回策略实例" GEN->>WF : "runGraphWorkflow(initialState)" WF->>NODE : "执行节点如full-outline" NODE->>STORE : "写入大纲/章节记录" NODE-->>WF : "返回状态更新" WF->>STAGE : "推进章节/书籍阶段" WF-->>GEN : "完成一轮节点" GEN-->>API : "异步生成中" API-->>U : "返回任务ID/进度" ``` **图表来源** - [index.ts:74-91](file://server/src/modules/book-generator/index.ts#L74-L91) - [selector.ts:61-77](file://server/src/modules/book-generator/strategies/selector.ts#L61-L77) - [deep-plan-parallel.strategy.ts:44-71](file://server/src/modules/book-generator/strategies/deep-plan-parallel.strategy.ts#L44-L71) - [full-outline.node.ts:135-218](file://server/src/modules/book-generator/nodes/full-outline.node.ts#L135-L218) - [book-generator.store.ts:163-239](file://server/src/modules/book-generator/book-generator.store.ts#L163-L239) - [stage-manager.ts:158-198](file://server/src/modules/book-generator/stage-manager.ts#L158-L198) ## 详细组件分析 ### LangGraph工作流与状态 - 状态字段:包含书籍ID、用户ID、主题、规模、大纲层级、描述、规划结果、当前/已完成章节、完成标志、错误信息、进度、失败章节列表等 - 进度reducer:只增不减,防止回退丢失进度 - 节点:full-outline.node.ts实现“一步生成完整大纲”,并写入数据库(章→节→小节) ```mermaid flowchart TD Start(["开始"]) --> Init["初始化GraphState
bookId/topic/scale/genLevel"] Init --> Run["执行节点:full-outline"] Run --> Parse["解析JSON大纲"] Parse --> Save["写入outlineJson与章节记录"] Save --> Next["推进进度/完成标志"] Next --> End(["结束"]) ``` **图表来源** - [graph.ts:23-82](file://server/src/modules/book-generator/graph.ts#L23-L82) - [full-outline.node.ts:135-218](file://server/src/modules/book-generator/nodes/full-outline.node.ts#L135-L218) **章节来源** - [graph.ts:9-82](file://server/src/modules/book-generator/graph.ts#L9-L82) - [full-outline.node.ts:18-108](file://server/src/modules/book-generator/nodes/full-outline.node.ts#L18-L108) ### 策略系统与门面 - 策略注册:sequential、one-step-outline、per-chapter、deep-plan-parallel - 门面类:LangGraphBookGenerator.generate(bookId, topic, bookScale, genLevel?),内部解析genLevel并调用当前策略 - 推荐策略:deep-plan-parallel,包含深度规划→富大纲→并发内容→连贯性编辑 ```mermaid classDiagram class LangGraphBookGenerator { +generate(bookId, topic, bookScale, genLevel) } class StrategySelector { +getCurrentStrategy() +setCurrentStrategy(name) +getAllStrategies() } class DeepPlanParallelStrategy { +generate(bookId, topic, bookScale, genLevel) } LangGraphBookGenerator --> StrategySelector : "使用" StrategySelector --> DeepPlanParallelStrategy : "返回实例" ``` **图表来源** - [index.ts:74-91](file://server/src/modules/book-generator/index.ts#L74-L91) - [selector.ts:14-77](file://server/src/modules/book-generator/strategies/selector.ts#L14-L77) - [deep-plan-parallel.strategy.ts:32-73](file://server/src/modules/book-generator/strategies/deep-plan-parallel.strategy.ts#L32-L73) **章节来源** - [index.ts:23-65](file://server/src/modules/book-generator/index.ts#L23-L65) - [selector.ts:14-77](file://server/src/modules/book-generator/strategies/selector.ts#L14-L77) - [deep-plan-parallel.strategy.ts:32-73](file://server/src/modules/book-generator/strategies/deep-plan-parallel.strategy.ts#L32-L73) ### 存储机制与树形大纲 - 存储类:BookStore封装创建/查询/更新/删除书籍与章节,批量创建章节(upsert),章节树构建 - 树形结构:按level与number排序,支持章→节→小节三层 - 大纲构建:从数据库章节记录重建BookOutline,优先使用数据库构建的树 ```mermaid erDiagram BOOK { int id PK string title string description string bookScale int totalChapters int estimatedWords string genStage int progress } BOOK_CHAPTER { int id PK int bookId FK int number string title string summary string keyPoints int estimatedWords int level int parentId string genStage string audioUrl float audioDuration string videoUrl float videoDuration } BOOK ||--o{ BOOK_CHAPTER : "包含" ``` **图表来源** - [book-generator.store.ts:244-331](file://server/src/modules/book-generator/book-generator.store.ts#L244-L331) - [book-generator.store.ts:179-239](file://server/src/modules/book-generator/book-generator.store.ts#L179-L239) **章节来源** - [book-generator.store.ts:163-800](file://server/src/modules/book-generator/book-generator.store.ts#L163-L800) ### 阶段管理器与状态机 - 章节阶段:idle → outline_completed → content_generating → content_completed → audio_generating → audio_completed → video_generating → video_completed → failed - 安全转移:验证转移矩阵、乐观锁、回退时自动清理下游资源(音频/视频URL与时长) - 书籍阶段:由最低阶段(最落后章节)决定 ```mermaid stateDiagram-v2 [*] --> idle idle --> outline_completed : "大纲完成" outline_completed --> content_generating : "开始内容生成" content_generating --> content_completed : "内容完成" content_completed --> audio_generating : "开始音频生成" audio_generating --> audio_completed : "音频完成" audio_completed --> video_generating : "开始视频生成" video_generating --> video_completed : "视频完成" content_generating --> failed : "失败" audio_generating --> failed : "失败" video_generating --> failed : "失败" failed --> content_generating : "重新生成" failed --> audio_generating : "重新生成" failed --> video_generating : "重新生成" failed --> idle : "重置" ``` **图表来源** - [stage-manager.ts:13-49](file://server/src/modules/book-generator/stage-manager.ts#L13-L49) - [stage-manager.ts:100-198](file://server/src/modules/book-generator/stage-manager.ts#L100-L198) **章节来源** - [stage-manager.ts:100-198](file://server/src/modules/book-generator/stage-manager.ts#L100-L198) ### 批量生成编排器 - 步骤:generate_content → generate_audio → merge_audio → generate_video → merge_video - 进度:通过WebSocket推送,包含步骤名、百分比与消息 - 轮询检查:等待内容/音频/视频生成完成,设置最大等待时间 - 取消机制:支持设置/检查/清理取消标志 ```mermaid sequenceDiagram participant Orchestrator as "批量编排器" participant Store as "BookStore" participant LLM as "LangGraph生成" participant Stage as "阶段管理器" Orchestrator->>Store : "获取书籍/章节树" Orchestrator->>LLM : "异步启动内容生成" Orchestrator->>Store : "轮询检查完成状态" Orchestrator->>Stage : "推进章节/书籍阶段" Orchestrator-->>Orchestrator : "推送进度" ``` **图表来源** - [book-generator.service.ts:45-549](file://server/src/modules/book-generator/book-generator.service.ts#L45-L549) **章节来源** - [book-generator.service.ts:45-549](file://server/src/modules/book-generator/book-generator.service.ts#L45-L549) ### 容错与监控 - AI调用重试:最多3次,指数退避,失败记录到errorMsg - 节点超时:不同节点设定超时阈值,超时通知用户并触发恢复 - 进度监控:超过10分钟无进度发出警告,建议干预或自动恢复 - 自动恢复:重新加入队列,最多尝试2次 ```mermaid flowchart TD A["开始节点"] --> B["callLLMWithRetry
重试+退避"] B --> C{"成功?"} C -- 否 --> D["记录失败到errorMsg"] D --> E["通知用户AI失败"] E --> F["尝试自动恢复"] F --> G["重新加入队列"] C -- 是 --> H["executeNodeWithTimeout
超时控制"] H --> I{"超时?"} I -- 是 --> J["通知节点超时"] J --> K["尝试自动恢复"] I -- 否 --> L["正常完成"] ``` **图表来源** - [fault-tolerance.ts:68-180](file://server/src/modules/book-generator/fault-tolerance.ts#L68-L180) - [fault-tolerance.ts:188-323](file://server/src/modules/book-generator/fault-tolerance.ts#L188-L323) **章节来源** - [fault-tolerance.ts:17-387](file://server/src/modules/book-generator/fault-tolerance.ts#L17-L387) ### 提示词工程与工具调用 - 提示词模板:大纲/章节/小节/前言/后记系统提示词,严格格式约束 - LLM工具:get_existing_chapters、get_book_outline、report_chapter_issue,支持在生成过程中动态获取上下文与反馈 **章节来源** - [templates.ts:1-361](file://server/src/modules/book-generator/prompts/templates.ts#L1-L361) - [book-tools.ts:19-104](file://server/src/services/llm/book-tools.ts#L19-L104) ## 依赖分析 - 组件耦合 - 策略门面依赖策略选择器;策略实现依赖LangGraph与节点 - 编排器依赖存储层与阶段管理器;存储层依赖Prisma与LLM服务 - 容错层横切多个模块,提供统一的重试/超时/监控能力 - 外部依赖 - LangGraph:状态图与节点执行 - Prisma:数据库访问 - WebSocket:进度推送 - LLM服务:提示词调用与工具调用 ```mermaid graph LR Index["index.ts"] --> Sel["strategies/selector.ts"] Sel --> Strat["deep-plan-parallel.strategy.ts"] Strat --> Graph["graph.ts"] Graph --> Nodes["nodes/*.ts"] Nodes --> Templates["prompts/templates.ts"] Index --> Store["book-generator.store.ts"] Store --> Stage["stage-manager.ts"] Store --> FT["fault-tolerance.ts"] Store --> Tools["book-tools.ts"] Orchestrator["book-generator.service.ts"] --> Store Orchestrator --> Stage ``` **图表来源** - [index.ts:18-91](file://server/src/modules/book-generator/index.ts#L18-L91) - [selector.ts:6-77](file://server/src/modules/book-generator/strategies/selector.ts#L6-L77) - [deep-plan-parallel.strategy.ts:23-71](file://server/src/modules/book-generator/strategies/deep-plan-parallel.strategy.ts#L23-L71) - [graph.ts:5-82](file://server/src/modules/book-generator/graph.ts#L5-L82) - [full-outline.node.ts:7-13](file://server/src/modules/book-generator/nodes/full-outline.node.ts#L7-L13) - [templates.ts:1-42](file://server/src/modules/book-generator/prompts/templates.ts#L1-L42) - [book-generator.store.ts:5-13](file://server/src/modules/book-generator/book-generator.store.ts#L5-L13) - [stage-manager.ts:6-8](file://server/src/modules/book-generator/stage-manager.ts#L6-L8) - [fault-tolerance.ts:11-13](file://server/src/modules/book-generator/fault-tolerance.ts#L11-L13) - [book-tools.ts:10-11](file://server/src/services/llm/book-tools.ts#L10-L11) - [book-generator.service.ts:6-13](file://server/src/modules/book-generator/book-generator.service.ts#L6-L13) **章节来源** - [index.ts:18-91](file://server/src/modules/book-generator/index.ts#L18-L91) - [book-generator.service.ts:6-13](file://server/src/modules/book-generator/book-generator.service.ts#L6-L13) ## 性能考虑 - 并行策略:deep-plan-parallel通过“并行内容生成”显著缩短总耗时 - 节点超时与重试:避免单点阻塞,提高吞吐 - 进度只增不减:减少无效回退带来的重复计算 - upsert批量创建:避免唯一约束冲突,降低写入竞争 - 音频/视频合并:按父节点分组,减少I/O与状态切换 [本节为通用性能讨论,无需列出章节来源] ## 故障排查指南 - AI调用失败 - 现象:节点执行超时或最终失败 - 处理:查看errorMsg记录,确认重试次数;必要时触发自动恢复 - 生成卡住 - 现象:长时间无进度更新 - 处理:检查进度监控日志;若达到临界值,系统会尝试自动恢复 - 章节状态异常 - 现象:状态冲突或回退失败 - 处理:使用regenerateChapter回退到上游阶段;系统会自动清理下游资源 - 音频/视频生成失败 - 现象:叶节点音频/视频URL为空 - 处理:检查对应章节内容与genStage;必要时重新生成 **章节来源** - [fault-tolerance.ts:188-323](file://server/src/modules/book-generator/fault-tolerance.ts#L188-L323) - [stage-manager.ts:100-198](file://server/src/modules/book-generator/stage-manager.ts#L100-L198) - [book-generator.service.ts:222-453](file://server/src/modules/book-generator/book-generator.service.ts#L222-L453) ## 结论 本引擎通过策略门面与LangGraph工作流实现了可插拔的生成策略;通过阶段管理器与存储层确保状态一致性与数据完整性;通过容错层与监控保障大规模任务的稳定性;通过提示词工程与工具调用提升内容质量与可控性。推荐使用deep-plan-parallel策略以获得最佳的并发与质量平衡。 [本节为总结性内容,无需列出章节来源] ## 附录 ### 如何启动生成任务 - 通过API提交生成请求,传入bookId、topic、bookScale与可选genLevel - 引擎将根据策略与提示词生成大纲与内容,并推进阶段状态 - 前端可通过WebSocket轮询进度 **章节来源** - [index.ts:74-91](file://server/src/modules/book-generator/index.ts#L74-L91) - [book-generator.service.ts:149-217](file://server/src/modules/book-generator/book-generator.service.ts#L149-L217) ### 如何监控生成进度 - 编排器在每个步骤开始与结束时推送进度 - 进度包含步骤名、百分比与消息 - 若长时间无更新,系统会发出警告并尝试自动恢复 **章节来源** - [book-generator.service.ts:59-142](file://server/src/modules/book-generator/book-generator.service.ts#L59-L142) - [fault-tolerance.ts:188-261](file://server/src/modules/book-generator/fault-tolerance.ts#L188-L261) ### 如何处理生成失败 - AI调用失败:重试+记录错误;最终失败时推进到failed阶段 - 节点超时:通知用户并尝试自动恢复 - 章节失败:使用regenerateChapter回退到上游阶段,清理下游资源 **章节来源** - [fault-tolerance.ts:68-180](file://server/src/modules/book-generator/fault-tolerance.ts#L68-L180) - [stage-manager.ts:100-198](file://server/src/modules/book-generator/stage-manager.ts#L100-L198) ### 与AI模型的集成方式 - 通过callLLMWithMessages发送消息 - 通过callLLMWithRetry实现重试与退避 - 通过createBookTools提供工具调用(获取大纲、已写章节、问题上报) **章节来源** - [full-outline.node.ts:149-160](file://server/src/modules/book-generator/nodes/full-outline.node.ts#L149-L160) - [book-tools.ts:19-104](file://server/src/services/llm/book-tools.ts#L19-L104) - [fault-tolerance.ts:68-123](file://server/src/modules/book-generator/fault-tolerance.ts#L68-L123) ### 提示词工程与质量控制 - 严格格式约束:系统提示词要求返回合法JSON,禁止markdown与标签 - 写作指令:富信息大纲为每个节点附加writingInstructions,提升内容一致性 - 连贯性编辑:全局检查章节过渡、重复、术语统一与风格一致 **章节来源** - [templates.ts:10-42](file://server/src/modules/book-generator/prompts/templates.ts#L10-L42) - [templates.ts:241-318](file://server/src/modules/book-generator/prompts/templates.ts#L241-L318) - [templates.ts:324-361](file://server/src/modules/book-generator/prompts/templates.ts#L324-L361)