本文引用的文件
本文件系统性阐述“策略管理器”在书籍生成中的应用,围绕策略模式设计与实现,详解base策略基类的共享执行框架、三大具体策略(顺序策略、一步大纲策略、逐章策略)的差异与适用场景,以及策略选择器的工作原理、切换机制与性能优化。同时,文档覆盖策略配置参数、执行条件判断、错误恢复策略,并提供可操作的实践路径,帮助开发者实现自定义策略、配置策略优先级、监控执行效果。
策略管理器位于书籍生成模块的策略目录中,配合节点层(nodes)与容错层(fault-tolerance)共同构成完整的生成流水线。策略层通过统一接口与共享执行框架,屏蔽不同工作流的差异;节点层负责各阶段的具体AI调用与数据持久化;容错层提供重试、超时、进度监控与自动恢复能力。
graph TB
subgraph "策略层"
SBase["base.ts<br/>共享执行框架"]
SSeq["sequential.strategy.ts<br/>顺序策略"]
SOne["one-step-outline.strategy.ts<br/>一步大纲策略"]
SPer["per-chapter.strategy.ts<br/>逐章策略"]
SDeep["deep-plan-parallel.strategy.ts<br/>推荐策略"]
SSelector["selector.ts<br/>策略选择器"]
STypes["types.ts<br/>接口与类型"]
end
subgraph "节点层"
NPlan["plan.node.ts<br/>规划节点"]
NFull["full-outline.node.ts<br/>一步大纲节点"]
NOutline["outline.node.ts<br/>大纲节点"]
NContent["content.node.ts<br/>内容节点"]
NPerChapter["per-chapter.node.ts<br/>逐章节点"]
end
subgraph "容错层"
FT["fault-tolerance.ts<br/>重试/超时/监控/恢复"]
end
SSelector --> SBase
SSeq --> SBase
SOne --> SBase
SPer --> SBase
SDeep --> SBase
SBase --> NPlan
SBase --> NOutline
SBase --> NFull
SBase --> NContent
SBase --> NPerChapter
NOutline --> FT
NFull --> FT
NPlan --> FT
NContent --> FT
NPerChapter --> FT
图表来源
章节来源
章节来源
策略管理器采用“策略接口 + 基类执行框架 + 具体策略实现 + 选择器”的分层设计。所有策略共享同一套图执行与状态管理逻辑,仅在节点组合与初始状态上有所差异。节点层负责与LLM交互、解析与持久化,容错层贯穿所有节点,提供稳健的执行保障。
sequenceDiagram
participant Client as "调用方"
participant Selector as "策略选择器"
participant Strategy as "具体策略"
participant Base as "基类执行框架"
participant Nodes as "节点层"
participant FT as "容错层"
Client->>Selector : 获取当前策略
Selector-->>Client : 返回策略实例
Client->>Strategy : 调用 generate(...)
Strategy->>Base : 构建 StateGraph + 初始状态
Base->>Nodes : 编译并流式执行节点
Nodes->>FT : 包装AI调用重试/超时
FT-->>Nodes : 返回结果或错误
Nodes-->>Base : 更新状态与进度
Base-->>Client : 完成/失败状态与进度
图表来源
章节来源
章节来源
章节来源
章节来源
章节来源
章节来源
章节来源
章节来源
容错层依赖
节点层广泛使用callLLMWithRetry与executeNodeWithTimeout,容错配置集中管理。
classDiagram
class GenerationStrategy {
+name
+description
+generate(bookId, topic, bookScale, genLevel)
}
class SequentialStrategy {
+name="sequential"
+description
+generate(...)
}
class OneStepOutlineStrategy {
+name="one-step-outline"
+description
+generate(...)
}
class PerChapterStrategy {
+name="per-chapter"
+description
+generate(...)
}
class DeepPlanParallelStrategy {
+name="deep-plan-parallel"
+description
+generate(...)
}
class StrategySelector {
+getCurrentStrategy()
+setCurrentStrategy(name)
+getAllStrategies()
+getStrategy(name)
}
GenerationStrategy <|.. SequentialStrategy
GenerationStrategy <|.. OneStepOutlineStrategy
GenerationStrategy <|.. PerChapterStrategy
GenerationStrategy <|.. DeepPlanParallelStrategy
StrategySelector --> GenerationStrategy : "持有实例"
图表来源
章节来源
章节来源
策略管理器通过统一的接口与执行框架,将复杂的书籍生成流程抽象为可插拔的策略集合。顺序策略强调可控性,一步大纲策略强调吞吐,逐章策略强调质量与扩展性。配合容错层的重试、超时与自动恢复,系统在复杂业务场景下仍能保持稳定与高效。推荐在生产环境中优先采用推荐策略,并根据业务目标灵活切换与优化。
flowchart TD
Start(["开始"]) --> GetSel["获取策略选择器"]
GetSel --> GetCurrent["获取当前策略名称"]
GetCurrent --> Switch{"是否需要切换?"}
Switch --> |否| UseCurrent["使用当前策略"]
Switch --> |是| SetNew["setCurrentStrategy(新策略)"]
SetNew --> UseCurrent
UseCurrent --> Run["调用策略.generate(...)"]
Run --> End(["结束"])
图表来源
章节来源
章节来源
章节来源
章节来源