# 小说素材拆解方法论

---

## 拆解流程 5 阶段

### 阶段 1：章节解析

- 识别章节分隔符（第X章、Chapter X、数字编号等）
- 提取章节标题，记录每章字数

### 阶段 2：原子提取（并行 Agent 处理每章）

并行/降级策略见 SKILL.md「Stage 2 并行 Agent 策略」。

Agent 输出格式严格对齐本阶段 A/B/C 三部分的合并输出，详见 output-templates.md 的 Stage 2 模板。

#### A. 章节摘要

- 章节概要（100-300 字，按时序连贯讲清事件、原因、结果；写法与自检见 output-templates.md「Stage 2 章节摘要+情节点」）
- 关键事件（3-5 个，按时间顺序）
- 出场人物、主题标签、章节基调
- 剧情推进度（大转折/日常过渡/铺垫伏笔）

#### B. 情节点提取（每章 10-40 个，按字数动态调节）

密度公式：字数÷200（下限）到 字数÷150（上限），即 150-200 字/个情节点。当公式计算超出 [10, 40] 范围时，以硬约束为准。

| 字数 | 目标范围 | 说明 |
|------|---------|------|
| ≤1000 | 10 个 | 短章按硬下限拆足关键步骤（公式建议 5-7，硬下限 10） |
| 3000 | 15-20 个 | 标准密度 |
| 5000 | 25-34 个 | 中长章 |
| 8000+ | ≤40 个 | 长章上限 |

写入章节摘要 .md 的情节点子章节（不单独输出 .json）。每个情节点：

| 字段 | 说明 |
|------|------|
| 序号 | 严格时间顺序 |
| 标题 | ≤15 字短标签，与描述不写成同一句 |
| 类型 | 转折点/信息揭示/冲突/解决/铺垫/行动/对话/状态变化 |
| 描述 | 客观白描：谁做了什么、结果如何，原文给出的起因一并写入，埋伏笔的写出伏笔线索（禁止叙事框架词、禁止推测动机） |
| 原文引用 | 精选，不逐点铺满：只给关键转折 / 关键台词 / 写法样本保留，每章至多 8 条，<=400 字连续切片；过长或分散时改用 `原文定位：{5-15字原句片段}` |
| 涉及人物 | 全名，不用代词 |
| 地点 | 地理位置信息 |
| 关键物品 | 与剧情相关的物品 |
| 时间标记 | 相对时间（次日、半月后、同时） |

#### C. 关键信息与扩写技法提取

每章必须额外输出 `关键信息与扩写技法` 表，作为后续 `剧情/节奏.md` 和 `剧情/情绪模块.md` 的基础数据。它避免主观点评，负责把“本章必须传递的剧情信息”与“作者如何把它扩写成可读场景”拆开。

| 字段 | 提取方式 |
|------|----------|
| 关键信息/剧情走向 | 从关键事件与情节点中归纳本章必须让读者知道、误判、期待或确认的信息 |
| 原文如何扩写 | 记录作者用了哪些事件、对话、反应层、细节、误导、回扣把信息扩成场景 |
| 扩写技法 | 从铺垫后置/反应层放大/信息差/对比锚点/延迟揭示/身体反应/小目标嵌套/其他中选择或补充 |
| 对读者情绪的作用 | 标注该扩写制造的好奇、期待、压抑、爽、心疼、紧张、甜、热血等效果 |
| 可复用提醒 | 只抽象情绪逻辑和功能位，明确禁止照搬具体桥段、台词、专名、独特设定 |

质量要求：每章至少 1 条；标准章节通常 2-5 条。若本章只是过渡，也要说明它维持了什么期待或冷却了什么情绪，而不是写“无”。

#### D. 角色提取

每个角色提取：外在表现（身份/言行/外貌）、本章功能、别名。
只记录新出场角色或已有角色的新发展。

**角色重要性分级**（按本章戏份）：

| 等级 | 标准 |
|------|------|
| **major** | 本章核心：台词 ≥3 句 OR 推动本章主线 OR 有重要决策 |
| **supporting** | 本章配角：台词 1-2 句 OR 参与互动但非核心 |
| **minor** | 本章次要：仅被提及 OR 无台词但有名字 |

