--- name: deconstruct-book description: 从完整存量作品逆向拆出章节细纲、阶段大纲、实体线索和脱敏写作范式。需要解析用户旧稿或参考书全书时使用;不负责把作品面知识按窗升格,也不确认产物。 disable-model-invocation: true --- # 全书解析/拆书(scenario: full_parse | purpose: extraction | 槽位: 分析→extractor) 何时用:**没拆过的完整/存量作品**。与章后抽取(extraction)的分工:那边是"已有大纲细纲、写新章后抽增量";这边是"什么都没有,从全文逆向解析出规划层与知识面"。 ## 两个子场景(产出归属不同) | 子场景 | 产出 | 归属与确认 | |---|---|---| | 2a 用户存量作品(U7/C8) | 章节结构+逐章细纲+全书大纲+实体/关系/事件+末章 narrative_state | 全为候选,**按章审阅确认**(产品-03 §3.7);确认后成正式规划与 Local KB,作品才可续写;脱敏红线不适用自有稿 | | 2b 系统参考书(G3/B1-B2,如封神演义) | 同上解析产物作**中间脚手架**(拆书证据链,留档、不需逐章确认)+在脚手架上拆**范式五型** | 范式卡(脱敏)入 Global,管理员确认=G3 门;脚手架标 internal | 范式五型也是 entity-scope 的型,但与作品实体分两批:作品实体归 Local、范式归 Global 且吃脱敏红线。 ## 元数据驱动 - 规划逆向的结构=`outline`/`chapter`/`scene`/`narrative_state` 字段合同;实体=各实体型字段合同;范式=五型字段合同+「判据」归型——schema 加字段,解析产出立刻多一列。 - 「细纲」是本仓先行的规划粒度层级(SoT 只有"正式规划项"),连同**规划逆向本身都是对产品-03 §3.7 的增补**(SoT 全书解析只列章节/实体/关系/事件)——待回填。 ## 编排形态 一本完整的书=成百上千次顺序调用,单个 agent 的上下文装不下也不该装。编排层是确定性 workflow(分章循环/断点续跑/入库/进度统计);循环体是 `scripts/parse_llm.py` 直调 New-API `MiniMax-M3`(经 `call-content-model`),输入=第 N 章原文+库里积累的脚手架,输出=本章细纲+实体增量,写回库。关键约束: - **状态全在库,不在会话**:前 N-1 章的细纲/实体是第 N 章的上下文,必须从库读; - **断点续跑与幂等**:已处理章号落库,重跑某章=按章号覆盖其 draft 行,随时可停可续; - **顺序性只来自增量判重**(新实体要对着已积累实体判重合并),细纲逆推本身章间独立; - 进度每 10 章报一行(章号/新实体数/累计分型统计)。 **出卡权上移窗级(B4-S3 重构,现行)**:章级逐章出卡有三同根病(同功撞车/单章证不成跨章公式/间隔数字伪精确),治法=章级只产「范式候选线索」(并入脚手架 pass,正文只过一遍),出卡在窗级聚类归并——同一手法多章多次出现归并成一张母卡+实例章号,**间隔章数由实例章号差机械计算**(M3 禁自报数字)。跨窗/跨书同手法靠**嵌入判重**(初筛 ≥0.85 → M3 归并终判 merge/keep,拿不准保留)。大纲窗行(example_parse_outline,幂等键=窗起始章)是出卡窗的唯一切分依据。 **放量全流程(每书五步,均 M3)**: ```bash # ① 章级 pass(细纲+实体+范式候选线索;断点续跑,重跑自动补失败章) .venv/bin/python .agent/skills/deconstruct-book/scripts/parse_llm.py chapters --work-id 4 --from 1 --to 50 # ② 窗级大纲聚合(每 5–10 万字:多章细纲+正文→阶段大纲;书末残窗无论大小必成窗) .venv/bin/python .agent/skills/deconstruct-book/scripts/parse_outline.py window --work-id 4 # ③ 窗级聚类出卡(窗=②的窗行;线索+细纲+阶段大纲→母卡;守卫+判重在 parse_ingest cards) .venv/bin/python .agent/skills/deconstruct-book/scripts/parse_llm.py cards --work-id 4 # ④ 全书拆完:终检(逐窗细纲对账大纲 + 跨段连贯性纵览) .venv/bin/python .agent/skills/deconstruct-book/scripts/parse_outline.py check --work-id 4 # ⑤ 公共卡三角色审核(番茄作家/起点作家/主编,M3 常设步骤;见 review-knowledge-cards Skill) .venv/bin/python .agent/skills/review-knowledge-cards/scripts/review_cards.py review --batch <批次> --work-id 4 # 进度 .venv/bin/python .agent/skills/deconstruct-book/scripts/parse_ingest.py progress ``` 审核纪律:常设审核=M3(已用 opus 金标准校准,偏差 0.45 达标);fable/opus 只做起量前校准与起量后一次总审核(门禁与优化,不进流程循环)。 试拆实测病理档(放量前须知):M3 细纲按比例会写超(治=绝对字数上限+压缩重试);type 一律标 craft 且串型混填(治=合同动态渲染+字段指纹改型+窗级聚类);重跑自噬(治=窗级幂等软删+0 卡不软删,章级判重名录已随 S3 废除);source 偷懒(治=出处由实例机械生成)。parse_ingest 的 patterns 命令是 S3 前章级出卡入口,仅留作回滚保险。 **窗行冲突(放量首日实测,现行机械门)**:`--window` 变化后若计划窗与存量窗同 `from_order`、不同 `to_order`,`window` 命令以 `WINDOW_PLAN_CONFLICT` 失败关闭——禁止「已有大纲跳过」吞掉新大窗。换窗重切必须显式 `--replace-windows`(单事务软删该书全部活窗行后再切)。出卡仍挂「窗起」,须随后重跑 `cards`。 ```bash .venv/bin/python .agent/skills/deconstruct-book/scripts/parse_outline.py window \ --work-id 4 --window 80000 --replace-windows ``` **作品面知识抽取与维护已拆分**:`extract-work-knowledge` 负责 `windows/run/status` 正常抽取;`backup-work-extraction` 负责七域备份与恢复,`reset-work-extraction` 负责全量重抽前重置,`repair-work-extraction` 负责单卡修复、presence 清理、legacy failed 恢复与存量迁移。拆书产出的章级细纲和实体脚手架是正常抽取输入;本 Skill 不含其 runbook。 **终态体检与样张已拆分**:跨拆书与升格两管线的只读核对工具(全链体检与样张导出)归 `inspect-parse-health`。顽固敏感章抢救 `scripts/parse_salvage.py` 是拆书章级的常设工具,留本 skill。 **范式线失败关闭(2026-07-21 假绿复盘后现行)**:`parse_outline.py window`、`parse_llm.py cards`、`parse_outline.py check` 是同一本作品的顺序流水线。普通网络/429/5xx 由 `chat_governed` 在单模型内短重试后沿 `MiniMax-M3 → MiniMax-M2.7 → glm-5.2 → deepseek-v4-flash` 降级;整条链耗尽,或功能层结构输出有限重试仍失败,必须**立即停止当前作品并保留断点**,禁止跳窗/跳型继续。`cards` 和 `check` 开始前机械验证大纲窗对全书章域无头部、中部、尾部缝隙;任一缝隙非零退出。补插窗后所有终检按 `from_order/to_order` 绝对章号排序并重新编号阶段,`window_no` 只作运行展示号,不得参与时序判断。 ## 步骤(自底向上,与创作期规划的自顶向下互为镜像) 1. 静态分章:`import-book` Skill(规则,LLM 不参与); 2. **逐章内环——复用 `extract-chapter-knowledge` 的字段 checklist**:逆推本章细纲(章目标/关键事件/出场/伏笔动作/钩子)+抽实体增量;上下文=前 N-1 章已积累的细纲与实体(知识库从空增量生长,`作品+元数据+知识库+当前章`公式在此逐章成立); 3. 自底向上聚合:章细纲→卷粗纲→主线一句话;伏笔跨章连线(哪章埋哪章收)在聚合时补; 4. 2a 补末章 narrative_state;2b 在脚手架上跑范式拆取(判据归型/字段成卡/判重合并例证); 5. 汇报:分章数/细纲覆盖率/实体分型统计/(2b)范式分型统计+设计发现。 ## 比例约束(防"摘要化伪装成结构化";创始人已拍板@2026-07-09,权威值在 outline schema 字段说明) - 章细纲/章正文 ≈ 3–5%(3000 字章→100–150 字);卷粗纲/卷正文 ≈ 0.3–0.5%;主线一句话 ≤50 字。 - **细纲是结构骨架,不是缩写**:超比例=机械退回重解析的判据——比例约束的价值不只是省 token,是防解析退化成压缩复述。 ## 脱敏红线(仅 2b 系统级) 只写抽象结构与手法归纳,严禁抄录原文;**≥15 连续字与原文重合=违规**;每卡带出处(书名+回目+一句话情节定位)。 ## 输出合同 文件版:2a 落 `works/<书>/`(候选);2b 脚手架落参考书目录、范式卡入 `knowledge/范式/`(草稿)。PG 版(B2):结构化清单经主会话 `access-database` 写入(draft)+`embed-knowledge` 嵌入。均不提交/不自确认。 ## 输入 - 用户明确点名本 Skill 所服务的创作阶段任务包(作品、章节/场景范围、冻结上下文摘要)。 - 只消费 本 Skill 的 `references/` 目录 中与当前阶段相关的合同段落。 ## 数据边界 - 读写范围限于本 Skill 合同声明的表/文件;失败整体回滚,不留半写入状态。 - 模型调用走统一网关;raw 证据由 `record-run-evidence` 归档。 ## 复利合同 - 窗大纲命令成功收尾后经 `propose_lesson_dedup` 登记 `example_lesson`(绑 work_id 与窗覆盖数)。 - 升格仍走人工评审,不自动把单书大纲升为公共范式。 ## 输入