story-long-analyze
长篇网文拆文。深度拆解爆款长篇小说的黄金三章、人设架构、爽点设计、节奏控制。单一深度拆解管道:跑完黄金三章(Stage 1)后产出快速预览报告并询问是否继续全量拆解,确认后从 Stage 2 续跑逐章摘要、聚合分析、设定关系、汇总报告,全程产物落盘 拆文库/{书名}/。触发方式:/story-long-analyze、/长篇拆文、「帮我拆这本书」「拆这本书」「分析黄金三章」「深度拆解」「完整拆解」「系统拆解」或提供小说文本文件路径——全部进入同一管道。
Install
npx skills add https://github.com/zenstory-ai/oh-story-claudecode/tree/main/skills/story-long-analyze
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install zenstory-ai-oh-story-claudecode@llmmart
git clone https://github.com/zenstory-ai/oh-story-claudecode.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole zenstory-ai/oh-story-claudecode collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
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: 30不一致时(标记缺失、字段缺失/非整数、小于或大于 30)照常按文件存在性检查并 spawn,同时报告Notice: agents bundle 版本不匹配(项目 {N},本版 30)并提示重新运行/story-setup后新开会话;大于 30 时额外提示先更新 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:深度拆解管道
输出目录
默认输出到 拆文库/{书名}/(项目根目录下)。用户指定了其他路径时按用户指定路径输出。
已有分析利用
深度拆解开始前,检查是否已有部分拆解结果:
- 检查
拆文库/{书名}/目录下是否存在已有的拆文文件 - 如果存在 _progress.md,读取断点信息,从断点恢复(已有恢复机制)
- 如果存在 角色/.md 或 设定/.md,读取已有的角色和设定数据
- 将已有数据作为交叉验证基线:
- 新提取的角色信息与已有角色数据对比,检查一致性
- 新发现的设定细节与已有设定合并,标注信息来源(新提取 vs 已有)
- 如有冲突(如同角色已有文件中名字不同),在输出中标注冲突让用户裁定
- 避免重复提取已有信息
原文备份(管道前置步骤)
拆解开始前,必须先备份原文:
- 检查
拆文库/{书名}/原文/目录是否已存在 - 如果不存在,从用户提供的源路径复制原文文件到
拆文库/{书名}/原文/ - 如果用户未提供源文件路径(直接在对话中贴文本),将原始文本保存到
拆文库/{书名}/原文/原文.md - 备份完成后验证:
- 源文件路径模式:确认
原文/目录下的文件数量和大小与源文件一致 - 对话贴文本模式:确认
原文.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 + 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.mdStep 4 的章节正则(含 千/两,覆盖 1000+ 章)grep 出全部章节行号 - 先剔掉目录块:不少原文开头带一段目录,目录里的
第N章同样顶行,会和正文章节行重复命中,不处理就会切出两个「第一章」。判据是行距——目录块内相邻命中只隔一两行,正文章节之间隔着整章篇幅。算相邻命中的行号差,把文件开头那段「行距持续远小于全体中位数」的连续命中整块丢弃 - 剔完仍有重复章号时不要自行取其一:多卷书每卷从「第一章」重起是合法结构。这种情况在标题列保留卷号消歧(如
卷二 第一章),章号列按全书连续序号重编 - 按
| 章号 | 标题 | 起始行 | 字数 |四列写入_progress.md的「章节边界」section(见 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 完成后,管道自动停靠,产出快速预览报告并询问用户是否继续全量拆解:
- 生成停靠交付物:写
拆文库/{书名}/快速预览.md(模板见 output-templates.md 的「快速预览报告」)。此时概要.md、章节/第1章_深度拆解.md、章节/第2章_深度拆解.md、章节/第3章_深度拆解.md、原文/均已落盘。 - 写停靠状态:
_progress.md的「最终状态」字段写paused_after_stage1,「断点」段记录「下一操作:Stage 2 逐章摘要」。 - 询问用户(用 AskUserQuestion 风格的明确二选一):
「黄金三章已拆完,快速预览报告见
快速预览.md。是否继续全量拆解(Stage 2-6:逐章摘要 / 聚合分析(含剧情/节奏.md、剧情/情绪模块.md)/ 设定关系 / 汇总报告 / 文风)?预计耗时 {基于章节数粗估}。」- 选「继续全量拆解」→ 读
_progress.md,从 Stage 2 续跑,不重跑 Stage 0/1。 - 选「就到这里」→ 管道结束,
_progress.md状态保持paused_after_stage1,告知用户「之后可随时/story-long-analyze同一本书,会自动从 Stage 2 续跑」。
- 选「继续全量拆解」→ 读
- 跳过询问的情形:用户在一开始就明确说「完整拆解 / 一次跑完 / 系统拆解 / 别问」时,仍生成
快速预览.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-scanPhase 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,方法论见 material-decomposition.md。
质量检查概要
Stage 3-4 完成前需通过质量检查(置信度、覆盖率、重叠率)。阈值、计算方式与自检清单的唯一权威定义见 material-decomposition.md 质量阈值体系。
Stage 3-5 还须过「事实可溯源」自检:设定/角色/报告里的硬事实(等级/数值/距离/属性/势力数/出场章/谁说的话)必须能 grep 回原文,原文没给的写「原文未明确」、禁推断填空。这是拆文事实错误的最大来源(强模型也会漂移,因为合成阶段离原文两跳、靠合理性填空)。详见 material-decomposition.md 合成阶段事实保真。
Stage 2 并行 Agent 策略
Stage 2 使用 chapter-extractor agent 并行处理每章,替代原来的串行分块。
调用方式
每条章节 prompt 必须以「材料声明」前缀开头(即下方 prompt 字符串首段)——给子代理正确语境,避免它把通俗题材的正常戏剧化剧情误判为有害内容而拒绝拆解。前缀是固定文本,逐字带上,不要改写或省略。
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 合并使用
失败处理 + 质量升级重试
两类失败:
- 执行失败(agent crash / 超时 / 空输出)→ 同模型(haiku)重试 1 次
- 质量失败(输出落盘后跑 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 读取行为不变。
升级重试调用方式(主线程在校验失败后执行):
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「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(只拼接、不压缩、不改写):
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「处理批次 → A. 子代理并行模式」:按 10-20 章/批 spawn 子代理,子代理在自己上下文里读该批摘要、只回传 ≤8K tokens 的降维聚合,主线程仅合并聚合结果(必要时分层两两合并)。主线程不逐章读原始摘要——跳过汇总文件不等于回到逐文件扫描,那对大书同样放不下。_章节摘要汇总.md 不替代 章节/*_摘要.md——单章文件仍是落盘真源,Stage 6 文风采样、人工复核照用单章文件。管道结束(Stage 6 后)删除 _章节摘要汇总.md——它是派生临时文件,不随 拆文库/ 交付(拆文库/ 会被 story-import 保留为写作工程)。
Stage 3-5 分块见 material-decomposition.md(唯一权威)。
恢复机制
启动时检查 _progress.md;paused_after_stage1 → 直接从 Stage 2 续跑。
操作步骤见 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 | 管道全程:各 Stage 输出模板 + 快速预览报告模板 + 剧情/节奏.md / 剧情/情绪模块.md 模板 + 通用速查表 |
| references/material-decomposition.md | Stage 2-5:素材拆解方法论 + 质量阈值 + 分块策略;Stage 6 另见文风资料 |
| references/pipeline-ops.md | 管道运维:_progress.md 模板、错误处理、恢复机制操作步骤 |
| references/deconstruction-notes.md | 拆书方法+影视拆解+抽象拆解法+题材实战 |
| references/style-profile-protocol.md | Stage 6:文风模板 + 可信度/可用性说明 |
| references/style-profile-generator.md | Stage 6:文风生成 SOP(6 步,含中文数字章节识别 + 全角冒号基调 grep) |
语言
- 跟随用户的语言回复,用户用什么语言就用什么语言回复
- 中文回复遵循《中文文案排版指北》
Files (oh-story-claudecode)
-
references
-
deconstruction-notes.md 10.9 KB
# 长篇拆文参考 拆书方法论、结构设计、卖点循环、题材实战要点的速查手册。配合 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` 打「桥段标签」用的常见桥段词。命中就标,逗号分隔;不在表内但本书确有的桥段照实写,不硬凑、宁缺毋滥。**可扩展种子,不是封闭枚举。** | 题材 | 常见桥段 | |------|----------| | 都市/言情 | 打脸、扮猪吃虎、马甲掉落、先婚后爱、追妻火葬场、破镜重圆、替身、契约婚姻、萌宝助攻 | | 玄幻/修仙 | 废柴逆袭、扮猪吃虎、越级战斗、夺宝、护短打脸、绝境翻盘、机缘逆天 | | 历史/种田 | 先知先觉、改变历史、科举经商崛起、攒钱起家、技能点亮 | | 悬疑/无限 | 信息差、反转打脸、规则怪谈、身份揭穿、复盘解谜 | | 系统流 | 任务奖励、签到、面板升级、强制任务、积分兑换 | | 重生/穿越 | 前世复仇、改命、身份调换、双重生、未卜先知 | | 世情/家庭 | 极品亲戚、婆媳争斗、偏心打脸、维权反击、自我觉醒 | | 直播/两界 | 直播整活、低调用资源、两界差价、围观震惊 | --- ## 人设塑造 ### 第一章立人设 小事件展示性格→贴标签确立;紧急事件快速带入剧情;女角色第一步反应要体现性格。 ### 日常体现人设 重复出现符合人设的行为;配角功能化(嫉妒型:得意→嫉妒;崇拜型:质疑→佩服);配角情绪转变要写出。 ### 开篇逻辑 被动入局→交流了解世界观→陷入困境→明确目标→展示金手指→通过金手指收获 --- ## 素材转化 从热点提取:识别核心冲突→定主线方向→用经典框架填充素材。 ### 文体决定行文 | 文体 | 行文 | |------|------| | 打脸爽文 | 节奏快、描写少、言语凝练 | | 感情流 | 细水长流、细腻描写 | -
material-decomposition.md 30.6 KB
# 小说素材拆解方法论 --- ## 拆解流程 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 定位断点 - 从断点所在块的起始章节重新开始(覆盖该块已有输出) -
output-templates.md 32.3 KB
# 拆文输出模板 按需加载,配合 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)。 -
pipeline-ops.md 3.8 KB
# 管道运维参考 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. 其他断点状态 → 从断点所在块的起始章节恢复,覆盖该块已有输出 -
style-profile-generator.md 10.5 KB
# 文风生成 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 生成文风" 或 "重生 文风"。 -
style-profile-protocol.md 6.3 KB
# 文风协议 > **何时加载**: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 29.5 KB
--- 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: 30` 不一致时(标记缺失、字段缺失/非整数、小于或大于 30)**照常按文件存在性检查并 spawn**,同时报告 `Notice: agents bundle 版本不匹配(项目 {N},本版 30)` 并提示重新运行 `/story-setup` 后新开会话;大于 30 时额外提示先更新 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) | --- ## 语言 - 跟随用户的语言回复,用户用什么语言就用什么语言回复 - 中文回复遵循《中文文案排版指北》
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.