### 阶段 3：聚合分析（跨章节）

> **语料读取**：本阶段及阶段 4a/4c、散落情节兜底里的「全部章节摘要 / 全部情节点」统一从 `_章节摘要汇总.md`（Stage 2 收尾按章号无损拼接的全书摘要，见 SKILL.md「Stage 2 收尾：合并章节摘要」）**一次性读取、在上下文中复用**，不逐文件 glob 重扫——同一份语料的 4-5 次冷读降为 1 次。汇总文件缺失或语料超上下文时，回退原「扫描全部章节摘要」逐文件方式 / 分块策略，行为不变。

#### 0. 故事框架识别（聚合前置）

在剧情聚合之前，先识别全书的故事框架。框架决定聚合策略：

| 框架类型 | 特征 | 聚合策略 |
|----------|------|----------|
| 升级流 | 等级体系清晰，按境界分段 | 按等级阶段划分剧情单元 |
| 复仇线 | 核心矛盾明确，目标驱动 | 按复仇对象/阶段划分 |
| 日常/单元 | 每卷独立故事，弱连续性 | 按卷/单元划分 |
| 多线交织 | 多视角/多时间线 | 按线索划分，交叉点单独标记 |
| 蜕变成长 | 主角内在变化为主线 | 按成长阶段划分 |

识别方法：扫描概要.md（Stage 0 thin first-pass 足够，无需等 Stage 5 全书概要）+ 前3章摘要 + 后3章摘要，判断核心驱动模式。
输出写入 `剧情/故事线.md` 的框架识别部分。

**预期剧情数量引导**（强制参考，非建议）：

| 总章数 | 预期独立剧情数 | 依据 |
|--------|--------------|------|
| <30 章 | 3-6 个 | 短篇结构紧凑 |
| 30-100 章 | 5-15 个 | 每条剧情 5-20 章 |
| 100-300 章 | 10-25 个 | 含主线+支线+补充 |
| >300 章 | 15-40 个 | 多卷多线结构 |

偏差超过 ±30% 需重新检查粒度。首要原则：保证核心戏剧目标叙事弧的完整性。

**粒度层级混乱检测**（框架识别后自检）：

| 混乱模式 | 检测方法 | 修正方式 |
|---------|---------|---------|
| 包含关系 | 剧情A 章节范围完全包含剧情B | 保留粒度适中的B，拆分过粗的A |
| 重叠率 >50% | 两剧情共享章节超过一半 | 检查是否混淆「剧情」和「剧情阶段」 |
| 剧情仅为另一剧情的开端/结尾 | 剧情A 只占剧情B 的首/尾几章 | 合并为同一剧情，B 的阶段 |
| 剧情无独立目标 | 目标描述是另一剧情的子目标 | 降级为该剧情的阶段 |

**框架识别后自检**（聚合前必须通过）：
1. 覆盖率检查：所有剧情覆盖的章节数（去重）是否达到 85% 以上
2. 粒度检查：是否存在过细（单一事件）或过粗（宏观主题）的剧情，执行粒度层级混乱检测
3. 独立性检查：每条剧情是否满足 4 项独立性标准
4. 数量检查：剧情总数是否在预期范围内

#### A. 剧情聚合（两步法）

将剧情聚合拆为两步：先从摘要识别剧情大纲，再按大纲分配情节点。

**第一步：剧情大纲识别（从章节摘要）**

扫描全部章节摘要，识别每条独立剧情的大纲。每条大纲包含：

| 字段 | 说明 |
|------|------|
| 标题 | 简洁有力，15字以内 |
| 概要 | 150-300字，按时序连贯叙述因果，不靠同一连接词反复串联；含核心角色、关键地点、事件发展 |
| 核心目标 | 具体、可衡量的戏剧目标 |
| 核心冲突 | 具体冲突对象+冲突事件 |
| 类型 | 主线/爱情/成长/复仇/寻宝/悬疑/战斗/权谋/修炼/危机/谜团/日常/其他 |
| 主题 | 不超过3个 |
| 章节范围 | 起止章节号 |

识别完成后执行框架识别自检（4项检查）。

