# 内容节点实现 **本文档引用的文件** - [content.node.ts](file://server/src/modules/book-generator/nodes/content.node.ts) - [graph.ts](file://server/src/modules/book-generator/graph.ts) - [book-generator.types.ts](file://server/src/modules/book-generator/book-generator.types.ts) - [templates.ts](file://server/src/modules/book-generator/prompts/templates.ts) - [content-cleaner.ts](file://server/src/modules/book-generator/utils/content-cleaner.ts) - [book-type-config.ts](file://server/src/modules/book-generator/book-type-config.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) - [async-pool.ts](file://server/src/modules/book-generator/utils/async-pool.ts) - [sequential.strategy.ts](file://server/src/modules/book-generator/strategies/sequential.strategy.ts) - [per-chapter.strategy.ts](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts) - [outline.node.ts](file://server/src/modules/book-generator/nodes/outline.node.ts) - [sections.node.ts](file://server/src/modules/book-generator/nodes/sections.node.ts) ## 目录 1. [简介](#简介) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构概览](#架构概览) 5. [详细组件分析](#详细组件分析) 6. [依赖分析](#依赖分析) 7. [性能考虑](#性能考虑) 8. [故障排查指南](#故障排查指南) 9. [结论](#结论) 10. [附录](#附录) ## 简介 本文件面向“内容节点”(writeChaptersNode 与 writeChaptersParallelNode)的实现,系统性阐述其设计原理、核心算法、文本处理流程与格式化规则;解释与大纲节点、章节节点、阶段管理器、存储层及提示词模板的交互方式;说明在AI生成流程中的作用、输入输出规范、错误处理机制;并提供配置选项、性能优化技巧与调试方法,辅以实际使用案例与扩展开发指导。 ## 项目结构 内容节点位于书籍生成模块的节点层,与工作流策略、提示词模板、阶段管理、存储层协同工作,形成从规划到内容生成再到音频生成的完整链路。 ```mermaid graph TB subgraph "工作流策略" S1["sequential.strategy.ts
串行策略"] S2["per-chapter.strategy.ts
逐章策略"] end subgraph "节点层" N1["outline.node.ts
大纲生成"] N2["sections.node.ts
节/小节大纲"] N3["content.node.ts
内容生成串行/并行"] end subgraph "支撑模块" G["graph.ts
状态定义"] T["templates.ts
提示词模板"] C["content-cleaner.ts
内容清洗"] B["book-type-config.ts
类型配置"] M["stage-manager.ts
阶段管理"] K["book-generator.store.ts
存储层"] P["async-pool.ts
并发池"] end S1 --> N1 --> N2 --> N3 S2 --> N1 --> N2 --> N3 N3 --> T N3 --> C N3 --> B N3 --> M N3 --> K N3 --> P G --> N3 ``` 图示来源 - [sequential.strategy.ts:21-59](file://server/src/modules/book-generator/strategies/sequential.strategy.ts#L21-L59) - [per-chapter.strategy.ts:21-55](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts#L21-L55) - [outline.node.ts:14-129](file://server/src/modules/book-generator/nodes/outline.node.ts#L14-L129) - [sections.node.ts:19-235](file://server/src/modules/book-generator/nodes/sections.node.ts#L19-L235) - [content.node.ts:102-332](file://server/src/modules/book-generator/nodes/content.node.ts#L102-L332) - [graph.ts:23-82](file://server/src/modules/book-generator/graph.ts#L23-L82) - [templates.ts:154-169](file://server/src/modules/book-generator/prompts/templates.ts#L154-L169) - [content-cleaner.ts:12-78](file://server/src/modules/book-generator/utils/content-cleaner.ts#L12-L78) - [book-type-config.ts:9-133](file://server/src/modules/book-generator/book-type-config.ts#L9-L133) - [stage-manager.ts:100-198](file://server/src/modules/book-generator/stage-manager.ts#L100-L198) - [book-generator.store.ts:163-800](file://server/src/modules/book-generator/book-generator.store.ts#L163-L800) - [async-pool.ts:8-50](file://server/src/modules/book-generator/utils/async-pool.ts#L8-L50) 章节来源 - [content.node.ts:102-332](file://server/src/modules/book-generator/nodes/content.node.ts#L102-L332) - [graph.ts:23-82](file://server/src/modules/book-generator/graph.ts#L23-L82) - [book-generator.types.ts:8-112](file://server/src/modules/book-generator/book-generator.types.ts#L8-L112) - [templates.ts:154-169](file://server/src/modules/book-generator/prompts/templates.ts#L154-L169) - [content-cleaner.ts:12-78](file://server/src/modules/book-generator/utils/content-cleaner.ts#L12-L78) - [book-type-config.ts:9-133](file://server/src/modules/book-generator/book-type-config.ts#L9-L133) - [stage-manager.ts:100-198](file://server/src/modules/book-generator/stage-manager.ts#L100-L198) - [book-generator.store.ts:163-800](file://server/src/modules/book-generator/book-generator.store.ts#L163-L800) - [async-pool.ts:8-50](file://server/src/modules/book-generator/utils/async-pool.ts#L8-L50) - [sequential.strategy.ts:21-59](file://server/src/modules/book-generator/strategies/sequential.strategy.ts#L21-L59) - [per-chapter.strategy.ts:21-55](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts#L21-L55) - [outline.node.ts:14-129](file://server/src/modules/book-generator/nodes/outline.node.ts#L14-L129) - [sections.node.ts:19-235](file://server/src/modules/book-generator/nodes/sections.node.ts#L19-L235) ## 核心组件 - 内容生成节点(writeChaptersNode) - 串行遍历所有叶节点(无子节点的章节),按需生成内容,支持短文与长篇书籍两种路径。 - 集成额度检查、累计字数上限、三层安全防护(章节预算偏差、全书字数上限)、音频分钟消耗与状态推进。 - 生成完成后自动触发音频生成,并更新书籍进度。 - 并行内容生成节点(writeChaptersParallelNode) - 基于 AsyncPool 控制并发,按深度规划中的交叉引用关系进行拓扑排序,优先生成依赖章节。 - 单节点生成函数 generateSingleNodeContent 抽象出统一的生成流程,便于并行复用。 - 文本处理与格式化 - cleanThinkingText:多模式清洗思考标签与无关文本,智能提取正文,压缩多余空行。 - truncateAtBoundary:按段落/句子边界智能截断,避免破坏语义完整性。 - 阶段管理与状态推进 - advanceChapter/regenerateChapter:线性阶段模型,严格前进/回退,配合资源清理规则。 - 存储与数据传递 - bookStore:统一的内存/数据库访问接口,负责章节内容更新、音频生成触发、书籍状态联动。 - 提示词与系统提示 - SUBSECTION_CONTENT_SYSTEM_PROMPT:面向小节内容生成的系统提示,支持工具调用以提升质量。 - 类型与配置 - BookGenStage/ChapterGenStage:线性阶段枚举,确保状态一致性。 - book-type-config:字数上限、章节范围、音频分钟估算等配置。 章节来源 - [content.node.ts:102-332](file://server/src/modules/book-generator/nodes/content.node.ts#L102-L332) - [content.node.ts:444-545](file://server/src/modules/book-generator/nodes/content.node.ts#L444-L545) - [content-cleaner.ts:12-78](file://server/src/modules/book-generator/utils/content-cleaner.ts#L12-L78) - [content-cleaner.ts:87-145](file://server/src/modules/book-generator/utils/content-cleaner.ts#L87-L145) - [stage-manager.ts:158-198](file://server/src/modules/book-generator/stage-manager.ts#L158-L198) - [book-generator.store.ts:163-800](file://server/src/modules/book-generator/book-generator.store.ts#L163-L800) - [templates.ts:154-169](file://server/src/modules/book-generator/prompts/templates.ts#L154-L169) - [book-type-config.ts:9-133](file://server/src/modules/book-generator/book-type-config.ts#L9-L133) ## 架构概览 内容节点在 LangGraph 工作流中作为“写入章节内容”的终端节点,承接大纲生成与节/小节大纲生成的结果,驱动 LLM 生成正文内容,并通过阶段管理器推进状态、通过存储层持久化、通过提示词模板提供上下文。 ```mermaid sequenceDiagram participant W as "工作流策略" participant N as "内容节点(writeChaptersNode)" participant L as "LLM服务" participant T as "提示词模板" participant S as "阶段管理器" participant D as "存储层" participant A as "音频服务" W->>N : 初始化状态(书ID/主题/规模/层级) N->>D : 查询书籍与大纲/叶节点 loop 遍历叶节点 N->>T : 构建消息(短文/长篇) N->>L : 调用LLM(工具/消息) L-->>N : 生成内容 N->>N : 清洗/截断/统计字数 N->>S : advanceChapter(content_generating) N->>D : 更新章节内容/字数 N->>S : advanceChapter(content_completed) N->>A : 触发章节音频生成 end N-->>W : 返回进度/错误 ``` 图示来源 - [content.node.ts:102-332](file://server/src/modules/book-generator/nodes/content.node.ts#L102-L332) - [templates.ts:154-169](file://server/src/modules/book-generator/prompts/templates.ts#L154-L169) - [stage-manager.ts:158-198](file://server/src/modules/book-generator/stage-manager.ts#L158-L198) - [book-generator.store.ts:758-800](file://server/src/modules/book-generator/book-generator.store.ts#L758-L800) ## 详细组件分析 ### 串行内容生成节点(writeChaptersNode) - 输入 - GraphState:包含 bookId、topic、bookScale、genLevel、description 等。 - 数据库:书籍、章节树、大纲。 - 处理流程 - 识别叶节点(无子节点),过滤未完成内容的叶节点。 - 为每个叶节点构建消息(短文直写或长篇基于父章节/节信息)。 - LLM 调用(优先工具调用,失败则降级为消息调用)。 - 清洗思考文本、字数统计、三层安全防护(预算×3截断、全书上限)。 - 更新章节内容与字数,推进到 content_completed,触发音频生成。 - 更新书籍进度,返回结果。 - 关键特性 - 额度检查与中断标记。 - 累计字数达到规模上限(±20%)时停止。 - 失败章节记录与重试策略(通过阶段回退与重新生成)。 ```mermaid flowchart TD Start(["进入节点"]) --> Load["加载书籍与大纲"] Load --> FindLeaves["查找叶节点并过滤未完成项"] FindLeaves --> HasTargets{"存在待生成目标?"} HasTargets -- 否 --> TriggerAudio["触发已完成章节音频生成"] --> End(["返回完成"]) HasTargets -- 是 --> Loop["遍历每个目标"] Loop --> BuildMsg["构建消息(短文/长篇)"] BuildMsg --> CallLLM["LLM调用(工具/消息)"] CallLLM --> Clean["清洗思考文本/统计字数"] Clean --> Safety1{"预算×3异常?"} Safety1 -- 是 --> Trunc["按预算×2.5截断(边界)"] --> Safety2{"全书超限?"} Safety1 -- 否 --> Safety2 Safety2 -- 是 --> Interrupt["中断并标记"] --> End Safety2 -- 否 --> Consume["消耗音频分钟配额"] Consume --> Save["更新章节内容/字数"] Save --> Advance["推进到 content_completed"] Advance --> GenAudio["触发音频生成"] GenAudio --> Next{"还有目标?"} Next -- 是 --> Loop Next -- 否 --> UpdateParent["更新父节/章状态为 content_completed"] --> End ``` 图示来源 - [content.node.ts:102-332](file://server/src/modules/book-generator/nodes/content.node.ts#L102-L332) - [content-cleaner.ts:12-78](file://server/src/modules/book-generator/utils/content-cleaner.ts#L12-L78) - [content-cleaner.ts:87-145](file://server/src/modules/book-generator/utils/content-cleaner.ts#L87-L145) - [stage-manager.ts:158-198](file://server/src/modules/book-generator/stage-manager.ts#L158-L198) - [book-type-config.ts:9-133](file://server/src/modules/book-generator/book-type-config.ts#L9-L133) 章节来源 - [content.node.ts:102-332](file://server/src/modules/book-generator/nodes/content.node.ts#L102-L332) ### 并行内容生成节点(writeChaptersParallelNode) - 输入 - 与串行节点相同的 GraphState 与数据。 - 处理流程 - 基于 AsyncPool 控制并发(默认 8),为每个叶节点创建任务。 - generateSingleNodeContent 抽象统一生成流程,包含消息构建、LLM 调用、清洗、截断、保存、推进、音频触发。 - 并发执行后汇总结果,更新父级状态,检查累计字数与规模上限,返回错误信息。 - 关键特性 - 通过拓扑排序与 crossReferences 决策生成顺序,解决依赖问题。 - 统一的错误收集与中断信息拼接。 ```mermaid sequenceDiagram participant P as "并行节点" participant Pool as "AsyncPool" participant F as "generateSingleNodeContent" participant L as "LLM服务" participant S as "阶段管理器" participant D as "存储层" P->>Pool : 构建任务列表(叶节点) Pool->>F : 并发执行(fn) loop 每个任务 F->>F : 构建消息/调用LLM F->>F : 清洗/截断/统计字数 F->>S : advanceChapter(content_generating) F->>D : 更新章节内容/字数 F->>S : advanceChapter(content_completed) F-->>Pool : 返回结果(wordCount) end Pool-->>P : 汇总结果(成功/失败/总字数) P->>D : 更新父节/章状态 P-->>调用方 : 返回进度/错误 ``` 图示来源 - [content.node.ts:444-545](file://server/src/modules/book-generator/nodes/content.node.ts#L444-L545) - [async-pool.ts:22-36](file://server/src/modules/book-generator/utils/async-pool.ts#L22-L36) - [content.node.ts:342-433](file://server/src/modules/book-generator/nodes/content.node.ts#L342-L433) 章节来源 - [content.node.ts:444-545](file://server/src/modules/book-generator/nodes/content.node.ts#L444-L545) - [async-pool.ts:8-50](file://server/src/modules/book-generator/utils/async-pool.ts#L8-L50) ### 文本处理与格式化(cleanThinkingText 与 truncateAtBoundary) - cleanThinkingText - 多模式清洗:HTML/XML 标签、常见思考块标记/、未闭合标记、思考前缀、孤立闭合标签。 - 智能提取正文:当内容以思考性语言开头或正文前有大量非标题内容时,截取到首个标题。 - 压缩空行,去除首尾空白。 - truncateAtBoundary - 段落边界优先:按段落拼接,超过阈值则停止,避免截断语义。 - 句子边界回退:若首个段落超限,则按句子边界截断,必要时硬截但保留完整词。 - cleanAndTruncate - 组合清洗与截断,返回是否截断与原始长度。 ```mermaid flowchart TD In["原始LLM输出"] --> Clean["cleanThinkingText
多模式清洗/提取正文"] Clean --> Len{"长度<=阈值?"} Len -- 是 --> Out["返回清洗后内容"] Len -- 否 --> Boundary{"策略=段落?"} Boundary -- 是 --> Para["按段落边界截断"] Boundary -- 否 --> Sent["按句子边界截断"] Para --> Out Sent --> Out ``` 图示来源 - [content-cleaner.ts:12-78](file://server/src/modules/book-generator/utils/content-cleaner.ts#L12-L78) - [content-cleaner.ts:87-145](file://server/src/modules/book-generator/utils/content-cleaner.ts#L87-L145) - [content-cleaner.ts:151-168](file://server/src/modules/book-generator/utils/content-cleaner.ts#L151-L168) 章节来源 - [content-cleaner.ts:12-78](file://server/src/modules/book-generator/utils/content-cleaner.ts#L12-L78) - [content-cleaner.ts:87-145](file://server/src/modules/book-generator/utils/content-cleaner.ts#L87-L145) - [content-cleaner.ts:151-168](file://server/src/modules/book-generator/utils/content-cleaner.ts#L151-L168) ### 阶段管理与状态推进(advanceChapter / regenerateChapter) - 线性阶段模型:章节状态按固定顺序前进,禁止回退(除非显式回退)。 - 转移矩阵:定义允许的阶段转移,确保业务一致性。 - 资源清理:回退到更低阶段时自动清理下游资源(音频/视频 URL 与时长)。 - 乐观锁:使用当前状态作为条件更新,避免竞态。 ```mermaid stateDiagram-v2 [*] --> 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 content_completed --> failed audio_generating --> failed audio_completed --> failed video_generating --> failed video_completed --> failed ``` 图示来源 - [stage-manager.ts:57-67](file://server/src/modules/book-generator/stage-manager.ts#L57-L67) - [stage-manager.ts:158-198](file://server/src/modules/book-generator/stage-manager.ts#L158-L198) 章节来源 - [stage-manager.ts:100-198](file://server/src/modules/book-generator/stage-manager.ts#L100-L198) ### 存储与数据传递(bookStore) - 统一接口:创建/更新书籍、章节、音频生成与关联、章节树构建、公开状态切换等。 - 章节内容更新:支持按 number 或 id 更新,含字数统计与生成时间戳。 - 音频生成:异步生成并回调更新章节音频 URL 与时长。 - 书籍阶段计算:根据所有章节最低阶段映射到书籍阶段。 章节来源 - [book-generator.store.ts:163-800](file://server/src/modules/book-generator/book-generator.store.ts#L163-L800) ### 提示词与系统提示(SUBSECTION_CONTENT_SYSTEM_PROMPT) - 面向小节内容生成的系统提示,强调工具调用能力(查看大纲、已有章节、报告问题)与写作要求。 - 为长篇书籍提供上下文(书名、章/节标题/概述、小节标题/概述、核心知识点、预估字数)。 章节来源 - [templates.ts:154-169](file://server/src/modules/book-generator/prompts/templates.ts#L154-L169) - [content.node.ts:60-96](file://server/src/modules/book-generator/nodes/content.node.ts#L60-L96) ### 类型与配置(BookGenStage/ChapterGenStage、book-type-config) - 线性阶段枚举:确保状态机一致性与可追踪性。 - 字数与章节配置:提供规模上限(±20%)、章节范围、每章字数浮动、音频分钟估算、全局绝对上限等。 - 与订阅配额结合:生成内容时消耗音频分钟,支持额度检查与中断标记。 章节来源 - [book-generator.types.ts:8-112](file://server/src/modules/book-generator/book-generator.types.ts#L8-L112) - [book-type-config.ts:9-133](file://server/src/modules/book-generator/book-type-config.ts#L9-L133) ## 依赖分析 - 节点间依赖 - outline.node.ts → sections.node.ts → content.node.ts(串行策略) - per-chapter.strategy.ts → outline.node.ts → perChapterNode(章节内聚策略) - 外部依赖 - LangGraph 状态与工作流编排 - LLM 服务(工具调用与消息调用) - 数据库(Prisma)与存储层 - 提示词模板与内容清洗工具 - 并发池与阶段管理器 ```mermaid graph LR O["outline.node.ts"] --> S["sections.node.ts"] S --> C["content.node.ts"] P["per-chapter.strategy.ts"] --> O C --> T["templates.ts"] C --> CC["content-cleaner.ts"] C --> ST["stage-manager.ts"] C --> BS["book-generator.store.ts"] C --> AP["async-pool.ts"] ``` 图示来源 - [outline.node.ts:14-129](file://server/src/modules/book-generator/nodes/outline.node.ts#L14-L129) - [sections.node.ts:19-235](file://server/src/modules/book-generator/nodes/sections.node.ts#L19-L235) - [content.node.ts:102-332](file://server/src/modules/book-generator/nodes/content.node.ts#L102-L332) - [per-chapter.strategy.ts:21-55](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts#L21-L55) - [templates.ts:154-169](file://server/src/modules/book-generator/prompts/templates.ts#L154-L169) - [content-cleaner.ts:12-78](file://server/src/modules/book-generator/utils/content-cleaner.ts#L12-L78) - [stage-manager.ts:158-198](file://server/src/modules/book-generator/stage-manager.ts#L158-L198) - [book-generator.store.ts:163-800](file://server/src/modules/book-generator/book-generator.store.ts#L163-L800) - [async-pool.ts:8-50](file://server/src/modules/book-generator/utils/async-pool.ts#L8-L50) 章节来源 - [sequential.strategy.ts:21-59](file://server/src/modules/book-generator/strategies/sequential.strategy.ts#L21-L59) - [per-chapter.strategy.ts:21-55](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts#L21-L55) - [outline.node.ts:14-129](file://server/src/modules/book-generator/nodes/outline.node.ts#L14-L129) - [sections.node.ts:19-235](file://server/src/modules/book-generator/nodes/sections.node.ts#L19-L235) - [content.node.ts:102-332](file://server/src/modules/book-generator/nodes/content.node.ts#L102-L332) ## 性能考虑 - 并发控制 - 默认并发数 8,可根据 LLM 限流与硬件资源调整。 - 使用 AsyncPool 保证吞吐最大化同时避免 API 限流。 - 字数与截断 - 章节预算×3 异常即截断,避免超大输出;全书字数超限直接中断,保护资源。 - I/O 与网络 - LLM 调用与数据库更新为瓶颈,建议在边缘或本地部署 LLM API,减少网络延迟。 - 阶段推进与回退 - 严格前进/回退策略减少状态竞争,降低重试成本。 ## 故障排查指南 - 常见错误 - 额度不足:检查订阅配额与累计字数,确认中断标记与错误信息。 - 全书字数超限:核对全局绝对上限与当前累计字数,必要时缩短内容或调整规模。 - LLM 工具调用失败:自动降级为消息调用;若仍失败,检查提示词与上下文。 - 音频生成失败:检查音频服务配置与回调更新逻辑。 - 调试建议 - 打印每轮进度与累计字数,定位中断点。 - 使用最小化输入复现问题,逐步扩大范围。 - 校验父章节/节映射是否正确,避免长篇路径消息缺失。 - 检查阶段推进日志,确认状态是否按预期前进。 章节来源 - [content.node.ts:182-195](file://server/src/modules/book-generator/nodes/content.node.ts#L182-L195) - [content.node.ts:266-281](file://server/src/modules/book-generator/nodes/content.node.ts#L266-L281) - [stage-manager.ts:100-198](file://server/src/modules/book-generator/stage-manager.ts#L100-L198) - [book-generator.store.ts:758-800](file://server/src/modules/book-generator/book-generator.store.ts#L758-L800) ## 结论 内容节点通过“串行/并行双通道”实现高效、稳健的内容生成,结合三层安全防护、严格的阶段管理与统一的存储接口,确保在长篇与短文场景下均能产出高质量内容。配合提示词模板与内容清洗工具,进一步提升生成稳定性与可维护性。 ## 附录 ### 输入输出规范 - 输入 - GraphState:bookId、topic、bookScale、genLevel、description、bookPlan(可选)。 - 数据库:书籍、章节树、大纲。 - 输出 - 进度 progress(0-100,只增不减) - 当前处理章节 currentChapter - 错误信息 error(包含失败章节与中断原因) 章节来源 - [graph.ts:23-82](file://server/src/modules/book-generator/graph.ts#L23-L82) - [content.node.ts:102-332](file://server/src/modules/book-generator/nodes/content.node.ts#L102-L332) ### 配置选项 - 并发数:默认 8,可通过构造函数调整。 - 字数上限:基于规模值的 ±20% 上限与全局绝对上限。 - 截断策略:段落优先,句子回退。 - 阶段推进:严格前进,回退需显式调用回退函数。 章节来源 - [content.node.ts:337-337](file://server/src/modules/book-generator/nodes/content.node.ts#L337-L337) - [book-type-config.ts:9-133](file://server/src/modules/book-generator/book-type-config.ts#L9-L133) - [content-cleaner.ts:87-145](file://server/src/modules/book-generator/utils/content-cleaner.ts#L87-L145) - [stage-manager.ts:158-198](file://server/src/modules/book-generator/stage-manager.ts#L158-L198) ### 实际使用案例 - 串行策略:适合稳定可控、资源有限的环境,调用量较大但易于调试。 - 并行策略:适合大规模书籍生成,显著缩短总耗时,需关注依赖关系与并发控制。 章节来源 - [sequential.strategy.ts:21-59](file://server/src/modules/book-generator/strategies/sequential.strategy.ts#L21-L59) - [per-chapter.strategy.ts:21-55](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts#L21-L55) ### 扩展开发指导 - 新增提示词:在 templates.ts 中新增系统提示,确保格式约束与质量要求明确。 - 新增清洗规则:在 content-cleaner.ts 中扩展清洗模式,保持健壮性。 - 新增阶段:在 stage-manager.ts 中扩展阶段枚举与转移矩阵,确保资源清理逻辑完备。 - 新增策略:参考现有策略实现,接入工作流编排与状态推进。 章节来源 - [templates.ts:154-169](file://server/src/modules/book-generator/prompts/templates.ts#L154-L169) - [content-cleaner.ts:12-78](file://server/src/modules/book-generator/utils/content-cleaner.ts#L12-L78) - [stage-manager.ts:12-36](file://server/src/modules/book-generator/stage-manager.ts#L12-L36) - [sequential.strategy.ts:21-59](file://server/src/modules/book-generator/strategies/sequential.strategy.ts#L21-L59) - [per-chapter.strategy.ts:21-55](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts#L21-L55)