# 数据流验证:webnovel-plan → context-agent → webnovel-write ## 1. 章纲字段映射 ### webnovel-plan 输出(章纲格式) ```markdown ### 第 N 章:{标题} - 目标: {20字以内} - 爽点: {类型} - {30字以内} - Strand: {Quest|Fire|Constellation} - 反派层级: {无/小/中/大} - 视角/主角: {主角A/主角B/女主/群像} - 关键实体: {新增或重要出场} - 钩子: {类型} - {30字以内} ← 本章应设置的章末钩子 ``` ### context-agent 输入需求 ``` 1. 本章核心任务 ← 章纲"目标"字段 2. 接住上章 ← 上章"钩子"字段(从 chapter_meta 读取) 3. 出场角色 ← 章纲"关键实体"字段 4. 场景与力量约束 ← 从设定集推断 5. 风格指导 ← 章纲"Strand"字段 6. 连续性与伏笔 ← 从 index.db 读取 7. 追读力策略 ← 章纲"钩子"字段(本章应设置的) ``` ### context-agent 输出(创作任务书) ``` 1. 本章核心任务(冲突一句话、必须完成、绝对不能、反派层级) 2. 接住上章(上章钩子、读者期待、开头必须) 3. 出场角色(状态、动机、情绪底色、说话风格、红线) 4. 场景与力量约束(地点、可用能力、禁用能力) 5. 风格指导(本章类型、参考样本、最近模式、本章建议) 6. 连续性与伏笔(时间/位置/情绪连贯;必须处理/可选伏笔) 7. 追读力策略(章末钩子类型+强度、微兑现建议、差异化提示) ``` --- ## 2. 数据流验证 ### ✅ 完全对接的字段 | 章纲字段 | context-agent 使用 | webnovel-write 使用 | |---------|-------------------|-------------------| | 反派层级 | 写入"本章核心任务" | 写作时体现反派出场/冲突 | | Strand | 写入"风格指导" | 决定章节类型(Quest/Fire/Constellation)| | 爽点 | 写入"追读力策略"的微兑现建议 | 写作时设计爽点场景 | | 关键实体 | 写入"出场角色" | 写作时安排角色登场 | | 目标 | 写入"本章核心任务" | 写作时完成目标 | ### ✅ 跨章传递的字段 | 章纲字段 | 本章使用 | 下章使用 | |---------|---------|---------| | 钩子 | 写作时设置章末钩子 | context-agent 读取为"上章钩子" | **数据流**: ``` 第 N 章章纲.钩子 → 写作时实现 → 写入 chapter_meta[N].hook → 第 N+1 章 context-agent 读取 → 写入"接住上章"板块 → 第 N+1 章写作时兑现 ``` ### ⚠️ 需要明确的字段含义 **章纲的"钩子"字段**: - ✅ **正确理解**:本章应设置的章末钩子(规划用) - ❌ **错误理解**:上章留下的钩子(这个应该从 chapter_meta 读取) **验证方式**: ```bash # 第 100 章章纲 钩子: 悬念钩 - 神秘人身份即将揭晓 # 第 100 章写作后,chapter_meta[100].hook 应该是: { "type": "悬念钩", "content": "神秘人身份即将揭晓", "strength": "strong" } # 第 101 章 context-agent 读取 chapter_meta[100].hook # 输出到"接住上章"板块: 上章钩子: 悬念钩 - 神秘人身份即将揭晓 读者期待: 本章必须揭示神秘人身份 开头必须: 安排神秘人出场或身份揭示场景 ``` --- ## 3. 缺失的数据流 ### ❌ 章纲未提供,但 context-agent 需要的 | 数据 | context-agent 需求 | 当前解决方案 | |------|-------------------|-------------| | 上章钩子如何兑现 | "接住上章"板块需要明确兑现方式 | 从 chapter_meta 读取 + 推断 ✅ | | 角色动机 | "出场角色"板块需要动机 | 从大纲+角色状态推断 ✅ | | 场景地点 | "场景与力量约束"板块需要地点 | 从设定集+上章推断 ✅ | | 最近模式 | "风格指导"板块需要差异化 | 从 index.db 读取 ✅ | **结论**:所有缺失数据都有推断机制,无需修改章纲格式。 --- ## 4. 验证结论 ### ✅ 数据流完整性 - 章纲 → context-agent:所有必需字段都能获取 - context-agent → webnovel-write:创作任务书包含所有写作需要的信息 - 跨章传递:钩子字段能正确传递到下一章 ### ✅ 字段语义明确 - 章纲的"钩子"字段 = 本章应设置的章末钩子(规划用) - chapter_meta 的 hook 字段 = 本章实际设置的钩子(执行结果) - 下章 context-agent 读取 chapter_meta.hook(不是章纲的钩子字段) ### ✅ 推断机制完善 - 角色动机:从大纲+角色状态推断 - 场景地点:从设定集+上章推断 - 兑现方式:从上章钩子类型推断 ### ⚠️ 需要补充的文档说明 在 webnovel-plan SKILL.md 中补充: ```markdown **钩子字段说明**: - 章纲的"钩子"字段是规划本章应设置的章末钩子 - 不是上章留下的钩子(那个由 context-agent 从 chapter_meta 读取) - 例:钩子: 悬念钩 - 神秘人身份即将揭晓 - 意思是:本章结尾要设置这个悬念钩子 - 下章 context-agent 会读取这个钩子,生成"接住上章"指导 ``` --- ## 5. 测试场景 ### 场景 1:标准流程 ``` 1. webnovel-plan 生成第 100 章章纲 - 钩子: 危机钩 - 敌人大军压境 2. webnovel-write 第 100 章 - context-agent 读取第 99 章的 chapter_meta[99].hook - 生成"接住上章":兑现第 99 章的钩子 - 生成"追读力策略":本章要设置"危机钩 - 敌人大军压境" - 写作时在章末实现这个钩子 - 写入 chapter_meta[100].hook = {type: "危机钩", content: "敌人大军压境"} 3. webnovel-write 第 101 章 - context-agent 读取 chapter_meta[100].hook - 生成"接住上章":本章必须处理"敌人大军压境"危机 ``` ### 场景 2:第 1 章(无上章) ``` 1. webnovel-plan 生成第 1 章章纲 - 钩子: 悬念钩 - 主角身世之谜 2. webnovel-write 第 1 章 - context-agent 检测到无上章,跳过"接住上章"板块 - 生成"追读力策略":本章要设置"悬念钩 - 主角身世之谜" - 写作时在章末实现这个钩子 ``` ### 场景 3:钩子类型不匹配 ``` 1. 章纲规划:钩子: 悬念钩 - 神秘人身份 2. 实际写作:设置了危机钩(偏离规划) 3. reader-pull-checker 检测到偏差 4. 润色阶段修正或记录 Override Contract ``` --- ## 6. 改进建议 ### 建议 1:在 webnovel-plan 中补充钩子字段说明 在 `Chapter format` 部分补充: ```markdown - 钩子: {类型} - {30字以内} - 说明:本章应设置的章末钩子(规划用) - 例:悬念钩 - 神秘人身份即将揭晓 - 下章 context-agent 会读取这个钩子,生成"接住上章"指导 ``` ### 建议 2:在 context-agent 中补充数据来源说明 在"关键数据来源"部分补充: ```markdown - 章纲的"钩子"字段:本章应设置的章末钩子(规划) - chapter_meta[N].hook:本章实际设置的钩子(执行结果) - context-agent 读取 chapter_meta[N-1].hook 作为"上章钩子" ``` ### 建议 3:在 webnovel-write 中补充验证逻辑 在 Step 3 审查阶段补充: ```markdown **钩子一致性检查**: - 章纲规划的钩子类型 vs 实际写作的钩子类型 - 如果不一致,reader-pull-checker 应标记为 medium 问题 - 允许合理偏离(如更强的钩子类型),但需记录原因 ``` --- ## 7. 最终结论 ✅ **数据流完整**:webnovel-plan → context-agent → webnovel-write 的数据流完整,所有必需字段都能正确传递。 ✅ **语义明确**:章纲的"钩子"字段含义明确(本章应设置的章末钩子),不会与 chapter_meta.hook 混淆。 ✅ **推断机制**:缺失数据有完善的推断机制,无需修改章纲格式。 ⚠️ **需要补充文档**:在 webnovel-plan 和 context-agent 中补充钩子字段的说明,避免理解偏差。