**第二步：情节点分配（按剧情大纲）**

对每条剧情大纲，扫描全部情节点，将直接服务该目标的节点分配进来。

**分配执行逻辑**（4 步）：
1. **主题溯源与节点收集**：针对每条剧情大纲的核心目标，扫描全部情节点，将直接服务、推动或阻碍该目标的事件节点挑出
2. **边界识别**：识别剧情的起点（触发事件/前置条件）和终点（完成/失败标志），以及连接两者的关键过渡节点
3. **索引构建与验证**：将筛选出的情节点按时间顺序排列，验证覆盖完整性
4. **画像数据补充**：基于最终节点集合，补充完善概要、结构分布等字段

**情节点筛选标准**（判定归属时使用）：
- **主题相关**：情节点内容与剧情概要、主题一致
- **角色匹配**：情节点涉及的角色与剧情核心角色相关
- **因果关系**：情节点与剧情发展有因果或逻辑延续
- **目标导向**：情节点推动或阻碍剧情目标实现
- **章节范围**：优先选择剧情章节范围内的情节点

**剧情粒度标准（核心要求）**：

| 粒度 | 示例 | 问题 |
|------|------|------|
| 过细（单一事件） | "获得神器"（1-2章）、"首次修炼"（第3章） | 这些是事件，不是独立剧情 |
| 过粗（宏观主题） | "主角的成长之路"（1-100章） | 这是主题，不是具体剧情 |
| **合适** | "家族觉醒与传承认知"（1-6章）、"神器获得与导师相遇"（7-13章） | 有独立目标、冲突、角色群和完整叙事弧 |

**剧情独立性判断标准**（必须同时满足）：
1. **独立的核心目标**：有明确的、可衡量的戏剧目标（不是宏观主题或抽象概念）
2. **独立的主要冲突**：有具体的对抗力量和冲突事件（不是某个大冲突的子阶段）
3. **相对独立的角色群**：有该剧情特有的核心角色（可以与其他剧情共享部分角色）
4. **独立的叙事节奏**：有自己的紧张-缓和节奏

**三层覆盖策略**：
1. **主线剧情**（优先级最高）：推动整体故事发展，通常占 60-70% 章节
2. **支线剧情**：感情线、成长线、战斗线等，通常占 20-30% 章节
3. **补充剧情**：过渡剧情、日常剧情，确保覆盖率 ≥85%

**剧情类型**：
- 主线（推动整体故事发展的核心剧情）
- 爱情（感情关系发展）
- 成长（角色能力/心智/地位提升）
- 复仇（复仇相关）
- 寻宝（争夺物品或目标）
- 悬疑（推理、真相揭露）
- 战斗（战争、比武、对决）
- 权谋（政治斗争、权力争夺）
- 修炼（修炼、突破、传承）
- 危机（危机应对、解救、逃脱）
- 谜团（世界观未解之谜、身世秘密、隐藏真相）
- 日常（日常生活、过渡性内容）
- 其他（无法归入以上类型）

每条剧情提取：标题、概要（150-300字，按时序连贯叙述因果）、核心目标、核心冲突、类型、章节范围。
标记结构分布：铺垫期/发展期/高潮期/收尾期 各包含哪些章节。

**核心目标类型参考**：
- 获得型："赢得大比冠军""获得关键道具/传承""攻占要塞"
- 解决型："解除家族危机""偿还巨额债务""摆脱追杀"
- 创造型："创立新宗门""研发新招式""开创一个流派"
- 探索型："调查父母失踪真相""探索上古遗迹""揭露阴谋"

#### B. 故事线提取

将多条剧情聚合为「故事线」：标题、描述（300-600字发展阶段划分）、主要人物、主题关键词、包含的剧情列表（至少1个剧情）。

**故事线类型**：主线/感情线/成长线/复仇线/夺宝线/冲突线/谜团线/其他

**故事线描述要求**：
- 划分 3-8 个发展阶段（periodization），寻找关键转折点或里程碑事件作为阶段边界
- 每个阶段含：核心冲突、关键角色及作用、能力/资源/地位演进、主题母题
- 独立追踪伏笔与回收关系链（前后呼应的伏笔-回收对）
- 标注与其他故事线的交织关系（并行/交织/依赖）
- 包含剧情按时序排列，每条故事线至少包含1个剧情

