本文档引用的文件
本文件面向“生成节点系统”,系统性梳理并解释各节点的功能、输入输出、处理逻辑与协作关系,覆盖以下节点:
同时阐明节点间依赖关系、执行顺序、数据传递机制,并提供扩展新节点类型、配置参数与调试执行过程的方法。
生成节点系统位于服务端模块 book-generator 下,采用“节点 + 策略 + 图状态”的分层设计:
book-generator.controller.ts:对外 API(批量生成、取消、状态查询)
graph TB
subgraph "节点"
PLAN["plan.node.ts"]
OUTLINE["outline.node.ts"]
FULL_OUTLINE["full-outline.node.ts"]
SECTIONS["sections.node.ts"]
PER_CHAPTER["per-chapter.node.ts"]
CONTENT["content.node.ts"]
FOREWORD["foreword.node.ts"]
end
subgraph "策略"
SEQ["sequential.strategy.ts"]
ONESTEP["one-step-outline.strategy.ts"]
PERCHAPTER["per-chapter.strategy.ts"]
end
subgraph "图与类型"
GRAPH["graph.ts"]
TYPES["book-generator.types.ts"]
CFG["book-type-config.ts"]
UTILS["utils.ts"]
end
PLAN --> OUTLINE
OUTLINE --> SECTIONS
SECTIONS --> CONTENT
FULL_OUTLINE --> CONTENT
PER_CHAPTER --> CONTENT
FOREWORD --> CONTENT
SEQ --> PLAN
SEQ --> OUTLINE
SEQ --> SECTIONS
SEQ --> CONTENT
ONESTEP --> PLAN
ONESTEP --> FULL_OUTLINE
ONESTEP --> CONTENT
PERCHAPTER --> PLAN
PERCHAPTER --> OUTLINE
PERCHAPTER --> PER_CHAPTER
图表来源
章节来源
章节来源
系统通过 LangGraph 将多个节点串联或并行组合,形成不同的生成策略。策略文件定义节点连接关系,节点文件实现具体业务逻辑,类型与配置为节点提供数据契约与约束。
sequenceDiagram
participant Client as "客户端"
participant Controller as "book-generator.controller.ts"
participant Strategy as "策略(Sequential/OneStep/PerChapter)"
participant Plan as "plan.node.ts"
participant Outline as "outline.node.ts 或 full-outline.node.ts"
participant Sections as "sections.node.ts"
participant Content as "content.node.ts"
participant Foreword as "foreword.node.ts"
Client->>Controller : POST /books/ : id/batch-generate
Controller->>Strategy : 创建并启动生成任务
Strategy->>Plan : plan_book
Plan-->>Strategy : 返回 genLevel 与 bookPlan
alt 串行策略
Strategy->>Outline : generate_outline
Outline-->>Strategy : 返回 outlineJson
Strategy->>Sections : generate_sections
Sections-->>Strategy : 补充节大纲
Strategy->>Sections : generate_subsections
Sections-->>Strategy : 补充小节大纲
Strategy->>Content : write_chapters
Content-->>Strategy : 完成内容生成
else 一步大纲策略
Strategy->>Outline : generate_full_outline
Outline-->>Strategy : 返回完整树形大纲
Strategy->>Content : write_chapters
Content-->>Strategy : 完成内容生成
else 逐章策略
Strategy->>Outline : generate_outline
Outline-->>Strategy : 返回章大纲
Strategy->>Content : per_chapter
Content-->>Strategy : 每章独立生成结构+内容
end
Strategy->>Foreword : 生成前言/后记
Foreword-->>Strategy : 完成
Strategy-->>Controller : 返回完成状态
Controller-->>Client : 返回任务结果
图表来源
章节来源
章节来源
章节来源
章节来源
章节来源
典型用途:生成最终内容并触发音频生成。
flowchart TD
Start(["进入 writeChaptersNode"]) --> LoadBook["加载书籍与大纲"]
LoadBook --> FindLeaves["查找叶节点并过滤未完成项"]
FindLeaves --> HasTargets{"是否存在待生成目标?"}
HasTargets --> |否| Skip["跳过生成,触发音频生成"] --> End
HasTargets --> |是| BuildCtx["构建父节点映射与工具"]
BuildCtx --> Loop["遍历每个目标"]
Loop --> Quota["额度检查与字数上限校验"]
Quota --> GenType{"短文还是长篇?"}
GenType --> |短文| ShortMsg["构建短文消息"]
GenType --> |长篇| LongMsg["构建小节内容消息"]
ShortMsg --> CallLLM["调用 LLM 生成内容"]
LongMsg --> CallLLM
CallLLM --> Clean["清理思考标签与无关文本"]
Clean --> Safety["三层安全防护:预算偏差/全书上限/全局上限"]
Safety --> Consume["消耗音频分钟配额"]
Consume --> Save["保存内容与字数,推进阶段"]
Save --> Trigger["触发音频生成"]
Trigger --> Next["下一个目标"]
Next --> Loop
Loop --> Done["全部完成,更新父节点状态"] --> End(["退出"])
图表来源
章节来源
章节来源
章节来源
类型与配置:
utils 提供进度常量。
graph LR
PLAN["plan.node"] --> OUTLINE["outline.node"]
PLAN --> FULL_OUTLINE["full-outline.node"]
PLAN --> PERCHAPTER["per-chapter.node"]
OUTLINE --> SECTIONS["sections.node"]
SECTIONS --> CONTENT["content.node"]
FULL_OUTLINE --> CONTENT
PERCHAPTER --> CONTENT
FOREWORD["foreword.node"] --> CONTENT
图表来源
章节来源
章节来源
章节来源
生成节点系统通过“节点 + 策略 + 图状态”的架构实现了可插拔、可扩展的书籍生成流水线。不同策略在不同场景下平衡了生成质量与效率,节点间通过 GraphState 实现稳定的数据传递与进度管理。安全与容错机制保障了大规模生成的可靠性,而并行优化显著提升了吞吐能力。建议在扩展新节点时遵循现有模式:定义输入输出、实现容错与日志、接入进度更新与安全检查,并通过策略文件进行编排。
章节来源
章节来源
章节来源
章节来源
章节来源