本文档引用的文件
本项目是一个基于LangGraph的AI书籍生成引擎,提供从“书籍规划→大纲生成→内容创作→媒体合成”的全流程自动化能力。系统采用策略门面模式,支持多种生成策略(串行、一步大纲+并行内容、逐章内聚、DeepPlan+富大纲+并发+连贯性编辑),并通过阶段管理器、存储层、容错层与进度监控,确保大规模生成任务的稳定性与可观测性。
前端位于 my-uniapp-vue3,提供书籍生成界面与状态展示
graph TB
subgraph "策略层"
S1["策略选择器<br/>selector.ts"]
S2["DeepPlan+并行策略<br/>deep-plan-parallel.strategy.ts"]
end
subgraph "LangGraph工作流"
G1["状态定义<br/>graph.ts"]
N1["一步大纲节点<br/>full-outline.node.ts"]
P1["提示词模板<br/>prompts/templates.ts"]
end
subgraph "编排与存储"
B1["批量编排器<br/>book-generator.service.ts"]
ST["阶段管理器<br/>stage-manager.ts"]
DS["存储层<br/>book-generator.store.ts"]
end
subgraph "容错与工具"
FT["容错层<br/>fault-tolerance.ts"]
BT["LLM工具集<br/>book-tools.ts"]
CFG["类型配置<br/>book-type-config.ts"]
end
S1 --> S2
S2 --> G1
G1 --> N1
N1 --> P1
B1 --> DS
B1 --> ST
DS --> FT
DS --> BT
DS --> CFG
图表来源
章节来源
章节来源
系统采用“策略门面 + LangGraph工作流 + 编排器 + 存储/阶段/容错”的分层架构。策略门面根据输入选择具体工作流;LangGraph节点负责AI提示词工程与内容生成;编排器负责跨阶段的协调与进度推送;存储层负责持久化与树形大纲构建;阶段管理器保证状态机安全;容错层提供鲁棒性保障。
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/进度"
图表来源
节点:full-outline.node.ts实现“一步生成完整大纲”,并写入数据库(章→节→小节)
flowchart TD
Start(["开始"]) --> Init["初始化GraphState<br/>bookId/topic/scale/genLevel"]
Init --> Run["执行节点:full-outline"]
Run --> Parse["解析JSON大纲"]
Parse --> Save["写入outlineJson与章节记录"]
Save --> Next["推进进度/完成标志"]
Next --> End(["结束"])
图表来源
章节来源
推荐策略:deep-plan-parallel,包含深度规划→富大纲→并发内容→连贯性编辑
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 : "返回实例"
图表来源
章节来源
大纲构建:从数据库章节记录重建BookOutline,优先使用数据库构建的树
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 : "包含"
图表来源
章节来源
书籍阶段:由最低阶段(最落后章节)决定
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 : "重置"
图表来源
章节来源
取消机制:支持设置/检查/清理取消标志
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 : "推送进度"
图表来源
章节来源
自动恢复:重新加入队列,最多尝试2次
flowchart TD
A["开始节点"] --> B["callLLMWithRetry<br/>重试+退避"]
B --> C{"成功?"}
C -- 否 --> D["记录失败到errorMsg"]
D --> E["通知用户AI失败"]
E --> F["尝试自动恢复"]
F --> G["重新加入队列"]
C -- 是 --> H["executeNodeWithTimeout<br/>超时控制"]
H --> I{"超时?"}
I -- 是 --> J["通知节点超时"]
J --> K["尝试自动恢复"]
I -- 否 --> L["正常完成"]
图表来源
章节来源
章节来源
外部依赖
LLM服务:提示词调用与工具调用
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
图表来源
章节来源
[本节为通用性能讨论,无需列出章节来源]
章节来源
本引擎通过策略门面与LangGraph工作流实现了可插拔的生成策略;通过阶段管理器与存储层确保状态一致性与数据完整性;通过容错层与监控保障大规模任务的稳定性;通过提示词工程与工具调用提升内容质量与可控性。推荐使用deep-plan-parallel策略以获得最佳的并发与质量平衡。
[本节为总结性内容,无需列出章节来源]
章节来源
章节来源
章节来源
章节来源
章节来源