_data_flow_validation.md 7.6 KB

数据流验证:webnovel-plan → context-agent → webnovel-write

1. 章纲字段映射

webnovel-plan 输出(章纲格式)

### 第 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 读取)

验证方式

# 第 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 中补充:

**钩子字段说明**:
- 章纲的"钩子"字段是规划本章应设置的章末钩子
- 不是上章留下的钩子(那个由 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 部分补充:

- 钩子: {类型} - {30字以内}
  - 说明:本章应设置的章末钩子(规划用)
  - 例:悬念钩 - 神秘人身份即将揭晓
  - 下章 context-agent 会读取这个钩子,生成"接住上章"指导

建议 2:在 context-agent 中补充数据来源说明

在"关键数据来源"部分补充:

- 章纲的"钩子"字段:本章应设置的章末钩子(规划)
- chapter_meta[N].hook:本章实际设置的钩子(执行结果)
- context-agent 读取 chapter_meta[N-1].hook 作为"上章钩子"

建议 3:在 webnovel-write 中补充验证逻辑

在 Step 3 审查阶段补充:

**钩子一致性检查**:
- 章纲规划的钩子类型 vs 实际写作的钩子类型
- 如果不一致,reader-pull-checker 应标记为 medium 问题
- 允许合理偏离(如更强的钩子类型),但需记录原因

7. 最终结论

数据流完整:webnovel-plan → context-agent → webnovel-write 的数据流完整,所有必需字段都能正确传递。

语义明确:章纲的"钩子"字段含义明确(本章应设置的章末钩子),不会与 chapter_meta.hook 混淆。

推断机制:缺失数据有完善的推断机制,无需修改章纲格式。

⚠️ 需要补充文档:在 webnovel-plan 和 context-agent 中补充钩子字段的说明,避免理解偏差。