#### C. 节奏索引与情绪模块生成

Stage 3 聚合后必须生成两个权威产物，供 Stage 5 报告摘要和 `story-long-write` 直接读取：

1. **`剧情/节奏.md`（节奏权威）**
   - 输入：全部章节摘要的情节点、`关键信息与扩写技法` 表、剧情大纲、故事线。
   - 输出：关键信息推进表、爽点循环索引、情绪触动点索引、爆发节奏总结。
   - 生成法：按章节顺序扫描关键事件与关键信息，标出“信息进入读者视野 → 被延迟/误导/验证 → 情绪爆发 → 余波/新钩子”的链条。
   - 校验：每条爽点/触动点必须能回指章节或情节点；每个长间隔（连续 3 章以上无触动点）必须说明作者如何用小钩子或信息推进维持期待。

2. **`剧情/情绪模块.md`（模块权威）**
   - 输入：故事框架识别、剧情单元、`剧情/节奏.md`、读者需求判断、桥段标签。
   - 输出：读者需求 / 情绪引擎、故事框架与套路运行图、可复现模块卡、重组与复现指南。
   - 生成法：先抽象“读者想看什么”，再把具体剧情抽成情绪链和功能位；模块卡必须包含可替换项和不可照搬项。
   - 校验：best-effort 为模块标注来源（关联 `剧情/节奏.md` 的 RH/TR 条目或章节情节点），无把握时留空、不硬凑、不删模块；禁止把原文专名、独特事件顺序、标志性台词写成可复用模板。

**权威关系**：`剧情/节奏.md` 管节奏/触动点，`剧情/情绪模块.md` 管读者需求/模块复现。`拆文报告.md` 与 `剧情/故事线.md` 只能摘要或引用这两个文件，不能成为并列权威。

#### D. 小说概要生成（在 Stage 5 落盘，覆盖 Stage 0 thin first-pass）

整体故事框架识别 + 500-1000字高密度全书概要（涵盖主要剧情线阶段性发展、核心人物作用、关键转折点、因果关系）。

> **落盘时机**：聚合阶段（Material 阶段 3 ≈ pipeline Stage 3）产出概要文本，但**写入 `概要.md` 的动作放在 pipeline Stage 5 汇总报告**——届时 Stage 3 / 4 全部完成、信息最完整。Stage 5 覆盖 Stage 0 的 thin first-pass 段，章节索引和卷段表保留。

### 阶段 4：世界观与设定提取

Stage 2 的角色轻量提及数据在此阶段升级为完整档案。

#### 角色两阶段模型

**阶段 A：轻量提及（Stage 2 输出）**
- 每个 agent 返回出场人物表（姓名/重要性/别名/本章表现）
- 不做跨章分析，只记录本章可见信息

**阶段 B：完整档案（Stage 4 构建）**
- 合并所有章节的角色提及数据
- 跨章节别名解析
- 构建完整角色档案

#### 一人一实体原则

- **绝对禁止**将不同人物的信息合并到同一个实体中
- 每个角色实体必须对应唯一的一个人物
- 如果无法确定两个称呼是否指向同一人物，必须分开创建实体

#### 别名解析规则

**别名类型**：

| 类型 | 定义 | 可合并 | 示例 |
|------|------|--------|------|
| proper_name | 专名/全名/常用名 | 是 | "希尔曼""林雷·巴鲁克" |
| nickname | 绰号/外号，须有同指证据 | 是（置信度≥0.85） | "龙血战士林雷" |
| descriptor | 描述性称谓 | 否 | "红发壮汉""随从""队长" |
| title | 头衔/职务 | 否 | "护卫队长""家主""族长" |

**合并约束**：
- 仅 proper_name 和 nickname（置信度 ≥0.85）可用于合并
- descriptor 和 title **永不**触发实体合并
- nickname 须提供同指证据：同位说明、括号别名、上下文指代、明确改名

**Archetype 量化判断**：

