---
name: book-slimmer
description: 五步法"读薄"拆书技能——把一本书压缩为原书约10%篇幅的结构化薄书而不丢失关键信息。支持两种输入：①用户上传 PDF/EPUB 文件（本地解析，出处精确到页码或段落锚点）；②只有书名（自动联网搜索目录/章节/读书笔记并交叉核验，出处精度到章节级）。触发场景：拆书、把书读薄、书籍精华提炼、结构化读书笔记、帮我读懂某本书、对某本书做要点总结；用户说"拆这本书/这本电子书/这个PDF/这个epub"时也触发。输出固定为薄书文档（一句话核心→全局地图→逐章论点×工具×论据→逻辑链→金句→批判评论→行动清单），可输出 Markdown 或 HTML。
agent_created: true
---

# Book Slimmer · 五步法读薄拆书

## 概述

将一本书"读薄"而不丢关键信息的结构化方法论。核心信念：**读薄不是删减，而是把书还原成骨架——论点、论据、逻辑结构，只留这三样**。丢掉的永远是"肉"（修辞、重复、铺陈），保住的永远是"骨"（主张、证据、结构）。任何重要提炼都必须可回溯出处，禁止伪造引用。

## 工作流决策树

1. 确认输入：
   - **有本地文件**（.pdf / .epub / .mobi / .azw3）→ 走「输入模式 A：本地文件解析」
   - **只有书名/只有作者** → 走「输入模式 B：书名联网检索」
   - **文件解析失败**（加密/DRM/依赖缺失/乱码）→ 降级到「输入模式 B」，并告知用户降级原因
2. 按「五步法核心流程」执行
3. 按「薄书输出模板」产出文档，用 present_files 交付

## 五步法核心流程（所有输入模式共用）

### Step 1 · 全局透视
- 目的：先不读正文，建立全书地图。回答三问：作者要解决什么问题？全书几条论证线索？各章在整体中的位置？
- 有文件：直接读目录（EPUB 读 toc/nav，PDF 读前几十页的目录页）
- 无文件：检索出版信息、目录、序言要点

### Step 2 · 分层提取
- 逐章（或逐主题单元）按**三层**提取，这是全书唯一需要判断取舍的环节：
  1. **论点层**：本章核心主张、关键结论（用"论点"标签）
  2. **论据层**：支撑论点的数据、案例、实验、历史事件（用"论据"标签）
  3. **结构层**：章节间如何衔接、论证如何递进、概念间关系（用于 Step 3 的逻辑链）
- 提取时**同步记录出处**：PDF 记页码，EPUB 记锚点，检索模式记来源文章（便于 Step 4 校验）
- **抽样精读纪律（长书必备，约 >800 段）**：上下文有限时采用抽样——每章必读「章首 + 结语」全段，核心案例/核心数据所在小节精读，其余小节略读。抽样范围**必须在薄书"拆书说明"中逐章标注精读/略读**（如"第1-4章精读，第5-7章略读"），防止读者高估出处精度；略读部分的综合表述不得标注具体锚点引用
- **金句覆盖纪律**：金句摘录须覆盖全书各篇（前后都要有），避免抽样偏差造成分布偏斜

### Step 2.5 · 书型基因判定（通用适配核心）

进入正文提取前，先判定本书的「基因组合」，据此决定提取重心——**这是通用 skill 的灵魂：不预设书型，每本动态判定**。

**七基因**：人物 / 叙事 / 论证 / 模型 / 历史数据 / 美学 / 经验
- 判定方式：基于 Step 1 的全局地图 + 各章结构，评估每个基因在本书的强度（主 / 中 / 辅 / 弱）
- 典型画像：原则型书（如《人性的弱点》）→ 论证+经验主；机制型书（如《置身事内》）→ 模型+论证+历史数据主；叙事型书（小说/传记）→ 人物+叙事+美学主；教科书（如《经济学原理》）→ 模型+论证+历史数据主；商业实操型（如《低风险创业》）→ 论证+经验+模型主；大众思想型（如《人类简史》）→ 叙事+历史数据+论证主
- 提取策略跟随基因：主基因深度提取（逻辑链/证据/案例），弱基因不硬挖
- 基因判定结果必须写入薄书「深度」模块，并说明提取策略

