zenstory-ai/oh-story-claudecodeCheck passed
SKILL DETAIL
story-long-analyze
zenstory-ai/oh-story-claudecode/story-long-analyze
长篇网文拆文。深度拆解爆款长篇小说的黄金三章、人设架构、爽点设计、节奏控制。单一深度拆解管道:跑完黄金三章(Stage 1)后产出快速预览报告并询问是否继续全量拆解,确认后从 Stage 2 续跑逐章摘要、聚合分析、设定关系、汇总报告,全程产物落盘 拆文库/{书名}/。触发方式:/story-long-analyze、/长篇拆文、「帮我拆这本书」「拆这本书」「分析黄金三章」「深度拆解」「完整拆解」「系统拆解」或提供小说文本文件路径——全部进入同一管道。
Installs · 91View source
Installation
npx skills add https://github.com/zenstory-ai/oh-story-claudecode --skill story-long-analyze
Skill files
SKILL.md
Last synced · Aug 30, 2026
references/deconstruction-notes.md›
# 长篇拆文参考
拆书方法论、结构设计、卖点循环、题材实战要点的速查手册。配合 SKILL.md 和 `material-decomposition.md` 使用。
## 管道阶段映射
| 本文件章节 | 适用管道阶段 | 用途 |
|-----------|-------------|------|
| 核心情绪控制 | Stage 1(黄金三章)| 判断开篇情绪是否到位 |
| 题材边界与核心梗 | Stage 0(概要提取)| 识别题材类型和核心梗 |
| 拆书方法论 | Stage 1-2(三章+逐章)| 拆解视角和提取方法 |
| 结构设计与节奏 | Stage 3(聚合分析)| 节奏地图和情绪曲线构建 |
| 卖点循环设计 | Stage 3(聚合分析)| 爽点循环模式识别 |
| 桥段词表 | Stage 3(聚合分析)| 给剧情模块打桥段标签 |
| 经典作品拆解 | Stage 1-2 | 对标拆解参考框架 |
| 拆书实操技巧 | Stage 2(逐章摘要)| 情绪折线图、期待分析 |
| 对标书选择 | Stage 0(概要提取)| 确定拆解对象 |
| 抽象拆书法 | Stage 3(聚合分析)| 三幕式结构归纳 |
| 影视拉片与情绪控制 | Stage 2-3 | 情绪曲线精细化分析 |
| 多线叙事与结构循环 | Stage 3(聚合分析)| 多线交织识别 |
| 题材实战 | Stage 0-1(概要+三章)| 题材特有爽点形态 |
| 人设塑造 | Stage 4(设定+关系)| 角色档案和出场设计 |
| 素材转化 | Stage 0-5(全流程)| 拆文结果转化为写作指导 |
---
## 核心情绪控制
### 自检规则
拆解或审查时标记:文本是否偏离核心梗、是否出现只服务表达欲但不服务读者期待的段落。偏离核心梗时,输出为留存风险而不是主观评价。
### 核心情绪崩溃案例
| 问题 | 教训 |
|------|------|
| 主角独断万古身边人死绝 | 读者代入后"天下无敌啥也得不到",憋屈 |
| 换地图杀光所有配角 | 留存/追读风险显著升高,读者难以接受代入资产清零 |
| 所有人牺牲成工具人 | 高开低走,核心情绪崩坏 |
修正:悲情通过创造挫折体现,非杀死重要角色;换地图可让原有人遇险给主角行动理由。
### 刀人原则
- 刀人是手段非目的,对笔力要求极高
- 必须刀人时,埋伏笔留弥补空间
- 项目没有足够铺垫、补偿机制和后续情绪回收方案时,不要刀重要角色
- 悲情强度必须由目标平台近期样本校准;默认不让悲情覆盖核心爽感或安全感
### 强情绪样本校验
若目标平台近期样本高频出现强情绪文,拆解时记录:触发情绪、释放节奏、噱头位置、留存证据。没有近期样本时,不把强情绪当作硬性趋势,只作为候选假设。
---
## 题材边界与核心梗
### 核心梗 = 读者需求,偏离 = 抛弃读者
| 偏离类型 | 后果 |
|----------|------|
| 核心对比消失(都市高武→普通) | 在读直降 |
| 核心机制不升级(网游困在新手村) | 限制上限 |
| 题材串味(玄幻混诡异/悬疑跑偏到玄幻) | 两边读者都不讨好 |
| 后期三观偏离 | 受众筛选过严重 |
### 核心梗延伸四维度
以"逆袭系统(早到流)"为例:1.任务数量 2.奖励难度 3.等级阶层+隐藏触发 4.奖励触发新戏剧性任务。仅用前两点戏剧性快速消耗殆尽,四点结合才持续。
### 核心梗密度参考
《美食赋我词条》11章内核心梗应用5次,密度极高。
---
## 拆书方法论
### 六原则
有目的 / 有方法 / 拆出理论 / 摒弃好恶 / 扬长避短 / 拆自己喜欢的书
### 流程
概括一句话 → 识别结构单元(起承转合,递进扩大) → 抽离框架+情绪链条 → 借鉴框架非抄内容
### 条件框架提取法
剧情提炼为条件(如:展露部分天赋+两方势力争夺+信息差制造慧眼识珠),替换人物/背景/金手指后复用,保留情绪相似。
### 抽象五步法
概括 → 拆为信息团(情绪转折点) → 按上行/下行/转折归类 → 提取通用条件框架 → 用素材填充
### 感情线拆法:双标法
同一件事(送可乐),男配送女主拒绝,男主送女主接受。三要素:①差不多同一件事前后连续 ②女主态度截然不同 ③男主不清楚。
---
## 结构设计与节奏
### 情绪拉扯工具
| 技巧 | 做法 |
|------|------|
| 熟悉情绪套路 | 选套路→搞人设→填剧情 |
| 期待断掉续上 | 引入新角色/新事件重新拉起 |
| 装逼打脸底层 | 鄙视链+人际关系舞台+正向反向传播 |
| 复合型配角 | 主角"白手套":替主角发声+绝对支持+搞笑 |
### 望远镜拉期待法
倒计时结构:不断描写"发现→观测→打捞→失败→坠落"——读者都知道子弹会射向主角→巨大期待。
### 分卷节奏(天才俱乐部案例)
每二三十万字一卷,有明确核心与目标;卷内多线头纠缠打破线性"起承转合";"起"必须抛钩子;每卷结尾为下卷埋线。
### 时代适应
从强冲突开场→人情冷暖+基础需求展开;文风更细腻;画面剪辑感极强;套路熟悉但两三章速战速决。
---
## 卖点循环设计
### 完美循环(天灾信使)
开小号装逼打脸赚好处→拿好处做主线任务→获得奖励→给小号提升武力→新地图装逼打脸→循环。关键:每次内容不同;情感进展拉住期待感;最终暴露小号身份=装出去的逼兜回主角。
### 信息密集型循环(苟在初圣宗)
按"轮回"拆分,每轮回=完整故事。力量体系不崩即可无限拉长。
### 直播流循环
有目标(确定性预期)→ 有对抗(短平快胜负)→ 有阶段性(任务升级)→ 整活正反馈
---
## 经典作品拆解
| 作品/作者 | 核心拆解点 |
|-----------|-----------|
| 遮天(辰东) | 九龙拉棺倒计时+同学打脸+前女友回归+进荒古禁地(不断切换期待类型) |
| 夜无疆(辰东) | 大病初愈+无粮+邻居救济→画面剪辑感→熟悉套路两三章速战速决 |
| 我吃西红柿 | "没有特点"=普适性强;敢写升级突飞猛进+敌人摧枯拉朽;前提三观正 |
| 赘婿(香蕉) | 写诗装逼教科书:铺设人际→构架舞台→诗作逐层传播→多轮震惊→态度闭环 |
| 炮火弧线 | 煽情+身临其境;军文核心=国与国、信仰与信仰 |
---
## 拆书实操技巧
### 从期待出发
- 先知先觉类金手指使用场景:介绍世界观/提升实力/装逼前/对比高手前/介绍新人物前
- 过渡情节写收获/暧昧/小情节,无冲突可跳到冲突前一秒
### 情绪折线图
横轴=章节,纵轴=情绪正负。控制节奏=控制"富有戏剧性的信息团"出现速度。信息团=能造成情绪转折的情节。
### 逐段功能标注法
对照原文逐段标记叙事功能(铺垫/转折/高潮/过渡),追踪情绪走向、困境设计、伏笔衔接,输出可复用框架;禁止复制剧情内容或表达。
---
## 对标书选择
| 错误 | 原因 |
|------|------|
| 只拆一本对标书 | 至少5本同网站同题材同类型参考 |
| 只拆唯一头部爆款 | 头部作品可能依赖不可复制的作者品牌或历史流量,优先选择同平台同题材、数据稳定、非唯一头部的可复制样本 |
| 跨网站对标 | 不同网站读者群体不同,写法差异大 |
流程:广泛收集同题材样本→定方向→定参考书5-10本→定对标书
---
## 抽象拆书法:三幕式
| 幕 | 核心 |
|----|------|
| 第一幕-建立 | 暗示矛盾→主角+金手指→惊人意外→情绪上下拉扯→主线确立 |
| 第二幕-对抗 | 新世界→更强对手→中点反转→情绪拉扯(下行后必有上行) |
| 第三幕-决战 | 线索收束→矛盾极限→关键选择(体现人物弧光)→决战+主题升华 |
---
## 影视拉片与情绪控制
- 人物态度转变=最能体现情绪
- 打斗间穿插反应但控制字数,否则截断节奏
- 用情绪展示境况(感叹/震惊/窃喜)表现优劣
- 每个动作段落要带出情绪变化
---
## 多线叙事与结构循环
### 多线拆解维度
事件节点(新人物/冲突爆发)/ 情绪链条节点(一句话概括)/ 事业线 / 感情线
感情线模板(单角色):相遇态度→关键转折→态度递进(厌恶→好奇→心动→沦陷)→推倒引爆点
### 循环层次感
同一框架循环时每次内容必须不同(地图/角色/冲突/情感细节更新)。力量体系不崩可无限拉长。
---
## 题材实战
| 题材 | 核心要点 |
|------|----------|
| 历史文 | 本质=类同人写法;书名"朝代+开局事件";核心梗=先知先觉震惊名人+改变历史 |
| 军事文 | 卖点=煽情+身临系境;核心矛盾=国与国/信仰/意识形态 |
| 种田/脑洞 | 密集小爽点(收藏/能力/面板/震惊);面板设定要细致 |
| 直播流 | 目标(确定性预期)+对抗(短平快)+阶段性+爽点写法:先告诉读者打算怎么装逼,再装个更大的 |
| 两界穿梭 | 书名即卖点;核心梗=在A世界低调用B世界资源;长生凡人流:时间尺度大+配角代际更替 |
| 重生流 | 天然期待感;前世被辜负→这一世报复;爽点可重复使用每次形式不同;番茄标准=简单直给打标签 |
---
## 桥段词表
给 Stage 3 的 `剧情/{标题}.md` 打「桥段标签」用的常见桥段词。命中就标,逗号分隔;不在表内但本书确有的桥段照实写,不硬凑、宁缺毋滥。**可扩展种子,不是封闭枚举。**
| 题材 | 常见桥段 |
|------|----------|
| 都市/言情 | 打脸、扮猪吃虎、马甲掉落、先婚后爱、追妻火葬场、破镜重圆、替身、契约婚姻、萌宝助攻 |
| 玄幻/修仙 | 废柴逆袭、扮猪吃虎、越级战斗、夺宝、护短打脸、绝境翻盘、机缘逆天 |
| 历史/种田 | 先知先觉、改变历史、科举经商崛起、攒钱起家、技能点亮 |
| 悬疑/无限 | 信息差、反转打脸、规则怪谈、身份揭穿、复盘解谜 |
| 系统流 | 任务奖励、签到、面板升级、强制任务、积分兑换 |
| 重生/穿越 | 前世复仇、改命、身份调换、双重生、未卜先知 |
| 世情/家庭 | 极品亲戚、婆媳争斗、偏心打脸、维权反击、自我觉醒 |
| 直播/两界 | 直播整活、低调用资源、两界差价、围观震惊 |
---
## 人设塑造
### 第一章立人设
小事件展示性格→贴标签确立;紧急事件快速带入剧情;女角色第一步反应要体现性格。
### 日常体现人设
重复出现符合人设的行为;配角功能化(嫉妒型:得意→嫉妒;崇拜型:质疑→佩服);配角情绪转变要写出。
### 开篇逻辑
被动入局→交流了解世界观→陷入困境→明确目标→展示金手指→通过金手指收获
---
## 素材转化
从热点提取:识别核心冲突→定主线方向→用经典框架填充素材。
### 文体决定行文
| 文体 | 行文 |
|------|------|
| 打脸爽文 | 节奏快、描写少、言语凝练 |
| 感情流 | 细水长流、细腻描写 |
references/material-decomposition.md›
# 小说素材拆解方法论
---
## 拆解流程 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 定位断点
- 从断点所在块的起始章节重新开始(覆盖该块已有输出)
references/output-templates.md›
# 拆文输出模板
按需加载,配合 SKILL.md 和 material-decomposition.md 使用。
本文件按 story-long-analyze 唯一管道的阶段编号组织:Stage 0-5 各阶段输出模板 + 停靠点「快速预览报告」模板 + 跨阶段通用速查。
---
## 通用速查
### 爽点类型
| 类型 | 定义 | 例子 |
|------|------|------|
| 装逼打脸 | 实力碾压被轻视的人 | 「你也配?」 |
| 逆袭反转 | 绝境翻盘 | 废材觉醒 |
| 获得机缘 | 得到别人没有的 | 捡到神器 |
| 信息差碾压 | 读者和主角知道别人不知道的 | 重生先知优势 |
| 情感满足 | 人物关系发展 | 告白/团聚/认可 |
| 扮猪吃虎 | 隐藏实力突然展露 | 弱者实则是强者 |
### 钩子类型
| 类型 | 定义 | 示例 |
|------|------|------|
| 悬念钩 | 未解之谜 | 「剑为什么认他为主?」 |
| 冲突钩 | 直接对抗 | 开篇追杀 |
| 反差钩 | 违反常识 | 「穿越第一天就破产」 |
| 代入钩 | 读者共鸣 | 相似困境 |
| 信息差钩 | 读者知道角色不知道的 | 「他还不知道面前是……」 |
### 爽点循环结构
三层微观循环:
- **铺垫层(蓄势)**:压抑/困境/信息差制造情绪缺口
- **释放层(爽感)**:展露实力/打脸/碾压,强度由反应层数和篇幅决定
- **衔接层(承转)**:旧循环结束埋新钩子
反应层递进:质疑/轻视 → 震惊/打脸 → 强者重新评价 → 扩散效应
反应篇幅比 = 反应总字数 / 装逼字数。低于1.5 = 爽感没接住。
### 衔接过渡模式
| 模式 | 机制 | 示例 |
|------|------|------|
| 打完小的来大的 | 释放层对手引出更强对手 | 打败弟子→师父找上门 |
| 胜利发现隐患 | 释放成功暴露新问题 | 赢了比赛→发现中毒 |
| 身份暴露/反转 | 释放中身份被识破 | 打脸后被认出真实身份 |
| 利益升级 | 成果指向更大目标 | 线索→更深层宝藏 |
| 关系突变 | 释放改变关系格局 | 救的人变仇家后代 |
### 题材爽点形态
| 题材 | 释放层形态 | 反应层来源 | 铺垫层缺口 |
|------|-----------|-----------|-----------|
| 玄幻/修仙 | 实力碾压/境界突破 | 同门/对手/长老震惊 | 功法残缺/资源匮乏/血脉压制 |
| 都市 | 预测准确/身份揭露 | 商业对手/前女友/权贵 | 破产/被辞/被退婚 |
| 系统文 | 解锁稀有技能/任务奖励 | 系统稀有度标注 | 任务失败惩罚/技能冷却 |
| 历史 | 以弱胜强/先知优势 | 谋士/帝王/敌将震惊 | 信息不对称/身份低微 |
| 悬疑 | 真相揭露/反杀 | 被揭穿者崩溃/读者恍然 | 线索误导/嫌疑人洗白 |
---
## 快速预览报告
Stage 1 停靠点交付物,输出 `拆文库/{书名}/快速预览.md`。**字段全部取自 Stage 0/1 已产出数据**(概要.md + 黄金三章深度拆解),不引入需 Stage 2-6 才能算出的字段。与终态 `拆文报告.md` 向上兼容——「基本信息」「黄金三章评分」两节同名同结构,全量拆完后 `拆文报告.md` 是 `快速预览.md` 的超集。
```markdown
# 快速预览:{书名}
> 基于黄金三章 + 全书概要的早期判断。完整拆解见后续 Stage 2-6。
> 状态:已完成 Stage 0-1,{已暂停 / 已继续全量拆解}
## 基本信息
书名 | 题材 | 总章数 | 总字数 | 目标平台(源书所在平台,拆解时识别,无则留空)
## 黄金三章评分
直接复用 Stage 1 三章深度拆解结论,5 维评分表:
| 维度 | 评分 | 说明 |
|------|------|------|
| 开篇钩子 | 1-5 | |
| 主角塑造 | 1-5 | |
| 爽点设计 | 1-5 | |
| 世界观铺设 | 1-5 | |
| 章尾悬念 | 1-5 | |
## 开篇判断
- 开篇钩子类型与效果(来自 Stage 1 第1章「开篇钩子」)
- 主角立人设手法
- 世界观铺设方式
- 黄金三章节奏:三章各自功能
## 早期可借鉴点
来自 Stage 1 各章「可借鉴要素」的汇总,3-5 条。
## 是否值得全量拆解 — 建议
一句话结论:基于黄金三章质量,建议{继续全量拆解 / 重点拆解某部分 / 此书参考价值有限}。
## 下一步
继续全量拆解将产出:逐章摘要、剧情聚合、角色档案、世界观设定、完整拆文报告。
```
> `快速预览.md` 与 `拆文报告.md` 并存:前者是停靠点快照,后者是终态。终态生成后不删除 `快速预览.md`,保留早期判断痕迹。
---
## Stage 0 概要(thin first-pass)
> **范围说明**:Stage 0 只能基于章节标题 + 卷段结构 + 抽样开头/结尾产出 thin first-pass(~200 字)。**禁止**在此阶段写出 500-1000 字 plot-aware 概要——读取范围不足以支撑那个密度。完整版在 Stage 5 落盘覆盖(见本文件「Stage 5 拆文报告 + 全书概要」节)。
输出 `概要.md`:总字数{X}万 | 总章数{N} | 题材{类型}
| 卷/段 | 章节范围 | 章数 | 预估字数 |
|-------|----------|------|----------|
| {卷名} | 第1-X章 | {N} | {W}万 |
首版概要(~200字,thin first-pass):{从章节标题 + 第1章+末章抽样归纳出的核心驱动 + 主角名 + 大致设定,不要硬凑剧情转折}
章节索引:| 章节 | 标题 | 字数 |
> Stage 5 完成后会就地覆盖此文件的「首版概要」段为「全书概要(500-1000字 plot-aware)」。章节索引和卷段表保留不变。
## Stage 1 黄金三章
黄金三章拆为三个单章文件,每章一个:`章节/第1章_深度拆解.md`、`章节/第2章_深度拆解.md`、`章节/第3章_深度拆解.md`。每个文件按以下模板输出。
字数约{X}字 | 核心事件:{一句话}
**开篇钩子**(第1章看前500字):类型{悬念/冲突/反差/信息差/代入感} | 手法{描述} | 效果{强/中/弱}—{原因}
**人物出场**:{列表} | 主角塑造{直接描写/对话/行为/他人评价} | 第一印象{描述}
**世界观铺设**:透露{信息} | 隐藏{信息} | 方式{对话/旁白/事件}
**结构拆解**:| 段落范围 | 功能{铺垫/冲突/爽点/收尾} | 字数 |
**爽点分析**:类型{装逼打脸/逆袭反转/获得机缘/信息差碾压/情感满足} | 铺垫{X}字 / 释放{Y}字 / 铺放比{Z:1} | 情绪曲线
**反应层拆解**(如有):
| 层级 | 角色 | 反应 | 篇幅 |
|------|------|------|------|
| 质疑/轻视 | | | |
| 震惊/打脸 | | | |
| 强者重评 | | | |
| 扩散传播 | | | |
反应篇幅比{N:1} — 低于1.5 = 爽感不足
**释放后追证**(如有):爽点释放后反派真实态度?{行为+原文引用}
**冲突升级**(如有):{行为} | 升级层级{口头→经济→暴力} | 对角色画像影响
**背景信息揭示**(如有):揭示{什么} | 叙事功能{推翻预设/重新解读/铺垫新线/认知偏差} | 对主线影响
**章尾钩子**:类型{悬念/反转/新信息/新角色} | 内容{描述} | 期待度{强/中/弱}
**可借鉴要素**:{可复用技巧}
> 第二、三章额外关注:信息密度 / 冲突升级(vs上章) / 节奏变化 / 爽点间隔字数。
> 反派若为非人形(灵气复苏/末世/国运等抽象对抗型),在「爽点分析」处改用抽象对抗型路由:核心对抗面{描述} | 紧迫感来源{描述} | 升级机制{描述} | 叙事替代{用什么替代传统打脸}。
## Stage 2 章节摘要+情节点
输出 `章节/第{N}章_摘要.md`:
**概要**:{100-300字,写成单行的一个自然段,不折行、不拆条目。按事件发生的顺序连贯讲清本章发生了什么、为什么发生、结果如何。因果照实写,但不靠"因为…所以…"这类同一连接词反复串联。优先写进:改变剧情走向的动作与结果、反常信息、会延续到后续章节的伏笔线索、有辨识度的具体细节(数字、原话、反常现象)。只写本章原文有的事实,不加空泛评价(如"感人""精彩""震撼")和主观解读}
**关键事件**:1.{事件} 2.{事件} 3.{事件}
**关键信息与扩写技法**:
| 关键信息/剧情走向 | 原文如何扩写 | 扩写技法 | 对读者情绪的作用 | 可复用提醒 |
|---|---|---|---|---|
| {本章必须让读者知道/误判/期待/确认的信息} | {作者用了哪些事件、对话、反应层、细节、误导或回扣把它扩成场景} | {铺垫后置/反应层放大/信息差/对比锚点/延迟揭示/身体反应/小目标嵌套/其他} | {好奇/期待/压抑/爽/心疼/紧张/甜/热血/其他} | {保留情绪逻辑,替换人物、场景、事件素材;禁止照搬具体桥段} |
**逐章写法公式**:
- **情绪流向**:起:{开篇情绪} → 承:{铺垫/加压情绪} → 转:{爆发/反转情绪} → 合:{余波/钩子情绪}
- **节奏配比**:慢铺垫 {X%} / 快冲突 {X%} / 爽点爆发 {X%} / 悬念留白 {X%}
- **本章结构公式**:{节点1动作(目的)} + {节点2动作(目的)} + {节点3动作(目的)} + {节点4动作(目的)}
- **本章核心技巧**:{一句话概括本章最可迁移的结构手法,如用反应层放大信息差、用小目标承接大矛盾;只描述写法,不评价质量}
- **卡点与伏笔**:结尾卡点:{类型+内容+下章期待};埋设/回收伏笔:{伏笔名/物件/信息 → 章节功能}
**出场人物**:| 角色 | 本章重要性 | 别名 | 本章表现 |
**情节点**(每章10-40个,按字数动态调节,150-200字/个;硬下限10——短章按关键步骤拆足):
太粗(整段打架)→丢细节;太细(举起右手)→碎片化。恰当:完整戏剧事件("主角三招击败反派,围观者震惊")。
P{序号} **{标题}**:类型{转折点/信息揭示/冲突/解决/铺垫/行动/对话/状态变化} | {白描一句话:谁做了什么、结果如何;原文给出起因或理由的一并写进来,不推测动机;埋伏笔的写出伏笔线索} | 涉及{全名,多人逗号分隔;纯环境铺垫无具体人物时保留"涉及"标签、值留空} | 地点{如明确} | 物品{如涉及} | 时间{如明确}
> 标题是 ≤15 字的短标签(如「衙门见闻」「龙血针检测」),白描才是承载事实的那一句。两者不要写成同一句话——标题复述一遍不算白描。
{可选引用行:≤400字原文直接引用,不加“原文引用:”标签。只给关键情节点加,挑选标准见下;不选中的情节点直接跳到下一行}
主题标签{爱情/亲情/友情/权力/金钱/成长/复仇/悬念/搞笑/热血/日常/其他} | 基调:{紧张/轻松/悲伤/热血/爽/甜/温馨/恐怖/压抑/其他}
> **`{}` 是占位标记,不是要输出的字符**:上面每个 `{...}` 都表示「把内容填在这里」,`/` 是候选项之间的分隔号。落盘文本里不应出现花括号,也不应把候选项列表原样抄下来。照抄成 `类型{行动}`、`主题标签{搞笑}`、`地点{未明确}` 都是错的。
>
> 一个完整的正确样例(照这个写,两行为一组):
>
> ```
> P7 **龙血针检测**:类型信息揭示 | 许七安用龙血针验出对方身份,当场揭穿 | 涉及许七安,郑兴怀 | 地点府衙后堂 | 物品龙血针 | 时间入夜
> 主题标签悬念 | 基调:紧张
> ```
>
> - **字段名后不加冒号、不加括号**:写 `类型信息揭示`,不写 `类型:信息揭示` 或 `类型{信息揭示}`。
> - **`主题标签` 只填一个值**:本章该情节点最主导的那一个。不要用 `/`、`、`、`,` 或空格并列多个——落盘校验按「一个值」读,并列写法会被判成枚举越界而触发重跑。
> - **空字段统一写「无」**:如 `物品无`、`时间无`。不要用 `—`、`未知`,也不要整段省略(`涉及` 段必须保留,纯环境铺垫时值写「无」)。
> - **每个情节点后紧跟自己的那一行 `主题标签X | 基调:Y`**,不要把所有标签行堆到文件末尾,也不要把它并进 P 行内部。
>
> 末行硬约束:`基调:` 全角冒号不可省略(Stage 6 文风按它 grep);`主题标签` 不加冒号;两者各取上列枚举、勿混(温馨/紧张/甜是基调、非主题);都不贴合用「其他」。
>
> 枚举消歧:爽=打脸/复仇得手/反转的解气感;热血=拼搏战斗的燃;甜=恋爱暧昧的甜;温馨=亲情/友情的暖;恐怖=惊悚诡异/生理恐惧;紧张=危机悬而未决。主题里,亲情=家人/师徒/类亲情;爱情=恋爱;友情=朋友/伙伴/兄弟;金钱=财富/利益/算计;权力=地位/权势。都不贴合才用「其他」,勿硬塞近义项。
**白描铁律**(P 行的白描是情节点的主要证据,写不准下游全歪):
| 维度 | 禁止 | 正确 |
|------|------|------|
| 情感 | 邵阳感到心碎和愤怒(原文只写了他看见拥抱) | 邵阳目睹宋丽与人拥抱,表情由刺痛转为冷漠 |
| 评价 | 这是一段精彩的打斗 | 林雷三招击败对手,围观者倒吸一口凉气 |
| 氛围 | 气氛变得紧张起来 | 所有人停止说话,目光集中在门口 |
| 意图 | 他想借此展示实力 | 他将石锁单手举过头顶,环视众人 |
| 叙事框架词 | 通过对话,郑松得知张子豪在韩国训练 | 吴志斌告诉郑松,张子豪在韩国训练 |
原文明说的起因、理由和内心活动照写("存款花光了,他去找许新年借钱"里的起因是原文给的),只是不替角色推测原文没写出来的动机;原文同时给了外部表现时优先写表现。情节点严格按原文事件的时间顺序排列,不重排、不逻辑归纳。
**原文引用规则(精选,不逐点铺满)**:情节点的主要证据是 P 行的白描——事实、结果、原文给出的起因、伏笔线索必须在白描里写全。引用是补充证据,只给三类情节点保留:关键转折(改变本章或全书走向的转折点/解决)、关键台词(有辨识度、后续会被回扣的原话)、写法样本(值得当句式/节奏/对话样本回查的段落)。
- 每章至多 8 条;其余情节点不写引用行。本章确实没有值得回查的段落时一条都可以不留,不要为凑数给过场和纯环境铺垫配引用
- 引用 ≤400 字,逐字连续切片,保留原文语气,不改写、不缩写、不跨段拼接
- 选中的段落过长或分散时,用一行 `原文定位:{5-15字可 grep 回原文的原句片段}` 代替整段引用
**Stage 2 输出自检**(并行 agent 与 solo/direct 串行两条路径同一份要求):概要为按时序的连贯叙述(非条目罗列、非同一连接词反复串联)|每个情节点白描客观且写全事实/结果/原文给出的起因|标题为 ≤15 字短标签且不与白描同句|情节点严格按时序|情节点数 10-40(按字数动态调节,硬下限 10)|关键转折/关键台词/写法样本类情节点留了引用或 `原文定位`,全章不超过 8 条|角色用全名|类型/基调/主题标签只取规定枚举|角色描述不跨章|`关键信息与扩写技法` 与 `逐章写法公式` 齐全。
## Stage 2 角色过滤
| 分类 | 标准 | 提取深度 |
|------|------|----------|
| 不提取 | 出场1次且无台词(通用路人) | 跳过 |
| 简化提取 | 出场2-3次且单一功能 | 功能标签+首次章节 |
| 完整提取 | 出场3次以上/有台词且推动剧情/与主角直接互动 | 完整档案 |
别名合并:主条目用首次正式名,别名列于 `aliases: []`。
## Stage 3 聚合分析
### Stage 3 前置:故事框架识别
输出写入 `剧情/故事线.md` 顶部:
```markdown
## 故事框架
| 项目 | 内容 |
|------|------|
| 框架类型 | {升级流/复仇线/日常单元/多线交织/蜕变成长/混合} |
| 核心驱动 | {一句话描述全书的核心叙事引擎} |
| 主轴矛盾 | {贯穿全书的根本矛盾} |
| 升级机制 | {力量/地位/关系的递进方式,如无则填"—"} |
| 叙事节奏模式 | {铺垫→冲突→爽点→新悬念 的典型周期} |
| 判断依据 | {哪些章节/情节点支撑此判断} |
| 预期剧情数 | {基于总章数的预期范围,参考 material-decomposition.md 预期数量引导表} |
```
**框架识别后自检**(写入 `剧情/故事线.md` 框架部分之后):
```markdown
## 框架识别自检
| 检查项 | 结果 | 说明 |
|--------|------|------|
| 覆盖率 | {X%} | {已覆盖章节数/总章节数} |
| 粒度检查 | {通过/不通过} | {如不通过,说明哪个剧情过细/过粗} |
| 独立性检查 | {通过/不通过} | {如不通过,说明哪个剧情不满足哪项标准} |
| 数量检查 | {通过/不通过} | {实际剧情数 vs 预期范围} |
```
### Stage 3 权威产物分工
Stage 3 除剧情文件外,必须写一个轻量索引 `剧情/README.md`,再分别写两个权威文件:
```markdown
# 剧情目录索引
| 文件 | 权威范围 | 下游用法 |
|---|---|---|
| `节奏.md` | 关键信息推进、爽点循环、情绪触动点、爆发节奏 | 产出 `rhythm_reference` |
| `情绪模块.md` | 读者需求、情绪引擎、套路框架、可复现模块卡 | 产出 `selected_emotion_module` |
| `故事线.md` | 故事框架与故事线摘要 | 投影摘要,不覆盖权威文件 |
| `拆文报告.md` | 人类阅读报告 | 投影摘要,不覆盖权威文件 |
冲突时以 `节奏.md` / `情绪模块.md` 为准;两个文件用 EM/RH/TR ID 互相引用。
## 剧情单元清单
| 剧情单元 | 类型 | 桥段标签 | 章节范围 | 体量 |
|---|---|---|---|---|
| `{标题}.md` | {类型} | {桥段标签} | 第{X}-{Y}章 | 共{N}章,约{M}万字 |
清单仅是检索索引投影(各列取剧情单元既有字段),剧情定义权威在各剧情单元文件;节奏/情绪权威仍在 `节奏.md` / `情绪模块.md`。
```
- `剧情/节奏.md` 是**节奏与触发点权威索引**:关键信息推进、爽点循环、情绪触动点、爆发节奏、长间隔风险都在这里落盘。
- `剧情/情绪模块.md` 是**读者需求与可复现模块权威索引**:读者为什么爱看、情绪引擎如何运转、爽文套路如何嵌进故事框架、如何重组复现都在这里落盘。
- `剧情/故事线.md` 和 `拆文报告.md` 只写摘要和引用,不复制完整模块定义;冲突时以下游写作读取 `剧情/节奏.md` / `剧情/情绪模块.md` 为准。
### Stage 3 剧情
输出 `剧情/{标题}.md`:
| 项目 | 内容 |
|------|------|
| 标题 | 简洁有力,15字以内 |
| 类型 | {主线/爱情/成长/复仇/寻宝/悬疑/战斗/权谋/修炼/危机/谜团/日常/其他} — 悬疑=主动推理调查,谜团=世界观/身世等未解之谜 |
| 概要 | {150-300字,按时序连贯叙述这条剧情线的起承转合与因果,不靠同一连接词反复串联;含核心角色及定位、关键地点、关键道具(如有)、对主角/世界的影响} |
| 核心目标 | {具体、可衡量的戏剧目标,如"赢得大比冠军"} |
| 核心冲突 | {具体冲突对象+冲突事件} |
| 关键信息功能 | {这条剧情负责让读者获得/等待/误判/确认什么信息} |
| 读者需求 | {满足安全感/优越感/期待感/情感补偿/认知反转/陪伴感等哪类需求} |
| 情绪模块ID | {引用 `剧情/情绪模块.md` 中的 EM-001 等,不在此重复完整卡片} |
| 套路框架位置 | {退婚打脸/迟来追悔/升级试炼/掉马震惊/以小搏大/其他;说明它如何在本故事框架内运转} |
| 桥段标签 | 从桥段词表选命中项,逗号分隔;可补表外确有桥段;无匹配留空,不硬凑(词表见 references/deconstruction-notes.md) |
| 章节范围 | 第{X}-{Y}章(共{N}章,约{M}万字) |
结构分布:铺垫期 | 发展期 | 高潮期 | 收尾期(各含章节范围)
情节点索引:| 序号 | 章节 | 描述 | 归属置信度 |
### Stage 3 故事线
输出 `剧情/故事线.md`(在框架识别之后):
每条故事线:
| 项目 | 内容 |
|------|------|
| 标题 | 简洁有力,15字以内 |
| 类型 | {主线/感情线/成长线/复仇线/夺宝线/冲突线/谜团线/其他} |
| 描述 | {300-600字,划分3-8个发展阶段,每个阶段含:核心冲突、关键角色及作用、能力/资源/地位演进、主题母题。追踪伏笔与回收关系链。标注与其他故事线的交织关系} |
| 情绪引擎摘要 | {1-2句概述这条线如何制造缺口、延迟满足、释放和余波;详情指向 `剧情/情绪模块.md`} |
| 套路运行方式 | {爽文/情感/悬疑等套路如何嵌入故事框架而不是孤立桥段;详情指向模块ID} |
| 主题 | {不超过3个} |
| 包含剧情 | {剧情标题列表,按时序排列。每条故事线至少包含1个剧情} |
| 模块引用 | {EM-001, EM-002;只写引用,不复制完整卡片} |
故事线关系:并行 / 交织 / 依赖
### Stage 3 节奏.md(权威索引)
输出 `剧情/节奏.md`:
```markdown
# 节奏索引:{书名}
> 权威范围:关键信息推进、爽点循环、情绪触动点、爆发节奏。`拆文报告.md` 只引用本文件摘要。
## 全书情绪节奏总览
- 情绪折线:{压抑/期待 → 紧张/加压 → 爽感/反转 → 余波/新危机;标注关键章节区间}
- 爽点频率:{每 N 章一次小爽点;每 M 章一次中高潮;大高潮位置}
- 高潮分布:小高潮:第 {X/Y/Z} 章;中高潮:第 {X/Y} 章;大高潮:第 {X} 章
- 冲突升级路径:{低级矛盾 → 中级矛盾 → 高级矛盾 → 终局矛盾;标注触发章节}
- 伏笔跨章地图:{伏笔内容 | 第X章埋入方式 → 第Y章回收效果;仅列跨度超过2章或影响主线的伏笔}
## 循环单元
- 小循环(约 3 章):{缺口/误判 → 加压/试探 → 释放/新钩子;可变项是什么}
- 中循环(约 7 章):{阶段目标 → 多轮阻碍 → 中段反转 → 阶段爽点 → 更大问题}
- 大循环(约 15 章):{卷内目标 → 资源/关系/敌手升级 → 核心冲突爆发 → 余波与转场}
## 关键信息推进表
| 章节/范围 | 关键信息 | 扩写方式 | 推进功能 | 节奏效果 | 关联剧情/模块 |
|---|---|---|---|---|---|
| 第{N}章 | {读者必须获得/误判/等待的信息} | {对话铺垫/事件验证/反应层/延迟揭示/多段回扣} | {立目标/加压/释放/转场/埋钩} | {加速/减速/蓄力/爆发/冷却} | {剧情标题 / EM-001} |
## 爽点循环索引
| 循环ID | 章节范围 | 铺垫层 | 释放层 | 反应层 | 衔接层/新钩子 | 强度递进 |
|---|---|---|---|---|---|---|
| RH-001 | 第{X}-{Y}章 | {压抑/误判/期待缺口} | {打脸/掉马/目标达成/情感满足} | {谁震惊/后悔/重新评价} | {旧爽点后立起的新期待} | {比上一轮强/弱在哪里} |
## 情绪触动点索引
| 触动点ID | 章节 | 触发事件 | 目标读者情绪 | 爆发点 | 余波/冷却 | 复现提示 |
|---|---|---|---|---|---|---|
| TR-001 | 第{N}章 | {触发读者情绪的具体情节} | {期待/心疼/愤怒/爽/甜/热血/恐惧} | {情绪最高句/段或事件} | {角色反应/关系变化/新悬念} | {保留情绪链,不搬运具体事件} |
## 爆发节奏总结
- 爆发密度:{每N章一次 / 每N字一次 / 卷内峰值位置}
- 爆发形态:{递进 / 延迟满足 / W形 / 阶梯 / 单元循环}
- 长间隔风险:{哪些区间触动点过稀,作者如何用小钩子维持}
- 下游写作提醒:{新书复现时每章/每卷如何安排触动点}
```
### Stage 3 情绪模块.md(权威索引)
输出 `剧情/情绪模块.md`:
```markdown
# 情绪模块:{书名}
> 权威范围:读者需求 / 情绪引擎 / 套路框架运转 / 可复现模块。禁止把原文具体桥段当模板照搬。
## 读者需求 / 情绪引擎
| 读者需求 | 本书满足方式 | 证据章节/情节点 | 持续追读机制 | 可迁移边界 |
|---|---|---|---|---|
| {优越感/安全感/被理解/替代性复仇/关系补偿/认知惊喜等} | {故事如何持续交付} | {第N章/Px} | {下一层期待如何被立起} | {可保留情绪逻辑;必须替换具体设定/人物/事件} |
## 故事框架与套路运行图
| 框架/套路 | 在本书中的位置 | 运行方式 | 为什么有效 | 失效风险 |
|---|---|---|---|---|
| {退婚打脸/升级流/迟来追悔/掉马/以小搏大/修罗场/其他} | {章节/剧情单元} | {铺垫→延迟→释放→余波} | {对应读者需求} | {照搬会雷同/人设不适配/铺垫不足} |
## 可复现模块卡
### EM-001 {模块名}
| 字段 | 内容 |
|---|---|
| 读者想看什么 | {一句话抽象需求} |
| 情绪链 | {缺口 → 加压 → 触发 → 爆发 → 余波} |
| 戏剧单元 | {去素材后的结构,如“被轻视者在公开场合用结果反证”} |
| 关键触发物 | {可替换功能位:误判者/见证者/代价/证据/奖励} |
| 复现步骤 | {1. 建缺口 2. 加反应层 3. 控制爆发点 4. 立新钩子} |
| 可替换项 | {角色身份、场景、道具、对手类型、目标结果} |
| 不可照搬 | {原文专名、具体事件顺序、标志性台词、独特设定} |
| 关联节奏 | {`剧情/节奏.md` RH-001 / TR-001} |
## 重组与复现指南
1. 先选读者需求,再选模块卡,不要从原文桥段倒抄。
2. 保留情绪链和功能位,替换人物、场景、动机、道具、事件素材。
3. 复现到新书大纲时,至少改变:冲突对象、公开/私密场景、触发证据、余波方向中的三项。
4. 若人设与模块冲突,以人设驱动重构模块;不要为了套套路扭曲角色。
```
### Stage 3 角色操作
**合并**:
1. 收集所有章节的角色提及数据
2. 别名匹配(仅 proper_name 和 nickname,置信度 ≥0.85)
3. descriptor/title 永不触发合并
4. 确认后保留首次正式名
**分级**:
| 等级 | 标准 | 提取深度 |
|------|------|----------|
| 主角 | 出现章节 ≥50% + 推动主线 + 完整成长轨迹 | 完整档案+弧线+动机链 |
| 反派 | 与主角对立 + 推动核心冲突 + 明确动机 | 完整档案+动机链 |
| 核心配角 | 出现章节 ≥20% 或推动重要支线 | 完整档案+关系 |
| 功能角色 | 出现章节 <20% + 作用有限 | 简化档案 |
边界模糊优先归入更低等级。
### Stage 3 散落情节兜底
1. 计算孤立比例,<5% 直接跳过(少量散落写入散落情节.md)
2. 列出未分配情节点
3. 按角色重叠、地点重叠、因果关系计算相关性(三层置信度)
- 强相关(0.8-1.0):归入现有条,标`[孤立情节归入]`
- 中等相关(0.5-0.8):标`[低置信归入]`,待复核
- 弱相关(<0.5):不强行分配,宁可放入未分配
4. <0.5 按主题聚类,标`[聚类生成]`(≥5个才建条)
5. 无法归类写入`散落情节.md`,不要强行分配到不相关的剧情
6. 覆盖率验证:目标阈值见 [material-decomposition.md 质量阈值体系](material-decomposition.md),不达标回到步骤3降低阈值重试
### Stage 3 覆盖率
覆盖率 = 已归类数 / 总数 x 100%,目标阈值见 [material-decomposition.md 质量阈值体系](material-decomposition.md)。
## Stage 4 设定+关系
> **Stage 4 直接按主题拆分输出多个文件**(与当前导入、长篇写作项目结构对齐)。下游不再现场拆分扁平文件。
> **事实保真**:等级/数值/距离/属性/势力数等硬事实回原文核对,原文未给的写「原文未明确」、禁编造填空(见 material-decomposition.md「合成阶段事实保真」)。
`设定/世界观/力量体系.md`:
- 文本描述,含等级、晋升条件。长篇注意多层级力量体系
- 内容 < 200 字且不构成独立体系 → 合并到 `设定/世界观/背景设定.md`,本文件可省略
`设定/世界观/地理.md`:
- 分布、主要区域、关键地点(文本描述)
- 内容 < 200 字 → 合并到 `背景设定.md`,本文件可省略
`设定/世界观/背景设定.md`:
- 核心规则 + 特殊设定
- 内容不足独立成文件的「力量体系 / 地理 / 势力」也合并到这里
- 无特殊世界观时:本文件输出 "本书为现实题材,无特殊世界观设定"
`设定/世界观/金手指.md`:
- 类型{system/space/rebirth/transmigration/special_physique/artifact/bloodline/other} | 名称 | 描述(300-600字,含能力/获取/机制/进化史/多重能力演化)| 核心机制 | 当前能力
- 合并规则见 material-decomposition.md「金手指合并规则」。
- 无金手指时:输出空文件,注明"本书无明显金手指设定"
`设定/势力/{势力名}.md`(每个核心势力一个文件):
- 名称 / 类型(门派/组织/家族/国家)/ 核心人物 / 立场倾向 / 与其他势力关系 / 关键事件
- 内容 >= 200 字时独立;不足合并到 `设定/世界观/背景设定.md`(不丢失信息)
`角色/{角色名}.md`(每角色):
- 200-500字档案(身份背景→核心经历→性格特质→能力特长→人际关系→成长轨迹)
- archetype:protagonist/antagonist/supporting/minor
- 关键情节(3-5个转折点,按时序排列)
- 成长弧线(character_arc:如有明显变化则总结,如"从普通少年成长为觉醒血脉的强者")
- 别名列表(标注类型和置信度)
`角色/角色关系.md`(每5章批量,从情节点提取):A<->B:关系类型 | 情感 | 描述(50-200字)| 演变轨迹。同一对角色保留最新状态,历史变化写入演变轨迹。
## Stage 5 汇总报告
输出 `拆文报告.md`(`快速预览.md` 的超集,两节同名同结构,见「快速预览报告」节)。
报告章节:
- **基本信息**:书名 | 题材 | 总章数 | 总字数 | 目标平台(与 `快速预览.md` 同结构)
- **黄金三章评分**:5 维评分表(开篇钩子/主角塑造/爽点设计/世界观铺设/章尾悬念,与 `快速预览.md` 同结构)
- **读者需求 / 情绪引擎**:摘要 `剧情/情绪模块.md` 的核心读者需求、情绪缺口、持续追读机制(报告只写摘要,详情以模块文件为准)
- **结构分析**:主线 / 副线 / 剧情单元 / 覆盖率
- **关键信息与扩写技法总览**:按章节/剧情单元汇总关键剧情信息如何被扩写(详情以 `章节/*_摘要.md` 与 `剧情/节奏.md` 为准)
- **全书情绪节奏总览**:摘要 `剧情/节奏.md` 的情绪折线、爽点频率、小/中/大高潮分布、循环单元
- **爽点密度**:{N}个循环/{M}章 | 完成率{X%} | 密度{高≥70%/中50-70%/低<50%}
- **节奏与情绪触动点**:摘要 `剧情/节奏.md` 的爆发密度、触动点分布、长间隔风险、爆发节奏
- **伏笔与冲突网络**:跨章伏笔地图(仅列跨度超过2章或影响主线的伏笔)+ 冲突升级路径(低级→中级→高级→终局)
- **核心机制**:爽点类型 | 节奏模式 | 更新策略
- **角色体系**:主角/反派/核心配角/功能角色分级概览
- **质量评估**:置信度 / 覆盖率 / 重叠率
- **可借鉴套路**:1.{套路+场景} 2.{...} 3.{...},必须标注对应 `EM-*` 模块ID
- **可复现模块**:列出 `剧情/情绪模块.md` Top 3 模块的读者需求、情绪链、替换项、不可照搬项
- **写法技巧**:1.{技巧名+用法} 2.{...}——覆盖一笔两用、延迟揭示、视角欺骗、对比锚点、行为循环、身体反应替代心理描写、**跨章回扣**(物品/意象在不同章节承担不同功能)
- **不建议模仿**:1.{问题+原因}
## Stage 6 文风
输出 `拆文库/{书名}/文风.md`。整书级写作技法视图,供 story-long-write 日更循环喂给 narrative-writer。
**字段速查**:
| 段落 | 内容 | 必标可信度 | 上限 |
|---|---|---|---|
| 生成记录 | 参考了哪些资料 + 抽样看了哪几章 + 文风是否可用 | 否 | <100 字 |
| 整体语感 | 句长分布 / 标点习惯 / 段落节奏 | 是(每子项一标) | ~500 字 |
| 对话技法 | 潜台词模式 / 对话标签 / 角色语气区分 | 是(潜台词必标) | ~400 字 |
| 情绪交替模式 | 章内基调切换 / 跨章基调周期 / 喜剧↔重击转场 | 是(章内切换必标) | ~400 字 |
| 可借鉴技巧 | 写法技巧 Top 5 + 可借鉴套路 Top 3(从拆文报告引用;情绪/节奏意图只引用 `剧情/情绪模块.md` / `剧情/节奏.md`,不在文风中重定义) | 否 | ~300 字 |
| 分层模仿建议 | 基础层 / 进阶层 / 适配层,各写可执行边界 | 否 | ~350 字 |
| **原文锚点片段** | **4-6 段 × 300-500 字**,按基调分类,标"出处 + 行号 + 示范点" | 否 | ~2400 字 |
| 不可模仿 | 对标书缺陷或不适合本项目的技法 | 否 | <100 字 |
**总上限 ~4000 字**。
完整模板与生成方法见 [style-profile-protocol.md](style-profile-protocol.md) + [style-profile-generator.md](style-profile-generator.md)。
references/pipeline-ops.md›
# 管道运维参考
story-long-analyze 拆解管道的运维工具文档:`_progress.md` 模板、错误处理、恢复机制操作步骤。
> 质量阈值(置信度 / 覆盖率 / 重叠率)见 [material-decomposition.md 质量阈值体系](material-decomposition.md)。
---
## _progress.md 模板
```markdown
# 深度拆解进度:{书名}
- 小说:{标题} | 总章数:{N} | 输出目录:{路径} | 开始:{日期}
- 最终状态:{pending/paused_after_stage1/completed/completed_with_errors}
- schema_version: 2
## 管道进度
| 阶段 | 状态 | 进度 | 备注 |
|------|------|------|------|
## 章节边界(Stage 0 章节边界子步骤产物,唯一权威)
| 章号 | 标题 | 起始行 | 字数 |
|------|------|--------|------|
## 分块进度
| 块 | 章节 | 状态 |
## 失败记录
| 类型 | 章节/阶段 | 错误信息 | 重试状态 |
|------|----------|---------|---------|
## 质量检查
| 检查项 | 阶段 | 结果 | 修正 |
## 角色合并
| 合并前 | 合并后 | 依据 | 确认 |
## 断点
- 最后处理:第{N}章 | 当前阶段 | 下一操作
```
**schema_version 说明**:
| 版本 | 含义 |
|------|------|
| 2 | 当前契约:含「章节边界」表(Stage 0 章节边界子步骤产物)。Stage 1/2/6 全部以该表为切片真值,不再各自跑 regex |
缺少 `schema_version: 2` 或「章节边界」表时不得续跑;从 Stage 0 章节边界子步骤重建 `_progress.md` 后再恢复。
**最终状态值说明**:
| 状态值 | 含义 |
|--------|------|
| `pending` | 管道进行中,尚未跑完 |
| `paused_after_stage1` | Stage 1 停靠点暂停——Stage 0/1 已完成,已产出 `快速预览.md`,等待用户决定是否继续 Stage 2-6。续跑时跳过 Stage 0/1,从 Stage 2 开始 |
| `completed` | 全管道 Stage 0-6 完成 |
| `completed_with_errors` | 全管道完成,但有单章/单阶段失败(详见「失败记录」表,拆文报告中注明) |
---
## 剧情单元清单补建(存量书)
触发:用户说「补剧情单元清单」,或写作侧检索发现 `剧情/README.md` 无「剧情单元清单」表。
动作:读存量 `拆文库/{书名}/剧情/*.md`(或 `对标/{书名}/剧情/*.md`)各剧情单元表头的 标题 / 类型 / 桥段标签 / 章节范围 字段,按 output-templates.md「剧情单元清单」表模板机械重建 `剧情/README.md` 的清单表;项目 `对标/{书名}/` 视图存在时同步一份。不读原文、不重跑任何 Stage、不改剧情单元内容、不动 `节奏.md` / `情绪模块.md`。旧剧情单元「章节范围」行没有字数信息时,体量列只写「共{N}章」、字数记「未知」,不得编造。
写作侧消费点对无清单的书自动回退逐文件检索(见 story-long-write 的 outline-structure-theory.md「对标节奏迁移」步骤 1),补建只是加速,不是阻塞项。
## 错误处理
| 场景 | 处理 |
|------|------|
| 章节识别失败 | 提示确认格式;支持自定义正则 |
| 分块中断 | 读 _progress.md 断点恢复 |
| 聚合质量不达标 | 孤立情节二次分类;阈值放宽至 0.5 |
| 角色合并冲突 | 记录待确认列表 |
| 输出目录冲突 | 追加不覆盖;冲突标 `[重新分析]` |
---
## 恢复机制操作步骤
1. 管道启动时检查输出目录是否已有 `_progress.md`
2. 校验 `schema_version: 2` 与「章节边界」表;任一缺失即停止,并提示从 Stage 0 章节边界子步骤重建进度文件
3. 读取断点信息(最后处理章节 + 当前阶段 + 最终状态)
4. **断点状态为 `paused_after_stage1`**(Stage 1 停靠点)→ 跳过 Stage 0/1,直接从 Stage 2 续跑逐章摘要,不重跑已完成的概要与黄金三章
5. 其他断点状态 → 从断点所在块的起始章节恢复,覆盖该块已有输出
references/style-profile-generator.md›
# 文风生成 SOP
> **何时加载**:story-long-analyze Stage 6 执行时。`拆文报告.md` 是阻断级前置依赖;`章节/*_摘要.md`、`章节/第1-3章_深度拆解.md` 与 `原文/原文.txt`(或 `.md`)是质量输入,缺失时严格按下方「失败模式与降级」逐项处理。
>
> **输出**:`拆文库/{书名}/文风.md`(模板见 [style-profile-protocol.md](style-profile-protocol.md))。
## 6 步流程
### Step 1: 读拆文报告核心字段
读 `拆文库/{书名}/拆文报告.md`,提取:
- **「写法技巧」段** → 用于填文风「可借鉴技巧」的「写法技巧 Top 5」
- **「可借鉴套路」段** → 用于填文风「可借鉴技巧」的「可借鉴套路 Top 3」
- **「全书情绪节奏总览 / 伏笔与冲突网络」段** → 用于填文风「分层模仿建议」的进阶层与适配层,只抽象节奏和手法,不搬运具体桥段
- **基本信息**(书名、题材、总章数)→ 填写文风标题与「生成记录」
- 「生成记录」只写作者能看懂的信息:参考了哪些资料、抽样看了哪几章、生成时间、文风是否可用;不要写文件时间戳或内部降级标记这类实现术语。
### Step 2: 读黄金三章深度拆解
读 `章节/第1章_深度拆解.md`、`第2章_深度拆解.md`、`第3章_深度拆解.md`,提取:
- **开篇钩子类型 + 手法**
- **反应层拆解表**(对话潜台词样本)
- **爽点铺放比**(情绪交替节奏样本)
- **可借鉴要素**(与 Step 1 合并去重,喂「写法技巧 Top 5」)
### Step 3: 提取章节基调/主题标签序列
用 Grep 读所有 `章节/*_摘要.md`:
```bash
grep -hE '基调:(紧张|轻松|悲伤|热血|爽|甜|温馨|恐怖|压抑|其他)' 章节/*_摘要.md
```
**关键格式注意**:`章节/*_摘要.md` 的实际格式是 `主题标签X | 基调:Y` 单独成行、跟在每个情节点后(一章 10-40 行)。`基调` 用**全角冒号**,`主题标签` 后**不带冒号**,两者都**不在行首**。grep 模式不能用 `^基调:` 这种锚定。
**章基调聚合规则**(每章一个章基调,写入文风「情绪交替模式」):
- 对该章所有情节点的「基调」字段做众数统计
- 并列时(如 5 紧张 vs 5 热血)取章节内**最早出现**的基调(按 `_摘要.md` 中行号)
- 输出格式:`第N章: {章基调}`,连成全书序列
**章内情节点基调序列**(用于「章内基调切换」分析):
- 不做聚合,按 `_摘要.md` 中情节点出现顺序保留
- 用于统计切换频率:相邻情节点基调不同的次数 / 总情节点数
### Step 4: 原文采样
`原文/` 下**只有一个全书单文件** `原文.txt`(或 `.md`),**不是按章拆分**。Stage 0 已把校验通过的章节起止行写入 `拆文库/{书名}/_progress.md`,该表是 Stage 1/2/6 共用的唯一切片真值。
**Stage 6 只读 `_progress.md` 里的「章节边界」表,不重新搜索章节标题、不另行推断边界,也不自行修正规则。** 如果表缺失、目标章缺边界、边界不连续或指向原文范围之外,立即停止 Stage 6,提示重新执行 Stage 0 重建进度文件;不得用临时切片继续生成文风。
**采样切片**:
- 从 `_progress.md` 的章节边界表选第 1 章、第 10 章、第 20 章(如总章数 <20,按 1/3、2/3、收尾比例挑)
- 每章用 `Read offset={该章起始行} limit=50` 切出约 1000 字
- 把 3 段拼接写入 `拆文库/{书名}/_style-sample.txt`(固定这个文件名,不要换):**第一段用 `>` 覆盖写,后两段才用 `>>` 追加**。全程用 `>>` 会让重跑 Stage 6 时把上一轮的样本累积进来,统计出的句长分布是两轮混合的结果
**确定性句长/标点统计**(替代主观「眼测」):
Stage 6 由**主线程**执行,Bash 工具可用。把上一步拼好的 `_style-sample.txt` 喂给下面的脚本(heredoc 作 Python 源,样本路径按 argv 传入,避免 stdin heredoc 与 `< file` 双重重定向冲突)。先探测可用解释器再跑——**勿直接用 `python3`**,Windows 上它会触发 Microsoft Store 占位程序、exit 49 失败。
样本路径**必须用项目内相对路径**,不要写 `/tmp/...`:下面探测到的解释器可能是 Windows 原生 python(`py` 启动器),它把 `/tmp/x.txt` 解析成 `C:\tmp\x.txt`,和 Git Bash 写入的位置不是同一个文件,脚本会直接 FileNotFoundError。
```bash
SAMPLE="拆文库/{书名}/_style-sample.txt" # {书名} 换成实际书名,别照抄占位符
for PYBIN in python3 python py; do "$PYBIN" -c "" 2>/dev/null && break; done
"$PYBIN" - "$SAMPLE" <<'PYEOF'
import re
import sys
with open(sys.argv[1], 'r', encoding='utf-8') as f:
text = f.read()
sents = [s for s in re.split(r'[。!?]+', text) if s.strip()]
total = max(len(sents), 1)
short = sum(1 for s in sents if len(s) < 15)
mid = sum(1 for s in sents if 15 <= len(s) <= 30)
lng = sum(1 for s in sents if len(s) > 30)
chars = max(sum(1 for c in text if not c.isspace()), 1)
puncts = sum(1 for c in text if c in ',。!?;:、…—""\'\'')
avg = sum(len(s) for s in sents) // total
print(f'sentences={total}; short_lt15={100*short//total}%; mid_15to30={100*mid//total}%; long_gt30={100*lng//total}%; avg_len={avg}; punct_density={100*puncts//chars}%')
PYEOF
```
实测输出形如 `sentences=6; short_lt15=66%; mid_15to30=33%; long_gt30=0%; avg_len=12; punct_density=15%`。
把输出的 `short_lt15 / mid_15to30 / long_gt30 / avg_len / punct_density` 数值直接填进 `style-profile-protocol.md` 模板第 40 行的 `{...X% / Y% / Z%}` 占位符——`confidence: high`,因为是确定性测量,不是抽样估计。
**Bash 不可用时的降级**(仅子代理上下文等极端情况,主线程不会触发):
- 跳过本步骤;句长段写「Bash 工具不可用,跳过确定性统计」
- `confidence: low`,narrative-writer 让位回默认 Gate D(按句长标准校准)
### Step 5: 选原文锚点片段 (4-6 段)
从 Step 3 输出的章节基调里挑覆盖度最高、且项目可能需要的 4-6 类基调(优先覆盖:紧张/悲伤或压抑/轻松或温馨/热血)。若某类基调在对标书中少于 3 章,不强行编造;在文风文件中说明跳过。每类基调选 1 章作为锚点章。
**同基调多章时的选择规则**:
1. **L1 爽点类型最强匹配**:参考该章 `_摘要.md` 的「关键事件」+ 基调序列,挑爽点最突出的章节
2. **L2 原文章节长度最接近日更目标**:若 Step 4 已切出章节边界,用原文章节切片估算字数;若无法切原文,只用 `_摘要.md` 的情节点数量近似复杂度,不把摘要文件长度当作原文章节字数
3. **L3 章节号最小**:最早期的章节 = 作者最 canonical 的 voice(未受连载漂移影响)
锚点切片:
- 用 Step 4 从 `_progress.md` 读取的章节起止行
- 该章原文从中选 1 段 300-500 字(优先选对话+动作交织的段落,纯独白/纯设定段不选)
- 用 `Read offset limit` 切出,保留原标点和段落断行
- **锚点必须逐字连续切片,禁止改写/缩写/跳段/拼接**:narrative-writer 拿锚点当 few-shot 直接学,标注的行号要能回查原文。落盘前逐段抽 1-2 句 `grep -F` 回 `原文/原文.txt`,grep 不到即说明被改写或拼接——重切为忠实连续片段。确需跳过中间过渡段时,分别标各自真实行号(如「行264-267 + 行269-270」)并在引用块内用「(……中略……)」显式断开,不得用一个连续行号区间假装连续
### Step 6: 落盘
按 [style-profile-protocol.md](style-profile-protocol.md) 模板填写 `拆文库/{书名}/文风.md`:
- **文风文件必须留在拆文库**(`拆文库/{书名}/文风.md`),**永不由 analyze 直接写入** `对标/` 或写作项目目录——拆文库是数据源;只有该书被明确选为另一项目的外部对标时,才由 story-import 或 story-long-write 首次引用同步到 `对标/{书名}/`
- 每段标 `confidence: high/med/low`(内部给写作 agent 判断强弱,普通用户可忽略):
- `high`:数据直接来自拆文产物(如「写法技巧」直接引用拆文报告)
- `med`:从样本归纳且样本充足(如基调序列从 ≥10 章摘要统计)
- `low`:样本不足或采样失败(如锚点缺失、Bash 不可用导致 Step 4 句长统计跳过)
- 「分层模仿建议」必须分基础层 / 进阶层 / 适配层;基础层只写词汇、句式、描写和对话习惯,进阶层写节奏、伏笔、视角和场景衔接,适配层写哪些可用、哪些容易让本项目错位;明确不复制专名、标志性台词、独特桥段和事件顺序
- 字数预算:硬上限 ~4000 字。**描述段 ≤ 1800 字 + 锚点 4-6 段 × 300-500 字**
- 如果 Step 4 失败(章节分隔符识别不出)→ 「生成记录」写 `文风可用:否:无法识别章节分隔符`;原文锚点段全填占位符 "原文缺失,需手动补充",confidence 全 low
## 失败模式与降级
| 场景 | 降级策略 |
|---|---|
| `原文/原文.txt` 不存在 | 跳过 Step 4-5;文风文件仅含描述段;「生成记录」写 `文风可用:否:原文缺失` |
| `章节/*_摘要.md` 数量 <3 | 跳过 Step 3 基调序列;情绪交替段标 confidence: low |
| `章节/第1-3章_深度拆解.md` 缺失 | 跳过 Step 2;对话潜台词段从拆文报告兜底;confidence: low |
| `拆文报告.md` 不存在 | **停止 Stage 6**,提示用户拆文未完成,先跑完 Stage 5 |
## 与 chapter-extractor 的关系
**不修改 chapter-extractor**。文风直接从既有字段(基调/主题标签/可借鉴要素)整理生成即可。
句长 / 标点密度由 Step 4 的跨平台 Python 1-liner 在 Stage 6 主线程直接算出,不依赖 chapter-extractor。
## 与写作端的关系
- analyze Stage 6 写 `拆文库/{书名}/文风.md`
- story-import 显式绑定外部对标或 story-long-write 首次引用 `拆文库/{书名}/` 时,同步到项目 `{项目}/对标/{书名}/` 并**包含**文风(与拆文报告同等待遇);不得把正在导入的本书自身作为该外部对标
- 写作端(story-long-write)的日更循环读 `{项目}/对标/{书名}/文风.md`(按对标书路径查找规则,回退 `拆文库/{书名}/`)
## 单独重建文风
当前拆文产物仅缺 `文风.md` 时,可直接按本 SOP 跑 6 步(仅 Stage 6),无需重跑 Stage 0-5;前提是 `_progress.md` 满足当前章节边界契约。触发:用户直接说 "为对标书 X 生成文风" 或 "重生 文风"。
references/style-profile-protocol.md›
# 文风协议
> **何时加载**:story-long-analyze Stage 6 执行前。下游写作 skill 直接读 `文风.md`,不加载本协议。
## 产物定义
`拆文库/{书名}/文风.md` 是整书级写作技法视图,聚合:
- 句长 / 标点 / 段落节奏(从原文采样统计)
- 对话潜台词模式 + 角色语气区分
- 章内 + 跨章情绪交替周期(看每章基调如何变化)
- `拆文报告.md` 已有的「写法技巧」「可借鉴套路」
- 分层模仿建议(基础层 / 进阶层 / 适配层,强调学手法不搬桥段)
- 4-6 段 300-500 字原文锚点片段(范例片段用)
## 文件路径
- **写**:`拆文库/{书名}/文风.md`(analyze 独占)
- **读**:该书被显式选为另一项目的外部对标时,由 story-import 或 story-long-write 首次引用同步到 `{项目}/对标/{书名}/文风.md`;story-long-write 读项目对标视图(回退拆文库)。story-import 正在重建的本书不走这条同步。
## 字数预算
- **硬上限 ~4000 字**
- 描述部分(整体语感 + 对话技法 + 情绪交替模式 + 可借鉴技巧 + 分层模仿建议)≤ 1800 字
- 原文锚点片段 4-6 段 × 300-500 字 ≈ 1600-2400 字
- 不可模仿 + 生成记录 ≤ 100 字
## 模板
```markdown
# {书名} 文风
## 生成记录
- 参考资料:拆文报告.md、黄金三章深度拆解、章节摘要
- 抽样章节:第 {K1}/{K10}/{K20} 章(每章约 1000 字)
- 生成时间:{date}
- 适用对标书路径:拆文库/{书名}/
- 文风可用:是 # 若原文缺失或锚点不足,写“否:原因”
## 整体语感
- 句长分布:{由 `style-profile-generator.md` Step 4 的跨平台 Python 1-liner 在 3 章拼接样本上确定性测量——短句(<15字)占比 X%、中句(15-30)Y%、长句(>30)Z%、平均句长 N 字、标点密度 M%。一句概括语感。`confidence: high`(数据由脚本算出,不是抽样估计)。}
- confidence: high | med | low
- 标点习惯:{破折号/省略号/句号/感叹号/分号 的高频用法。附 2-3 个原文短片段示例。}
- confidence: high | med | low
- 段落节奏:{平均段长、单段单动作 vs 多动作堆叠、断行习惯。}
- confidence: high | med | low
## 对话技法
- 潜台词模式:{2-3 种典型潜台词手法(问非所答 / 语气反差 / 信息隐瞒等),每种附 1 段原文示例。}
- confidence: high | med | low
- 对话标签习惯:{说话动词多样性、动作替代说话标签的频率、对话与动作的穿插比例。}
- 角色语气区分:{主角和 1-2 个核心配角的口头禅/句式差异,引用原文样本句。}
## 情绪交替模式
- 章内基调切换:{统计章节内情节点基调序列——典型章节是否在 紧张↔轻松 或 热血↔温馨 之间切换、切换频率(每章 N 次)。}
- confidence: high | med | low
- 跨章基调周期:{前 20 章「章基调」序列,识别“虐 3 章爽 1 章”之类周期。}
- 喜剧↔重击的转场手法:{对标书在 轻松→悲伤 锐角转场时用了什么手法,举 1-2 个原文锚点。}
## 可借鉴技巧(从 拆文报告.md 直接引用)
- 写法技巧 Top 5:
1. {技巧名}:{一句话用法说明}
2. ...
- 可借鉴套路 Top 3:
1. {套路名}:{适用场景}
2. ...
## 分层模仿建议
- 基础层(必学):{词汇偏好、句式节奏、对话标签、描写重心中最容易迁移的 3-5 条;只学表达习惯,不复制原句}
- 进阶层(结构):{节奏推进、伏笔埋回、视角切换、场景衔接中最值得复用的 3-5 条;替换人物/场景/道具后再使用}
- 适配层(本书化):{哪些技法适合当前项目,哪些会导致人设/题材错位;明确不要搬运专名、标志性台词、独特桥段和事件顺序}
## 原文锚点片段
> 每片段 300-500 字,**用于 narrative-writer 写作时的范例片段**。从 `原文/原文.txt` 按章节分隔符切片。模仿手法、不抄字句。
### 片段 A — 基调:紧张
**出处**:第 {K} 章 第 {段号} 段(行 {L1}-{L2})
**示范点**:{句长节奏(该处长短如何分布) / 标点位置 / 一笔两用 等}
```
{300-500 字原文}
```
### 片段 B — 基调:悲伤/压抑
**出处**:第 {K} 章 第 {段号} 段(行 {L1}-{L2})
**示范点**:{对话潜台词手法}
```
{300-500 字原文}
```
### 片段 C — 基调:轻松/搞笑
**出处**:第 {K} 章 第 {段号} 段(行 {L1}-{L2})
**示范点**:{句子节奏 / 角色语气区分}
```
{300-500 字原文}
```
### 片段 D — 基调:热血/爽点
**出处**:第 {K} 章 第 {段号} 段(行 {L1}-{L2})
**示范点**:{爽点铺放比 / 动作描写句长}
```
{300-500 字原文}
```
> 优先覆盖项目可能用到、且对标书中样本充足的基调:紧张、悲伤/压抑、轻松/温馨、热血。按拆文里实际分布挑 4-6 段;缺哪个基调就写“本书该基调样本不足,跳过”,不要编造。
## 不可模仿
- {对标书的明显缺陷或不适合当前项目的技法。可选段落,可空。}
```
## confidence 字段语义
| 值 | 触发条件 | 下游处理 |
|---|---|---|
| `high` | 数据直接可读(如基调序列从摘要 grep 得出) | narrative-writer 优先采纳,覆盖默认 Gate |
| `med` | 从样本归纳且样本充足(如看章节基调走向、对话潜台词整理) | narrative-writer 参考,与默认 Gate 协商 |
| `low` | 样本不足/原文缺失 | narrative-writer 让位回默认 Gate(不强制采纳) |
## 可用性语义
- `文风可用:是` → 文风可用于写作,narrative-writer 按 confidence 分级使用。
- `文风可用:否:{原因}` → 文风质量不足(例如原文缺失、锚点全是占位符)。story-explorer 读取时返回 `gaps.profile_degenerate: true`,narrative-writer 跳过文风,按默认 Gates 写作,避免被误导。
## 覆盖与不可模仿原则
- **覆盖**:文风优先级排在 Gate D(节奏调整)、Gate B(句式去套路)、标点默认习惯之上——这些 Gate 是去 AI 味的**默认值**,文风有更具体的指令时文风赢。
- **不可覆盖(硬约束)**:banned-words / Gate F 章末禁升华 / 禁止万能/堆叠比喻 / 禁止章末预告 / 字数下限——这些硬约束永远赢,即使文风示范了相反的用法。
精确决议表见 `.claude/agents/narrative-writer.md` 的“被调用协议”段。
SKILL.md›
---
name: story-long-analyze
version: 1.0.0
description: "长篇网文拆文。深度拆解爆款长篇小说的黄金三章、人设架构、爽点设计、节奏控制。单一深度拆解管道:跑完黄金三章(Stage 1)后产出快速预览报告并询问是否继续全量拆解,确认后从 Stage 2 续跑逐章摘要、聚合分析、设定关系、汇总报告,全程产物落盘 拆文库/{书名}/。触发方式:/story-long-analyze、/长篇拆文、「帮我拆这本书」「拆这本书」「分析黄金三章」「深度拆解」「完整拆解」「系统拆解」或提供小说文本文件路径——全部进入同一管道。"
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
---
# story-long-analyze:长篇网文拆文
你是网络小说结构分析师。
**核心信念:看懂别人的爆款,才能写出自己的爆款。**
---
> Agent 兼容性:只检查当前运行时的 canonical 目录:Claude `.claude/agents/{agent}.md`、OpenCode `.opencode/agents/{agent}.md`、Codex `.codex/agents/{agent}.toml`、Antigravity `.agents/agents/agent-name/agent.md`(`agent-name` 为目标 agent 名),不得因其他端文件存在而误判。Codex 使用同名 `agent_type`;Antigravity 使用 `invoke_subagent` + `TypeName`。对应运行时未暴露 custom-agent registry / `invoke_subagent` 或返回未知 agent 时,必须降级 solo/direct。检测到 `.zcode/` 时同样直接 solo/direct,因为 ZCode 3.3.4 不执行项目 custom agents;报告 `Fallback: project custom agents unavailable -> solo`。Claude/OpenCode 兼容面保留 `subagent_type`。
>
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 28` 不一致时(标记缺失、字段缺失/非整数、小于或大于 28)**照常按文件存在性检查并 spawn**,同时报告 `Notice: agents bundle 版本不匹配(项目 {N},本版 28)` 并提示重新运行 `/story-setup` 后新开会话;大于 28 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告 `Fallback: ... -> solo`。
## 拆解边界声明(主线程同样适用)
你亲手做的**黄金三章深度拆解(Stage 1)、Stage 2 串行降级逐章处理、以及 Stage 3-6 的聚合/设定/报告/文风合成**,与 chapter-extractor 子代理遵循同一逻辑:拆的是用户**合法持有、拥有使用权**的虚构作品(已出版/连载或自有),性质是**只读的转化性文学批评**(编辑/评论/写作教学视角,不复制、不传播、不指导现实行为)。通俗题材里的家暴、出轨、复仇、暴力、情爱张力、黑暗伦理是常规虚构叙事元素,须照常做结构化提取,**不得以「敏感」「不适」为由拒绝整章或整本**——主线程拒绝会让整条自动化流水线停摆;个别片段无法处理则跳过、照常续完其余。
---
## Phase 1:确认拆解对象 + 进入管道
问用户:**「你要拆哪本书?(书名+平台)有原文文件路径吗?」**
如果没有明确目标,按题材或用户想写的类型推荐 2-3 本对标作品。
### 统一入口
确认拆解对象后直接进入拆解管道(Phase 2)。**没有快速/深度分叉**——只有一条深度拆解管道,跑到 Stage 1(黄金三章)后自动停靠产出快速预览报告。
**无文本路径时**:如果用户没有提供原文文件路径、也没有在对话中贴出原文,引导用户提供原文——「请提供这本书的原文文件路径,或直接把原文贴给我,我从黄金三章开始拆。」拿到原文后进入管道。
---
## Phase 2:深度拆解管道
### 输出目录
默认输出到 `拆文库/{书名}/`(项目根目录下)。用户指定了其他路径时按用户指定路径输出。
### 已有分析利用
**深度拆解开始前,检查是否已有部分拆解结果**:
1. 检查 `拆文库/{书名}/` 目录下是否存在已有的拆文文件
2. 如果存在 _progress.md,读取断点信息,从断点恢复(已有恢复机制)
3. 如果存在 角色/*.md 或 设定/*.md,读取已有的角色和设定数据
4. 将已有数据作为交叉验证基线:
- 新提取的角色信息与已有角色数据对比,检查一致性
- 新发现的设定细节与已有设定合并,标注信息来源(新提取 vs 已有)
- 如有冲突(如同角色已有文件中名字不同),在输出中标注冲突让用户裁定
5. 避免重复提取已有信息
### 原文备份(管道前置步骤)
**拆解开始前,必须先备份原文**:
1. 检查 `拆文库/{书名}/原文/` 目录是否已存在
2. 如果不存在,从用户提供的源路径复制原文文件到 `拆文库/{书名}/原文/`
3. 如果用户未提供源文件路径(直接在对话中贴文本),将原始文本保存到 `拆文库/{书名}/原文/原文.md`
4. 备份完成后验证:
- 源文件路径模式:确认 `原文/` 目录下的文件数量和大小与源文件一致
- 对话贴文本模式:确认 `原文.md` 文件非空(>0 bytes)
### 输出目录结构
```
拆文库/{书名}/
├── 原文/
│ └── 原文.txt # 扩展名随源文件;对话直接贴入的文本存为 原文.md
├── 概要.md
├── 章节/
│ ├── 第1章_深度拆解.md
│ ├── 第2章_深度拆解.md
│ ├── 第3章_深度拆解.md
│ ├── 第1章_摘要.md
│ └── ...
├── 快速预览.md
├── 角色/
│ ├── {角色名}.md
│ └── 角色关系.md
├── 剧情/
│ ├── {剧情标题}.md
│ ├── README.md # 剧情目录索引:节奏/情绪模块/故事线的权威范围
│ ├── 故事线.md
│ ├── 节奏.md # 关键信息推进 / 爽点循环 / 情绪触动点 / 爆发节奏
│ ├── 情绪模块.md # 读者需求 / 情绪引擎 / 可复现模块卡
│ └── 散落情节.md
├── 设定/
│ ├── 世界观/
│ │ ├── 背景设定.md # 核心规则 + 特殊设定(无法独立的内容合并)
│ │ ├── 力量体系.md
│ │ ├── 地理.md
│ │ └── 金手指.md
│ └── 势力/
│ └── {势力名}.md # 内容 >= 200 字时独立;不足合并到 世界观/背景设定.md
├── 拆文报告.md
├── 文风.md # Stage 6 文风:句长/标点/对话潜台词/情绪交替 + 原文锚点范例片段
└── _progress.md
```
> **权威产物**:`剧情/README.md` 说明剧情目录内各文件权威范围;`剧情/节奏.md` 是节奏/关键信息推进/情绪触动点的权威索引;`剧情/情绪模块.md` 是读者需求、情绪引擎、套路框架和可复现模块卡的权威索引。`拆文报告.md` 与 `剧情/故事线.md` 只做摘要投影;若摘要与这两个文件冲突,下游写作以 `剧情/节奏.md` / `剧情/情绪模块.md` 为准。
### 管道主体:Stage 0-6
这是 story-long-analyze 唯一的执行管道。Stage 0-1 跑完后**自动停靠**产出快速预览报告(见下「Stage 1 停靠点」),用户确认后从 Stage 2 续跑。
**预期耗时提示**:开始前根据章节数给用户一个粗估:<50 章通常 30-60 分钟;50-200 章通常 1-3 小时;>200 章可能需要多轮会话。Stage 2 可并行提取,但 Stage 3-6 仍依赖前序产物,需按阶段推进。
| 阶段 | 名称 | 输入 | 输出 | 完成标志 |
|------|------|------|------|----------|
| 0 | 概要提取 | 原始文本 | 概要.md(**首版 200 字 thin first-pass** + 章节索引;full plot-aware 500-1000 字版在 Stage 5 落盘覆盖)+ **Stage 0 章节边界子步骤将边界表写入 `_progress.md`**(详见下方说明) | 章节结构识别完成 + 章节边界落盘 |
| 1 | 黄金三章 | 前3章原文 | 第1章_深度拆解.md / 第2章_深度拆解.md / 第3章_深度拆解.md(每章一个文件)。非人形反派(灵气复苏/末世/国运等抽象对抗型)出现在前三章时,在本阶段一并按抽象对抗型路由分析(核心对抗面/紧迫感来源/升级机制/叙事替代)。 | 3章拆解完成 → **停靠产出快速预览.md** |
| 2 | 逐章摘要 | 分块章节文本 | 章节摘要.md(含情节点+角色+**关键信息与扩写技法**+**逐章写法公式**)。逐章写法公式必须提取情绪流向、节奏配比、结构公式、核心技巧、章尾卡点与伏笔。角色过滤(龙套不提取、别名归类)。每章10-40情节点(密度150-200字/个,按字数动态调节;公式低于10时仍按硬下限10拆足关键步骤)。**并行模式:每章 spawn chapter-extractor agent**。**计数验证:摘要数 == 章节数,不等则标记失败章节**。 | 所有章节处理完成 |
| 3 | 聚合分析 | 全部章节摘要 | 剧情/*.md + README.md(含权威分工表与**剧情单元清单**索引)+ 故事线.md + **节奏.md + 情绪模块.md**。**故事框架识别**(前置,决定聚合策略)。**两步法剧情聚合**(先从摘要识别剧情大纲,再按大纲分配情节点)。**关键信息推进索引**(按章节/剧情单元追踪信息如何被扩写)。**情绪触动点与爆发节奏**(爽点/虐点/期待点的铺垫→释放→余波)。**全书情绪节奏总览**(情绪折线、爽点频率、小/中/大高潮位置、冲突升级路径、跨章伏笔地图、小/中/大循环单元)。**读者需求 / 情绪引擎 / 爽文套路框架**(沉淀为可复现模块卡)。**角色合并**(跨章节去重+别名归一)。**角色分级**(主角/反派/核心配角/功能角色)。**散落情节兜底**(6步,含覆盖率验证)。**桥段标签**(每个剧情模块按 deconstruction-notes.md 桥段词表打标,best-effort,无匹配留空)。**质量检查**(阈值详见 material-decomposition.md 质量阈值体系)。 | 质量检查通过 |
| 4 | 设定+关系(4a/4b/4c) | **4a**:Stage 2 情节点+章节摘要(不依赖 Stage 3,与 3 并行);**4b/4c**:Stage 3 合并后角色数据+情节点 | 设定/*.md + 角色/*.md。**4a 设定**(世界观/金手指/势力,从 Stage 2 mention 数据归纳)。**4b 角色完整档案**(两阶段模型:Stage 2 轻量提及 → Stage 4b 完整档案;别名解析置信度≥0.85自动合并)。**4c 角色关系提取**(从情节点提取,不从原文;含演变追踪+最终状态合并+隐含推断)。非人形反派在 4a 做完整抽象对抗型分析。 | 4a/4b/4c 全部完成 |
| 5 | 汇总报告 | 全部输出 | 拆文报告.md(含「读者需求 / 情绪引擎」「关键信息与扩写技法总览」「全书情绪节奏总览」「节奏与情绪触动点」「循环单元」「跨章伏笔地图」「冲突升级路径」「可复现模块」摘要,并指向 `剧情/节奏.md` / `剧情/情绪模块.md`;含「写法技巧」清单,覆盖一笔两用/延迟揭示/视角欺骗/对比锚点/行为循环/身体反应替代心理描写/**跨章回扣**——物品/意象在不同章节承担不同功能)+ **概要.md 全书 500-1000 字版**(plot-aware,覆盖 Stage 0 的 200 字 thin first-pass) | 报告 + 全书概要生成完成 |
| 6 | 文风 | 拆文报告.md + 章节/第1-3章_深度拆解.md + 章节/*_摘要.md + 原文/原文.txt | 文风.md(整书级写作技法视图:句长/标点/对话潜台词/情绪交替周期 + 4-6 段原文锚点范例片段 + 分层模仿建议,硬上限 ~4000 字。详见 [style-profile-protocol.md](references/style-profile-protocol.md) + [style-profile-generator.md](references/style-profile-generator.md)) | 文风落盘 `拆文库/{书名}/文风.md` |
### Stage 0 章节边界子步骤
Stage 0 完成概要 + 章节索引之后、转入 Stage 1 之前,**必须**额外产出一份「章节边界」表写入 `_progress.md`。这是后续 Stage 1(黄金三章原文切片)/ Stage 2(每章传给 chapter-extractor agent)/ Stage 6(文风采样)共用的**唯一切片来源**——避免每个阶段各跑一次 regex 切片,结果可能不一致。
操作:
- 用 `style-profile-generator.md` Step 4 的章节正则(含 千/两,覆盖 1000+ 章)grep 出全部章节行号
- **先剔掉目录块**:不少原文开头带一段目录,目录里的 `第N章` 同样顶行,会和正文章节行重复命中,不处理就会切出两个「第一章」。判据是行距——目录块内相邻命中只隔一两行,正文章节之间隔着整章篇幅。算相邻命中的行号差,把文件开头那段「行距持续远小于全体中位数」的连续命中整块丢弃
- **剔完仍有重复章号时不要自行取其一**:多卷书每卷从「第一章」重起是合法结构。这种情况在标题列保留卷号消歧(如 `卷二 第一章`),章号列按全书连续序号重编
- 按 `| 章号 | 标题 | 起始行 | 字数 |` 四列写入 `_progress.md` 的「章节边界」section(见 [pipeline-ops.md](references/pipeline-ops.md) 模板)
- 落表前校验章号连续、无重复、无跳号;不满足就停下报告,不要带着错表进 Stage 1——Stage 1/2/6 都以这张表为唯一切片真值,错一次会一路错到底
- `_progress.md` 顶部 `schema_version: 2` 同时落盘
**恢复前置条件**:续跑只接受 `schema_version: 2` 且包含「章节边界」表的 `_progress.md`。缺失或结构不完整时停止续跑,提示从 Stage 0 章节边界子步骤重建进度文件,避免不同阶段使用不同切片真值。
### Stage 1 停靠点
Stage 0+1 完成后,管道**自动停靠**,产出快速预览报告并询问用户是否继续全量拆解:
1. **生成停靠交付物**:写 `拆文库/{书名}/快速预览.md`(模板见 [output-templates.md](references/output-templates.md) 的「快速预览报告」)。此时 `概要.md`、`章节/第1章_深度拆解.md`、`章节/第2章_深度拆解.md`、`章节/第3章_深度拆解.md`、`原文/` 均已落盘。
2. **写停靠状态**:`_progress.md` 的「最终状态」字段写 `paused_after_stage1`,「断点」段记录「下一操作:Stage 2 逐章摘要」。
3. **询问用户**(用 AskUserQuestion 风格的明确二选一):
> 「黄金三章已拆完,快速预览报告见 `快速预览.md`。是否继续全量拆解(Stage 2-6:逐章摘要 / 聚合分析(含 `剧情/节奏.md`、`剧情/情绪模块.md`)/ 设定关系 / 汇总报告 / 文风)?预计耗时 {基于章节数粗估}。」
- 选「继续全量拆解」→ 读 `_progress.md`,从 **Stage 2** 续跑,**不重跑 Stage 0/1**。
- 选「就到这里」→ 管道结束,`_progress.md` 状态保持 `paused_after_stage1`,告知用户「之后可随时 `/story-long-analyze` 同一本书,会自动从 Stage 2 续跑」。
4. **跳过询问的情形**:用户在一开始就明确说「完整拆解 / 一次跑完 / 系统拆解 / 别问」时,仍生成 `快速预览.md`(保留早期判断快照),但**不停下询问**,直接从 Stage 2 续跑到 Stage 6。
### Stage 5 后:选题决策回填(可选)
`拆文报告.md` 出来后(Stage 5 跑完)执行——和 Stage 6 无关,Stage 6 失败也不影响这步。
先定位 `选题决策.md`:项目根有就用它。项目根没有 → 从项目根及其上一级目录起、向下最多 3 层按文件名搜(跳过隐藏目录),按 mtime 由新到旧取最新 3 份。回填是写文件,项目根之外的文件写之前必须先确认:搜到 1 份 → 报出路径问「把本书的拆解支撑回填进这份吗?」;搜到多份 → 用 AskUserQuestion 列候选(路径 + `扫榜日期` + 「都不回填」)。用户不选 → 记「未回填」跳过,不动任何文件。
**仅当**定位到 `选题决策.md`(项目根那份直接用;项目根之外的那份须经上面的确认)时:按本书题材,在它的推荐选题里找**题材关键词对得上**的那个——
- 正好对上一个 → 把该选题的"能爆的原因"从 `待拆文验证` 改成带出处的支撑:「本书拆解支撑:{`拆文报告.md` 的 读者需求/情绪引擎 + `剧情/情绪模块.md` 的可复现模块 Top + `剧情/节奏.md` 的爽点/触动点节奏摘要}(`拆文库/{书名}/拆文报告.md`、`剧情/情绪模块.md`、`剧情/节奏.md`)」。注意还只是假设(只拆了一本,不算坐实)。
- 对上多个 / 拿不准 → 问用户「《{书名}》对应选题决策里的哪个方向?」
- 一个都对不上 → 记录「无匹配选题,未回填」,不改文件。
- `选题决策.md` 缺少当前契约必需的「能爆的原因」字段 → 报告 `invalid_topic_decision_contract`,提示重跑 `story-long-scan` Phase 5 生成当前文件;不猜测、不静默回填,拆文主流程仍可完成。
- 重复拆文不覆盖:只回填还标着 `待拆文验证` 的;已经填过的不动。
工作区里搜不到 `选题决策.md` → 直接跳过,不影响拆文。
### Stage 6 文风
`文风.md` 只负责表达层风格;情绪/节奏意图仍以 `剧情/情绪模块.md` 与 `剧情/节奏.md` 为权威。
原文缺失或章节分隔符识别不出 → 在 `文风.md` 的「生成记录」写明 `文风可用:否:{原因}`。Stage 6 失败不阻断管道。
### Stage 3-4 并行执行
**并行执行图**:
```
Stage 3(剧情聚合 + 角色合并) ──┐
├── 4a 与 Stage 3 可并行
Stage 4a(设定:世界观/金手指/势力) ──┘
│
▼(Stage 3 + 4a 都完成后)
Stage 4b(角色完整档案)— 串行,依赖 Stage 3 合并后的角色实体
│
▼
Stage 4c(角色关系提取)— 串行,依赖 4b 角色实体存在
```
4a 数据源是 Stage 2 摘要故可与 3 并行;4b/4c 依赖 Stage 3 角色合并故串行。
### 部分失败容忍
单章/单阶段失败不阻断管道。失败记录到 `_progress.md` 的「失败记录」表(`| 类型 | 章节/阶段 | 错误信息 | 重试状态 |`)。最终状态可为 `completed_with_errors`(在拆文报告中注明失败详情)。
> 与 material-decomposition.md 的对应关系:Stage 0 含 Material 阶段1(章节解析);Stage 1、5 为新增;Stage 2 = Material 阶段2;Stage 3 = Material 阶段3;Stage 4 合并 Material 阶段4+5。
详细模板见 [output-templates.md](references/output-templates.md),方法论见 [material-decomposition.md](references/material-decomposition.md)。
---
## 质量检查概要
Stage 3-4 完成前需通过质量检查(置信度、覆盖率、重叠率)。阈值、计算方式与自检清单的唯一权威定义见 [material-decomposition.md 质量阈值体系](references/material-decomposition.md)。
**Stage 3-5 还须过「事实可溯源」自检**:设定/角色/报告里的硬事实(等级/数值/距离/属性/势力数/出场章/谁说的话)必须能 grep 回原文,原文没给的写「原文未明确」、禁推断填空。这是拆文事实错误的最大来源(强模型也会漂移,因为合成阶段离原文两跳、靠合理性填空)。详见 [material-decomposition.md 合成阶段事实保真](references/material-decomposition.md)。
---
## Stage 2 并行 Agent 策略
Stage 2 使用 chapter-extractor agent 并行处理每章,替代原来的串行分块。
### 调用方式
每条章节 prompt **必须以「材料声明」前缀开头**(即下方 prompt 字符串首段)——给子代理正确语境,避免它把通俗题材的正常戏剧化剧情误判为有害内容而拒绝拆解。前缀是固定文本,逐字带上,不要改写或省略。
```python
Agent(
subagent_type: "chapter-extractor",
prompt: "[材料声明] 以下为用户合法持有的虚构小说,任务是只读的转化性文学分析(编辑/评论视角)。暴力/复仇/家暴/情爱/黑暗伦理是该题材常规虚构元素,照常提取,不得以敏感拒绝整章或整本;个别片段无法处理则跳过、照常续完其余。\n\n章节编号:第{N}章\n章节标题:{标题}\n章节字数:{字数}\n\n章节原文:\n{原文文本}\n\n[情节点格式要求] 模板里的 {} 是占位标记,不要输出花括号本身:写「类型信息揭示」,不写「类型:信息揭示」或「类型{信息揭示}」。主题标签只填一个值,不要用 / 、 ,或空格并列多个。空字段统一写「无」,不要用「—」,涉及段不可省略。每个情节点后紧跟自己的那一行「主题标签X | 基调:Y」,不要把标签行堆到文件末尾。正确样例:\nP7 **龙血针检测**:类型信息揭示 | 许七安用龙血针验出对方身份,当场揭穿 | 涉及许七安,郑兴怀 | 地点府衙后堂 | 物品龙血针 | 时间入夜\n主题标签悬念 | 基调:紧张\n\n[输出前自检] 交付前逐条核对:① 文本里没有 { 或 };② ^P 行数 == 主题标签行数 == 基调:行数;③ 每个主题标签只有一个值;④ 每个 P 行都含类型、白描、涉及三段。任何一条不符,先改再输出。"
)
```
> 上面的 `[情节点格式要求]` / `[输出前自检]` 两段由主线程在 spawn 时拼进 prompt,**不依赖项目里已部署的 agent 文件版本**——老项目不重新跑 `/story-setup` 也能拿到这份格式约束。sonnet 升级重试沿用同一段。
### 批量策略
- 每次 spawn 5-8 个 agent(避免并发限制)
- 等待当前批次全部完成后,再 spawn 下一批
- 每批完成后更新 `_progress.md` 记录已处理章节
### Agent 输出收集
- 每个 agent 返回 markdown 格式的提取结果
- 主线程将 agent 输出写入 `章节/第{N}章_摘要.md`
- 收集所有 agent 的出场人物表,供 Stage 3 合并使用
### 失败处理 + 质量升级重试
**两类失败**:
1. **执行失败**(agent crash / 超时 / 空输出)→ 同模型(haiku)重试 1 次
2. **质量失败**(输出落盘后跑 chapter-extractor.md「质量检查」12 条自检,任一不达标——典型:情节点 < 10、P 行缺白描、概要写成条目罗列或整段「因为…所以…」串联、类型/基调/主题标签超出枚举、`基调:` 漏全角冒号、角色名为昵称/通用称呼)→ **升级到 sonnet 重试 1 次**
**可机械校验的硬检查**(主线程落盘后直接 grep,命中即判质量失败,不依赖 agent 自报):
- 情节点数 `N = grep -cE '^P[0-9]+ '`;`grep -c '基调:'` 必须 == N(少于 N = 有情节点漏 `基调:` 或漏全角冒号 → 下游 Stage 6 文风采样按全角 `基调:` grep,会静默漏章)
- 白描段有内容:`grep -cE '^P[0-9]+ [^|]+\|[^|]*[^|[:space:]][^|]*\|[^|]*涉及'` 必须 == N(`涉及` 段前要有两个 `|`,即 类型段与白描段各占一段,且白描段不能只有空白;少于 N = 有情节点缺白描,或字段顺序/分隔符不对。白描是情节点的主要证据,引用改为精选后由它承担事实回查)
- `grep -hoE '基调:[^ |]+'` 去重后 ⊆ {紧张, 轻松, 悲伤, 热血, 爽, 甜, 温馨, 恐怖, 压抑, 其他}
- `grep -hoE '主题标签[:]?[^ |]+'` 去重(去 `主题标签`/冒号前缀后)⊆ {爱情, 亲情, 友情, 权力, 金钱, 成长, 复仇, 悬念, 搞笑, 热血, 日常, 其他}(出现 `主题标签:` 带冒号、或值为基调词均判失败)
> **硬检查就是上面 4 条,没有更多。** 格式漂移主要靠 spawn prompt 与 agent 模板里的格式约束**事前预防**,不靠事后再加校验:花括号残留、标签行位置、空字段占位这类变体只影响可读性,下游没有消费方(Stage 6 文风只 grep `基调:`),为它们新增校验只会让本可用的章节触发重跑。**因此已经落盘的 `章节/*_摘要.md` 不会因为本次格式说明而变成「不合格」,无需重新生成**;老摘要里的 `类型{行动}`、`物品—` 等写法照旧可用,Stage 3-6 读取行为不变。
**升级重试调用方式**(主线程在校验失败后执行):
```python
Agent(
subagent_type: "chapter-extractor",
model: "sonnet", # 显式覆盖 frontmatter 的 haiku
prompt: "章节编号:第{N}章\n...(同首次 prompt,含开头的「材料声明」前缀,可追加:'上次校验失败原因:{自检失败项}')"
)
```
**最终落盘规则**:
- haiku 首次通过 → 写入 `章节/第{N}章_摘要.md`,`_progress.md` 标记 `success`
- haiku 失败 + 同模型 retry 通过 → 同上,备注 `retry_same_model`
- 质量失败 + sonnet retry 通过 → 同上,备注 `retry_sonnet`
- sonnet retry 仍失败 → 章节标记 `⚠️ 跳过`,失败原因写入 `_progress.md` 「失败记录」表,拆文报告中注明
- 单章失败不阻断管道;批次全部 spawn 完成后才决定是否进入 Stage 3
### Agent 不可用降级
以下任一情况,Stage 2 自动退回串行模式,由主线程逐章处理(质量不受影响,只是改为串行、速度略慢)。**两条路径的要求是同一份**:串行时概要写法、情节点白描、原文引用精选规则和输出自检都按 [output-templates.md](references/output-templates.md)「Stage 2 章节摘要+情节点」执行;上面的机械硬检查串行同样要跑。串行没有 sonnet 升级重试这条路——硬检查命中时由主线程按失败项重写本章摘要 1 次,仍不过按 `⚠️ 跳过` 记入 `_progress.md` 「失败记录」表。
- **agent 未部署**:当前运行时的 canonical agent 目录未找到 `chapter-extractor.md` 或 Codex 同名 TOML。项目 agent 通常不随写作仓库预置,应重新运行 `/story-setup` 完成当前适配器部署,不跨 Skill 读取模板源。
- **环境不支持 spawn 子代理**:本 skill 正运行在某个子代理上下文中,无法再起下一层 agent。
### Stage 2 收尾:合并章节摘要(_章节摘要汇总.md)
Stage 2 所有 `章节/*_摘要.md` 落盘后、进入 Stage 3 前,主线程把它们按章号顺序**无损拼接**成 `拆文库/{书名}/_章节摘要汇总.md`(只拼接、不压缩、不改写):
```bash
ls 章节/*_摘要.md | sed -E 's/.*第([0-9]+)章.*/\1 &/' | sort -n | cut -d' ' -f2- | while read -r f; do cat "$f"; echo; done > _章节摘要汇总.md
```
**无损检查**(拼接后校验,任一不过即删除 `_章节摘要汇总.md`、回退逐文件扫描,行为不变):
- `grep -cE '^P[0-9]+ ' _章节摘要汇总.md` == 各摘要 `^P` 行数之和
- `grep -cE '^\*\*概要\*\*' _章节摘要汇总.md` == 摘要文件数(`**概要**` 每章一行,chapter-extractor 并行输出与串行摘要模板都有;不用 `## 第N章` 头——串行摘要模板没有章节头,会误判)
Stage 3 / 4a / 4c / 散落情节兜底改为**只读一次 `_章节摘要汇总.md`** 并在上下文中复用,替代每阶段 `glob 章节/*_摘要.md` 重扫(同一份语料的 4-5 次冷读降为 1 次)。
**仅当语料能放进上下文时才生成汇总文件**:>500 章、或合并后 `_章节摘要汇总.md` 过大放不进上下文时**跳过本步骤**,改走 [material-decomposition.md](references/material-decomposition.md)「处理批次 → A. 子代理并行模式」:按 10-20 章/批 spawn 子代理,子代理在自己上下文里读该批摘要、只回传 ≤8K tokens 的降维聚合,主线程仅合并聚合结果(必要时分层两两合并)。**主线程不逐章读原始摘要**——跳过汇总文件不等于回到逐文件扫描,那对大书同样放不下。`_章节摘要汇总.md` 不替代 `章节/*_摘要.md`——单章文件仍是落盘真源,Stage 6 文风采样、人工复核照用单章文件。管道结束(Stage 6 后)删除 `_章节摘要汇总.md`——它是派生临时文件,不随 `拆文库/` 交付(`拆文库/` 会被 story-import 保留为写作工程)。
Stage 3-5 分块见 [material-decomposition.md](references/material-decomposition.md)(唯一权威)。
---
## 恢复机制
启动时检查 _progress.md;`paused_after_stage1` → 直接从 Stage 2 续跑。
操作步骤见 [pipeline-ops.md](references/pipeline-ops.md)。
---
## 流程衔接
**流水线:** 长篇
**位置:** 拆文(长篇流水线第 2 步,在 story-long-scan 之后、story-long-write 之前)
| 时机 | 跳转到 | 命令 |
|---|---|---|
| 准备开写 | story-long-write | `/story-long-write` |
| 需要市场数据 | story-long-scan | `/story-long-scan` |
| 更适合短篇 | story-short-scan → story-short-analyze | `/story-short-scan` |
---
## 参考资料
| 文件 | 何时加载 |
|------|----------|
| [references/output-templates.md](references/output-templates.md) | 管道全程:各 Stage 输出模板 + 快速预览报告模板 + `剧情/节奏.md` / `剧情/情绪模块.md` 模板 + 通用速查表 |
| [references/material-decomposition.md](references/material-decomposition.md) | Stage 2-5:素材拆解方法论 + 质量阈值 + 分块策略;Stage 6 另见文风资料 |
| [references/pipeline-ops.md](references/pipeline-ops.md) | 管道运维:_progress.md 模板、错误处理、恢复机制操作步骤 |
| [references/deconstruction-notes.md](references/deconstruction-notes.md) | 拆书方法+影视拆解+抽象拆解法+题材实战 |
| [references/style-profile-protocol.md](references/style-profile-protocol.md) | Stage 6:文风模板 + 可信度/可用性说明 |
| [references/style-profile-generator.md](references/style-profile-generator.md) | Stage 6:文风生成 SOP(6 步,含中文数字章节识别 + 全角冒号基调 grep) |
---
## 语言
- 跟随用户的语言回复,用户用什么语言就用什么语言回复
- 中文回复遵循《中文文案排版指北》