| 类型 | 标准 |
|------|------|
| **主角** | 出现章节 ≥50% 总章节 + 推动主线 + 有完整成长轨迹 |
| **反派** | 与主角对立 + 推动核心冲突 + 有明确动机 |
| **核心配角** | 出现章节 ≥20% OR 推动重要支线 OR 有独立人格和成长 |
| **功能角色** | 出现章节 <20% + 作用有限（提供信息/道具/一次性互动） |

**特殊**：前期 minor 后期 supporting → 判为 supporting。重要导师/伙伴即使出现少也可判为 supporting。

**角色档案结构**（200-500字）：
1. 身份背景（1-2句）
2. 核心经历（3-5句，按时序）
3. 性格特质（1-2句，从行为归纳）
4. 能力特长（1-2句）
5. 人际关系（1-2句）
6. 成长轨迹（如有，1句）

#### 金手指合并规则

- 相互关联、共同作用的元素**合并为一个**（如"戒指+导师灵魂"是一个整体）
- 同一事物的不同描述角度**不拆分**
- 只有完全独立、互不依赖的能力来源才拆分为多个
- 长篇特点：金手指可能复杂多样，需详尽描述演化过程和多重能力
- 无金手指时注明

**金手指类型**：system（系统）/ space（空间）/ rebirth（重生）/ transmigration（穿越）/ special_physique（特殊体质）/ artifact（神器）/ bloodline（血脉）/ other（其他）

#### 世界观（按主题拆分到多个文件）

字段与落盘位置：

| 字段 | 说明 | 落盘文件 |
|------|------|----------|
| 类型 | 奇幻/现实/平行世界 | 各文件 frontmatter 或开头注明 |
| 力量体系 | 名称、等级、晋升方式（文本描述） | `设定/世界观/力量体系.md`（>=200字独立，否则并入 背景设定） |
| 地理 | 分布、主要区域、关键地点（文本描述） | `设定/世界观/地理.md`（同上，>=200字独立） |
| 势力 | 门派/组织/家族/国家 | **每个势力一个文件** `设定/势力/{势力名}.md`（>=200字独立；不足合并到 `设定/世界观/背景设定.md`） |
| 核心规则 | 世界运转的基本规则 | `设定/世界观/背景设定.md` |
| 特殊设定 | 区别于现实的独特设定 | `设定/世界观/背景设定.md`（与核心规则同文件） |
| 金手指 | 见上方「金手指合并规则」 | `设定/世界观/金手指.md`（统一在 `设定/世界观/` 子目录下，不放扁平 `设定/金手指.md`） |

> 模板与示例见 [output-templates.md](output-templates.md) 「Stage 4 设定+关系」节。下游导入只原样同步当前主题文件，不再现场拆分扁平文件。

### 阶段 5：人物关系提取

每对关系：

| 字段 | 说明 |
|------|------|
| 角色A | 全名 |
| 角色B | 全名 |
| 关系类型 | 家人/师徒/朋友/敌人/恋人/同事/上下级/商业/其他 |
| 情感倾向 | 正面/负面/中性/复杂 |
| 描述 | 关系本质+建立过程+关键互动（50-200字） |

#### 关系提取策略

**数据源**：从已提取的情节点描述中提取关系（不从原文提取），更高效、更聚焦。

**批量提取**：每 5 章批量提取一次，只记录新关系或关系变化。

**关系演变追踪**：当同一对角色关系发生变化时，记录演变轨迹：
```
第{N}章：{关系状态A} → 第{M}章：{关系状态B}
触发事件：{具体事件}
情感转变：{正面→负面/负面→正面/中立→复杂 等}
```

**最终状态合并**：同一对角色的多阶段关系，保留最新状态作为主记录，历史变化写入演变轨迹。避免同一对出现多条重复关系。

**隐含关系推断**：当角色间没有直接互动但有间接证据时：
- 通过第三方的评价/描述推断（置信度标 0.7）
- 通过共同出现的频率和场合推断（置信度标 0.6）
- 推断关系标记 `[推断]`，与直接证据关系区分

**关系网络密度**：
- 统计主要角色（主角+核心配角）的关系数量
- 关系数 < 3 → 关系网偏薄，检查是否有遗漏
- 关系数 > 10 → 关系网过密，检查是否有误合并

---