### Step 3 · 降维压缩
- 把叙述性语言改写为结构化语言：概念给定义、观点列成命题清单、因果关系画成链、对比做成表
- 保留标准（硬规则）：核心概念定义、关键论点、硬证据、反直觉结论、可执行建议 —— 必须留
- 舍弃标准：重复例证、背景铺陈、修辞铺排、离题旁支 —— 可删

### Step 4 · 批判校验（防失真保险丝）
- **反向还原测试**：对着压缩稿自问——能否凭它向没读过书的人完整复述这本书？书里提出的问题，薄书能否回答？卡壳即回去补
- **出处校验**：每个重要论点的出处可回溯；无法核实的信息标注 `[未找到原文/出处缺失]`，**绝不臆造页码或引用**
- 多来源冲突时：以多数据源交叉验证结果为准，并在文档中注明差异

### Step 5 · 输出薄书
- 按「薄书输出模板」产出固定结构文档，篇幅压到原书 10% 左右
- **默认输出 HTML 交互版**（Tab 分屏三阅读模式，见「HTML 交互版标准形态」）；仅当用户明确要 Markdown/纯文本、或内容极简时才输出 Markdown

## 输入模式 A：本地文件解析（PDF / EPUB）

### 第一步：运行提取脚本

```bash
python scripts/extract_book.py <文件路径> [--out <输出json路径>]
```

脚本输出结构化 JSON：`{meta, chapters: [{title, anchor/页码范围, blocks:[{type: 标题|段落, text, loc}]}]}`。

- **EPUB**：纯 Python 标准库实现（zipfile + xml.etree），**无需安装任何依赖**。通过 container.xml → OPF 的 spine/manifest 定位正文 XHTML，逐段提取并生成锚点 `章节文件#段落序号`。toc 自动对应章节标题。
- **PDF**：按可用库顺序尝试 `pypdf` → `pdfplumber` → `fitz`(PyMuPDF)。**优先使用 pypdf（纯 Python 轻量）**；缺失时提示安装：
  ```bash
  pip install pypdf
  ```
  若沙箱禁止 pip 安装，降级到「输入模式 B」。
- **扫描版 PDF（提取文本为空/乱码）**：报告用户需提供文本版或纸质页码；不硬做 OCR（质量无保障且耗时），除非用户明确要求。

### 第二步：引用格式约定
- PDF 版：`p.页码`（如 `p.135`），并注明"页码以所提供 PDF 为准，不同版本可能有偏移"
- EPUB 版：`章节文件#锚点`（如 `ch5.xhtml#sec42`），并在文档开头说明"EPUB 无固定页码，引用以锚点定位到段落级"
- 引用示例（薄书正文内）：`—— 论点出处：ch3.xhtml#12`

### 注意事项
- **DRM/加密文件**无法解析，提示用户提供无 DRM 版本（自有正版书自用可接受）
- 提取的文本如有明显乱码（如中文乱成 mojibake），报告问题并降级模式 B
- 文件名含空格/中文时，shell 中加引号

## 输入模式 B：书名联网检索（无本地文件）

### 检索策略（一轮多组关键词，一次 WebSearch 调用）
1. `《书名》 作者 目录 章节`
2. `《书名》 作者 核心观点 读书笔记`
3. `《书名》 作者 书评 精华 工具`
4. `《书名》 作者 <核心主题词>`（主题词从第 1 轮结果中提炼）

### 交叉核验要求
- 至少 2 个独立来源对同一要点表述一致，才写入薄书
- 目录以出版信息类来源（百科/出版社/图书馆书目）为准
- 来源冲突：在文档"拆书说明"中注明差异，不悄悄二选一
- **拆书说明必写**：`本薄书基于公开目录与多份读书笔记交叉核验整理，要点为结构化提炼而非原文逐字引用，不标注页码，转述精度到章节级。需要原文引用请以原书为准。`

### 关键点
- 用书名+作者限定搜索，避免同名书混淆
- 优先采信：出版社/百科/图书馆书目（结构权威）> 多篇一致读书笔记（内容交叉）> 单篇笔记（仅参考）

## 薄书输出模板（固定结构）