## 原子提取六大铁律

1. **绝对时序**：严格按事件发生的时间顺序排列
2. **客观白描**：记录"发生了什么"和结果，原文明说的起因照写，不推测未写出的动机，不用叙事框架词
3. **信息保真**：不遗漏改变语境的关键细节
4. **高度浓缩**：一个情节点一句话概括
5. **复合合并**：为同一戏剧目的服务的连续微动作合并为一个情节点
6. **客观事实**：提取客观事实，不做叙事分析

**客观白描 vs 叙事框架词**：
- 禁止：「通过对话，郑松得知张子豪在韩国训练」
- 正确：「吴志斌告诉郑松，张子豪在韩国训练」
- 禁止：「林风展现了自己的实力」
- 正确：「林风三招击败对手，围观者倒吸一口凉气」
- 禁止：「邵阳感到心碎和愤怒」
- 正确：「邵阳目睹宋丽与人拥抱，表情由刺痛转为冷漠」

---

## 合成阶段事实保真（阶段 3-5：剧情/设定/角色/报告）

阶段 3-5 从章节摘要二次合成，离原文已两跳，最易把「摘要没说的」用合理推断补成「看似坐实的事实」——这是拆文事实错误的最大来源（典型：给「双系魔法师」凭空补第二系、把坐骑等级安到骑手头上、给原文没给的字段编一个数值、把出场区间填成连续跨度含没出场的章）。强模型也照样漂移，因为越远离原文，模型越靠世界知识与"合理性"填空。三条硬约束：

1. **硬事实必须可溯源**：力量等级、数值、距离、属性、势力数量、谁对谁说了什么、角色出场章节——这类硬事实写进设定/角色/报告前，回原文核对（摘要不足就直接读原文）；核到才写。
2. **缺失写「原文未明确」，禁编造填空**：原文没给的字段，写「原文未明确/节选未涉及」，绝不用近义项、别处的范例或惯例补一个看似合理的值。
3. **跨指代不串**：相邻实体的属性不互相挪用——坐骑等级≠骑手等级、A 的台词≠B 的台词、本章统计数字≠相邻章数字。

落盘后做一次**事实可溯源自检**：抽查设定/角色/报告里的硬事实，逐条能否 grep 回原文；命中即过，命中不到的改写为「原文未明确」或删除，不保留无源断言。此自检独立于下方三个比率——比率查归类质量，它查事实真伪。

---

目录结构见 SKILL.md「输出目录结构」。

---

## 质量阈值体系

阶段 3 和阶段 4 完成后自检：

| 指标 | 阈值 | 计算 | 不达标处理 |
|------|------|------|------------|
| 置信度 | >= 0.85 | 有明确归属的情节点 / 剧情单元内情节点总数 | 低于 0.85 标记「待复核」 |
| 覆盖率 | 85%-95% | 已归类情节点 / 总情节点数 | <85% 触发孤立情节二次分类；>95% 复核边界 |
| 关键信息覆盖 | >= 每章1条 | 含 `关键信息与扩写技法` 的章节数 / 摘要章节数 | 缺失章节回到 Stage 2 补提取 |
| 模块来源标注 | best-effort | 情绪模块卡尽量标注 RH/TR 或章节情节点来源 | 无把握的来源留空，不硬凑、不删模块（同桥段标签的 best-effort 处理）|
| 重叠率 | <= 35% | 跨剧情单元共享情节点 / 总情节点数 | >35% 提示边界模糊，建议合并 |

> **小体量节选（< 30 章、单主线连续叙事）的特例**：此类素材按时序连续切分时，覆盖率天然接近 100%、散落情节接近 0，这是线性结构的正常结果，不算过度归并。此时复核重点是「有无把不同剧情强行并进同一条」，而非覆盖率数值本身——不必为压到 95% 以下而人为拆分。

---

## 散落情节兜底

阶段 3 聚合完成后执行（6 步，含覆盖率验证）：