```
三阅读模式（HTML 交互版为一级 Tab 切换）：
  速读 15′ ｜ 一句话核心 + 5-7 条速读精华 + 全书要点地图
  精读 1h  ｜ 按基因提取的分层内容（原则清单/机制链/人物线……点击展开）
  深度     ｜ 七基因分析 + 信心分级说明 + 常见误读与作者盲点 + 批判评论 + 金句 + 行动清单
信心分级（每个论点/原则/金句必须标注）：
  A = 原文精读（锚点引用）  B = 原文略读  C = 网络多源交叉核验  D = 网络单源/流传版
拆书说明必写：输入方式、解析范围、精读/略读范围、页码或锚点规则
页脚规范：只写版本与出处说明（如「薄书 · 三阅读模式 · 信心分级 A-D · 模式 B」），不得出现「借鉴/对标/参考某项目」类表述
UI 内容充实度规范（防"内容略少"）：
  1. 精读层每个论点卡必须含四要素：判断（一句大判断）+ 论证逻辑（为什么成立，2-3 句）+ 论据/例子（具体证据或场景）+ 信心级别
  2. 速读精华每条含"要点 + 一句话解释 + 级别"，不得只有标题
  3. 行动清单每条含两要素：怎么做（具体可执行动作）+ 示例（一个真实场景）——拒绝"粗略解释"
  4. 字号规范：正文不小于 12px，说明性文字不小于 12.5px，禁止小到难以阅读
HTML 交互版标准形态（用户偏好，输出 HTML 时强制执行）：
  1. 一级结构 = Tab 分屏（三阅读模式：速读 15′ / 精读 1h / 深度），一次只显示一个 Tab，禁止长单页滚动
  2. 每屏内容控制在 1-2 屏高：默认收起、点击展开详情（章节手风琴互斥、原则/模型条目点击展开），首屏放"一句话核心 + 数据速览 + 全局地图"
  3. 内容按屏合理分配：每屏只放一类内容（概览/章节/互动/附录 或 按书型分屏），不许把 13 个模块堆在一页
  4. 交互以原生 JS 实现，自包含单文件；数据字符串内嵌中文引号必须用全角
  5. 交付前必做双验证：node 语法检查（node --check）+ mock-DOM 运行时测试，两者都通过才交付
```

## 铁律（防失真纪律，违反即不合格）

1. **不伪造引用**：找不到原句就标 `[未找到原文/出处缺失]`，绝不编造页码、章节、原文
2. **论据必须可回溯**：每条关键论点都带出处（页码/锚点/来源文章）
3. **先骨架后细节**：全局透视未完成前不进入正文提取
4. **批判性评论必写**：任何拆书输出必须包含"价值 vs 局限"评述，不沦为读书笔记复读机
5. **篇幅自律**：薄书控制在原书 10% 左右；无原书时控制在约 2000-3000 字，信息密度优先
6. **输出可校验**：交付前执行 Step 4 反向还原测试
7. **分级诚实**：信心分级 A-D 不得虚标——C/D 级（检索所得）不得伪装成 A 级（原文锚点）；用户提供文件后才可升级为 A/B 级
8. **JS 引号纪律（HTML 输出时）**：JS 数据字符串内嵌的中文引号一律用全角「" "」，界定符用 ASCII 引号——ASCII 引号嵌在中文间会截断 JS 字符串；交付前必做 node 语法检查 + mock-DOM 运行时测试

## 资源

### scripts/
- `extract_book.py` — 书籍文本提取器。EPUB 纯标准库解析（段落+锚点）；PDF 依次尝试 pypdf/pdfplumber/PyMuPDF 并输出页码。用法见「输入模式 A」。

## 版本记录（changelog）

- **v1.0（初版）**：五步法方法论 + extract_book.py（PDF/EPUB 解析）+ 防失真铁律
- **v1.1（实战补丁）**：抽样精读标注纪律、金句覆盖纪律、薄书模板新增"拆书说明"字段
- **v2.0（通用机制升级）**：Step 2.5 书型基因判定（七基因，动态判定不预设书型）、三阅读模式（速读/精读/深度）、信心分级 A-D、铁律补"分级诚实"
- **v2.1（体验规范）**：页脚规范（禁"借鉴/对标/参考某项目"字样）、UI 内容充实度规范（论点卡四要素/行动清单两要素/字号下限）、JS 引号纪律 + node 双验证、HTML Tab 分屏标准形态、默认输出改为 HTML 交互版