1. **计算孤立比例**：孤立情节点数 / 总情节点数。若比例 < 5%，跳过后续步骤，直接标记为「少量散落，无需处理」
2. **筛选未分配情节点**：从所有章节摘要中收集未归类到任何剧情单元的情节点
3. **三层置信度归入**：按角色重叠、地点重叠、因果关系三条线索计算相关性
   - **强相关**（0.8-1.0）：角色匹配 + 主题相关 → 归入现有剧情单元，标记 `[孤立情节归入]`
   - **中等相关**（0.5-0.8）：角色匹配 或 主题相关 → 归入并标记 `[低置信归入]`，待复核
   - **弱相关**（<0.5）：不建议强行归入，宁可放入未分配
4. **主题聚类**：弱相关的情节点按主题关键词聚类
   - 聚类结果 >= 5 个情节点 → 形成候选剧情单元，标记 `[聚类生成]`
   - 聚类结果 < 5 个 → 不单独建条
5. **散落情节归档**：仍无法归类的写入 `散落情节.md`，按章节排列，标注原因
   - 不丢弃任何情节点，不要强行分配到不相关的剧情
   - 在拆文报告中统计散落情节点数量和占比
6. **覆盖率验证**：
   - 覆盖率 = (总数 - 散落数) / 总数 × 100%
   - 目标：85%-95%
   - < 85% → 回到步骤 3，降低置信度阈值重试
   - > 95% → 检查是否有过度归并，复核边界剧情单元

---

## Claude Code 执行指引

### 分块策略

Stage 2 使用 chapter-extractor agent 并行处理（每章一个 agent，每批 5-8 个），不分块。
其他阶段（0、1、3、4、5）的分块策略如下。

> **先分清两个互不相干的轴**，本节此前把它们混在一个「块」字里，导致 >500 章出现「50-200 章/块」与「6-8K token/块」两套差 30-100 倍的规格：
> - **语义分块**＝*在哪里切*。按叙事弧切，产出「块元数据」用于组织分析结果，块可以很大（一个 914 章的书通常 5-10 个弧）。它不决定一次读多少。
> - **处理批次**＝*一次读多少*。受上下文容量约束，由摘要体积反推章数。下面表格的「块大小」列指的是**处理批次**。

| 规模 | 策略 | 块大小 |
|------|------|--------|
| <50 章 | 按阶段整体处理 | 无需分块 |
| 50-100 章 | 按阶段整体处理 | 无需分块（可选智能分块） |
| 100-500 章 | 按章节分块 | 5-8 章/块 |
| >500 章 | **子代理并行批次**（见下「处理批次」）；语义分块只用于组织输出，不作为读取单位 | 10-20 章/批 |

### 智能分块（>500 章）

对于大型小说，基于章节摘要识别自然分界，而非固定切分：

**分块原则（四大铁律）**：
1. **语义连贯**：每块是一个相对独立的内容单元（大故事阶段或主要事件线）
2. **自然分界**：在内容转折点、场景切换、时间跨越处切分，不在紧密剧情中间切
3. **大小适中**：每个语义块 50-200 章，语义完整性优先于大小均匀（这是叙事弧尺度，**不是**一次读进上下文的量——读取按下面「处理批次」切）
4. **避免割裂**：不在紧密剧情中间切分

**题材特化分块参考**：

| 题材 | 分块依据 | 示例 |
|------|---------|------|
| 修仙/升级 | 境界突破、地图切换 | 炼气期→筑基期→金丹期 |
| 都市 | 事件线、身份转变 | 学生→创业→商业帝国 |
| 历史 | 历史阶段、战役 | 起兵→统一北方→南征 |
| 玄幻 | 世界地图、势力变化 | 东域→中州→上界 |
| 有卷/部/篇 | 优先按原结构 | 按作者划分的卷/部 |

**无明显结构**时按固定章节数均匀切分。**硬约束**：所有章节必须被覆盖，块之间不能重叠（每章只属于一个块）。**语义块数量上限**：最多 10 块（超出时扩大块大小，保持语义完整性）。该上限只约束叙事弧划分，不限制处理批次数量——914 章按 15 章/批约 61 批是正常的。

每块输出元数据：`块标题 | 起止章节 | 核心主题（2-5个） | 关键事件（2-5个） | 主角阶段`。

输出长度限制见 SKILL.md（Stage 2 agent 模式按密度公式输出，Stage 3-5 单阶段 ≤8000 中文字符）。每批完成后更新 _progress.md。

### 处理批次（一次读多少）

Stage 3-5 的语料是 `章节/*_摘要.md`。**实测体积：中文章节摘要约 15KB/章 ≈ 5-7K tokens/章**（据大奉打更人 57 章样本，869,663 字节 / 57 ≈ 15,257 字节）。按这个体积，「把全书摘要一次读进主线程」在 >500 章时必然超上下文——所以大书不是"把块调大"，而是**换成子代理并行 + 降维聚合**。

**A. 子代理并行模式（>500 章默认，Stage 3-5 通用）**

1. **切批**：按章号顺序切成 10-20 章/批（≈5-15 万 tokens/批，落在子代理单次上下文内）。单章摘要明显更长时，按「一批不超过约 15 万 tokens」反推章数。批次边界尽量对齐语义块边界，对不齐时以章号连续为准。
2. **并行分派**：每批 spawn 一个子代理（`general-purpose` 或本阶段对应的专业 agent），把该批摘要文件路径交给它，**由子代理在自己的上下文里读原文**，主线程不读。
3. **降维回传**：子代理只回传该批的中间聚合，**每份 ≤8K tokens**，字段随阶段而定（剧情线候选 / 情节点归属 / 关键信息推进 / 情绪节奏 / 角色表）。禁止回传原始摘要或逐章罗列。
4. **主线程合并**：主线程只消费这些聚合结果做跨批合成。若批数过多、聚合总量仍超上下文，再做一层**两两/分组合并**（把 N 份聚合先并成 √N 份），直到能一次装下。
5. **进度**：每批完成后更新 `_progress.md`，记录批次号、覆盖章节区间、聚合产出路径。中断可按批续跑。

> 覆盖示例：914 章按 15 章/批 ≈ 61 批；主线程全程只处理 61 份 ≤8K tokens 的聚合，不触碰原始语料。

**B. 主线程串行模式（agent 不可用时的降级）**

无法 spawn 子代理时退回主线程顺序处理：**输入 6-8K token/块、章节边界对齐**，逐块读取并滚动累积中间结论（每块处理完只保留结论、丢弃原文）。这是「6-8K token/块」这条规格的**唯一适用场景**——它描述的是主线程单次读取量，不是大书的语义块尺度。串行模式对 >500 章耗时很长，但结论质量与并行模式一致。

**C. 不要做的事**

- 不要为了"塞进上下文"而把 50-200 章的语义块整块读进主线程——那是 25-150 万 tokens，必然失败。
- 不要把 6-8K token 当成大书的切批单位——914 章会切出 4000+ 批，聚合层数爆炸。
- 主线程在并行模式下不读 `章节/*_摘要.md` 原文；一旦开始逐章读，预算模型就失效了。

### 跨块合并（大型小说 >500 章）

分块处理后，相邻块的边界剧情可能被机械切分割裂。Stage 3 聚合时执行跨块合并检查：

**合并判断标准**（必须同时满足）：
1. ✓ 同一核心事件/目标：讲述的是同一个核心事件（不是两个独立事件）
2. ✓ 主要人物相同：涉及的主要人物相同
3. ✓ 剧情发展连续：剧情 B 是剧情 A 的自然延续
4. ✓ 非因果独立事件：不是因果关系的两个独立事件

**应该合并**：
- "竞选县长秘书（准备阶段）" + "竞选县长秘书（投票阶段）" → 同一事件被分块割裂
- "修炼突破（前期）" + "修炼突破（后期）" → 同一突破过程

**不应合并**：
- "在办公室立足" + "竞选县长秘书" → 两个独立目标
- "炼气期修炼" + "筑基期修炼" → 不同阶段的独立剧情
- "东域修炼" + "中州历练" → 不同地图的独立剧情

**保守原则**：当不确定时，倾向于不合并（保持独立）。

**边界检测原则**：只检查相邻块中接近块边界的剧情对，远离边界的剧情不参与跨块合并。

### 跨会话恢复

- 进度通过 _progress.md 追踪
- 新会话读 _progress.md 定位断点
- 从断点所在块的起始章节重新开始（覆盖该块已有输出）
