Four Dimensional Deep Reading

Other

Simultaneously analyze books using 4 personas with multi-dimensional methods, producing structured insights on first principles, comparisons, and diverse per...

Install

openclaw skills install four-dimensional-deep-reading

Four-Dimensional Deep Reading

🎓 User Onboarding

When a user uses this skill for the first time, provide an interactive onboarding guide in their language. The onboarding should explain:

  1. What this skill does - Multi-perspective deep analysis
  2. The 4 personas - Their roles and what they contribute
  3. How to use the report - Understanding the output structure
  4. Tips for best results - Getting the most value

Language-Specific Onboarding Templates

English (en)

🎓 Welcome to Four-Dimensional Deep Reading!

This skill summons 4 virtual personas to analyze your content from different angles simultaneously:

┌─────────────────────────────────────────────────────────────┐
│  🔬 Axiom Analyst        →  First Principles Thinking        │
│     Strips away surface details to find fundamental truths  │
│                                                             │
│  📝 LMS Architect        →  Structured Notes                │
│     Organizes insights into Logic-Method-Summary format     │
│                                                             │
│  ⚡ Black Swan Hunter    →  Counterarguments & Edge Cases   │
│     Finds what could go wrong and challenges assumptions    │
│                                                             │
│  🎲 Random Variable X    →  Unexpected Perspectives         │
│     Brings fresh insights from random identity angles       │
└─────────────────────────────────────────────────────────────┘

📊 What you'll get:
• A comprehensive analysis report (saved to workspace/reports/)
• Multiple perspectives on the same content
• Actionable insights and structured notes
• Critical thinking challenges

⚡ Speed Reading Mode:
• Get core insights in just 30 seconds
• Trigger: Say "speed read [book title]" or "quick read [book title]"
• Output: Core premises + One-sentence summary + Key questions
• Best for: Quick book screening, time-constrained insights

💡 Tips for best results:
• Provide specific book titles or upload files for deeper analysis
• Ask follow-up questions about specific sections
• Use the LMS structure to create your own notes

🔄 Analysis Mode Comparison:
| Mode | Time | Output | Best For |
|------|------|--------|----------|
| Speed Mode | ~30s | Core premises + Summary + Questions | Quick screening |
| Standard Mode | ~2min | Full 4-persona analysis | Deep understanding |
| H-V Mode | ~5min | 4-persona + H-V analysis | Comprehensive research |

Ready to start? Just provide a book title or file!

中文 (zh)

🎓 欢迎使用四维深度阅读!

本技能召唤 4 个虚拟角色从不同角度同时分析你的内容:

┌─────────────────────────────────────────────────────────────┐
│  🔬 第一性原理师        →  公理化思维分析                    │
│     剥离表象,追溯底层假设和核心公理                        │
│                                                             │
│  📝 结构化笔记官        →  LMS 结构输出                     │
│     将洞察组织为 Logic-Method-Summary 格式                  │
│                                                             │
│  ⚡ 黑天鹅猎手          →  反驳论证与边界检测                │
│     寻找失效点和边缘情况,挑战假设                          │
│                                                             │
│  🎲 随机变量 X          →  意外视角洞察                      │
│     从随机身份角度带来全新思考                              │
└─────────────────────────────────────────────────────────────┘

📊 你将获得:
• 一份综合分析报告(自动保存到 workspace/reports/)
• 同一内容的多视角解读
• 可执行的洞察和结构化笔记
• 批判性思维挑战

⚡ 速读模式(Speed Reading Mode):
• 只需30秒,快速获取核心洞察
• 触发方式:说「速读【书名】」或「快速阅读【书名】」
• 输出:核心前提 + 一句话总结 + 关键问题
• 适合:快速筛选书籍、时间紧迫时获取要点

💡 使用建议:
• 提供具体书名或上传文件可获得更深入的分析
• 对特定部分提出追问
• 使用 LMS 结构创建自己的笔记

🔄 分析模式对比:
| 模式 | 时间 | 输出内容 | 适用场景 |
|------|------|----------|----------|
| 速读模式 | ~30秒 | 核心前提+一句话总结+关键问题 | 快速筛选 |
| 标准模式 | ~2分钟 | 4角色完整分析 | 深度理解 |
| 横纵模式 | ~5分钟 | 4角色+横纵分析 | 全面研究 |

---

### 📤 导出功能 (Export Mode) - v1.8.0

分析完成后,可将报告导出至外部知识管理工具:

#### 🎴 Anki 闪卡导出
- **触发词**:「导出Anki」「生成闪卡」「导出闪卡」
- **功能**:从分析报告中自动提取核心知识点,生成Anki可导入的CSV文件
- **导出内容**:
  - 核心方法论卡(来自LMS架构师)
  - 核心前提卡(来自第一性原理师)
  - 边界条件卡(来自黑天鹅猎手)
  - 一句话总结卡
- **输出格式**:CSV (Front, Back, Tags)
- **导入方法**:Anki → 文件 → 导入 → 选择导出的CSV

#### 📓 Obsidian 双向链接导出
- **触发词**:「导出Obsidian」「导出到笔记」「生成双向链接」
- **功能**:生成Obsidian Markdown文件,包含双链结构
- **导出内容**:
  - 主笔记文件(完整分析报告)
  - 闪卡文件(独立可复习)
  - 方法论提取文件(可复用)
- **输出路径**:`workspace/reports/{书名}/`

#### 🗂️ Notion 同步导出
- **触发词**:「导出Notion」「同步到Notion」
- **功能**:创建Notion页面,包含报告内容和闪卡列表
- **前置要求**:需配置Notion API密钥和数据库ID
- **输出**:交互式Notion页面,支持拖拽编辑

#### ⚡ 一键导出
- **触发词**:「一键导出」「导出所有」「全部导出」
- **功能**:同时导出Anki + Obsidian格式
- **输出目录**:`workspace/reports/{书名}/`

| 导出方式 | 触发词 | 输出格式 | 依赖 |
|----------|--------|----------|------|
| Anki闪卡 | 导出Anki/生成闪卡 | CSV | 无 |
| Obsidian | 导出Obsidian | Markdown | 无 |
| Notion | 导出Notion | JSON Blocks | API配置 |
| 一键导出 | 一键导出/全部导出 | CSV+Markdown | 无 |

💡 **使用技巧**:
- 分析完成后直接说「导出Anki」即可获得闪卡
- 导出的闪卡会自动打标签,便于分类管理
- 建议配合Anki间隔重复功能实现长效记忆

---

准备好了吗?提供一本书名或文件即可开始!

日本語 (ja)

🎓 四次元深読みへようこそ!

このスキルは4人の仮想ペルソナを召喚し、異なる角度から同時にコンテンツを分析します:

┌─────────────────────────────────────────────────────────────┐
│  🔬 公理分析者          →  第一原理思考                      │
│     表面を取り除き、根本的な真実を見つける                  │
│                                                             │
│  📝 LMS設計者           →  構造化ノート                      │
│     洞察をLogic-Method-Summary形式で整理                    │
│                                                             │
│  ⚡ ブラックスワン探求者 →  反論とエッジケース               │
│     何がうまくいかないかを見つけ、仮定に挑戦                │
│                                                             │
│  🎲 ランダム変数X       →  予期しない視点                    │
│     ランダムなアイデンティティから新鮮な洞察をもたらす      │
└─────────────────────────────────────────────────────────────┘

📊 得られるもの:
• 包括的な分析レポート(workspace/reports/に保存)
• 同じコンテンツの複数の視点
• 実行可能な洞察と構造化されたノート
• 批判的思考の課題

💡 最高の結果を得るためのヒント:
• より深い分析のために具体的な書名を提供するか、ファイルをアップロード
• 特定のセクションについてフォローアップの質問をする
• LMS構造を使用して自分のノートを作成

準備はできましたか?書名またはファイルを提供してください!

한국어 (ko)

🎓 4차원 깊은 읽기에 오신 것을 환영합니다!

이 스킬은 4명의 가상 페르소나를 소환하여 다른 각도에서 동시에 콘텐츠를 분석합니다:

┌─────────────────────────────────────────────────────────────┐
│  🔬 공리 분석가         →  제1원칙 사고                      │
│     표면을 벗겨내고 근본적인 진실을 찾습니다                │
│                                                             │
│  📝 LMS 설계자          →  구조화된 노트                     │
│     통찰력을 Logic-Method-Summary 형식으로 정리             │
│                                                             │
│  ⚡ 블랙 스완 사냥꾼     →  반론과 엣지 케이스               │
│     무엇이 잘못될 수 있는지 찾고 가정에 도전                │
│                                                             │
│  🎲 무작위 변수 X       →  예상치 못한 관점                  │
│     무작위 정체성에서 새로운 통찰을 가져옵니다              │
└─────────────────────────────────────────────────────────────┘

📊 얻을 수 있는 것:
• 포괄적인 분석 보고서 (workspace/reports/에 저장)
• 동일한 콘텐츠에 대한 여러 관점
• 실행 가능한 통찰력과 구조화된 노트
• 비판적 사고 과제

💡 최상의 결과를 위한 팁:
• 더 깊은 분석을 위해 구체적인 책 제목을 제공하거나 파일을 업로드
• 특정 섹션에 대한 후속 질문
• LMS 구조를 사용하여 자신만의 노트 만들기

준비되셨나요? 책 제목이나 파일을 제공하세요!

Français (fr)

🎓 Bienvenue dans la Lecture Profonde Quadridimensionnelle!

Cette compétence invoque 4 personas virtuels pour analyser votre contenu sous différents angles simultanément:

┌─────────────────────────────────────────────────────────────┐
│  🔬 Analyste d'Axiomes  →  Pensée des Premiers Principes    │
│     Élimine les détails de surface pour trouver les vérités │
│                                                             │
│  📝 Architecte LMS      →  Notes Structurées                │
│     Organise les insights en format Logic-Method-Summary    │
│                                                             │
│  ⚡ Chasseur de Cygne   →  Contre-arguments et Cas Limites  │
│     Trouve ce qui pourrait mal tourner et défie les hypothèses│
│                                                             │
│  🎲 Variable Aléatoire X →  Perspectives Inattendues        │
│     Apporte des insights frais d'angles identitaires aléatoires│
└─────────────────────────────────────────────────────────────┘

📊 Ce que vous obtiendrez:
• Un rapport d'analyse complet (sauvegardé dans workspace/reports/)
• Plusieurs perspectives sur le même contenu
• Des insights actionnables et des notes structurées
• Des défis de pensée critique

💡 Conseils pour de meilleurs résultats:
• Fournissez des titres de livres spécifiques ou téléchargez des fichiers
• Posez des questions de suivi sur des sections spécifiques
• Utilisez la structure LMS pour créer vos propres notes

Prêt à commencer? Fournissez simplement un titre de livre ou un fichier!

Deutsch (de)

🎓 Willkommen beim Vierdimensionalen Tiefenlesen!

Diese Fähigkeit beschwört 4 virtuelle Personas, um Ihren Inhalt gleichzeitig aus verschiedenen Blickwinkeln zu analysieren:

┌─────────────────────────────────────────────────────────────┐
│  🔬 Axiom-Analytiker    →  First-Principles-Denken          │
│     Entfernt Oberflächliches, um fundamentale Wahrheiten zu finden│
│                                                             │
│  📝 LMS-Architekt       →  Strukturierte Notizen            │
│     Organisiert Erkenntnisse im Logic-Method-Summary-Format │
│                                                             │
│  ⚡ Schwarzer-Schwan-Jäger →  Gegenargumente & Randfälle   │
│     Findet was schiefgehen könnte und stellt Annahmen in Frage│
│                                                             │
│  🎲 Zufallsvariable X   →  Unerwartete Perspektiven          │
│     Bringt frische Einblicke aus zufälligen Identitätswinkeln│
└─────────────────────────────────────────────────────────────┘

📊 Was Sie erhalten:
• Einen umfassenden Analysebericht (gespeichert in workspace/reports/)
• Mehrere Perspektiven auf denselben Inhalt
• Umsetzbare Erkenntnisse und strukturierte Notizen
• Kritisches Denken Herausforderungen

💡 Tipps für beste Ergebnisse:
• Geben Sie spezifische Buchtitel an oder laden Sie Dateien hoch
• Stellen Sie Folgefragen zu bestimmten Abschnitten
• Verwenden Sie die LMS-Struktur für eigene Notizen

Bereit anzufangen? Geben Sie einfach einen Buchtitel oder eine Datei an!

Español (es)

🎓 ¡Bienvenido a la Lectura Profunda Cuatridimensional!

Esta habilidad invoca 4 personas virtuales para analizar tu contenido desde diferentes ángulos simultáneamente:

┌─────────────────────────────────────────────────────────────┐
│  🔬 Analista de Axiomas →  Pensamiento de Primeros Principios│
│     Elimina detalles superficiales para encontrar verdades  │
│                                                             │
│  📝 Arquitecto LMS      →  Notas Estructuradas              │
│     Organiza ideas en formato Logic-Method-Summary          │
│                                                             │
│  ⚡ Cazador de Cisne    →  Contraargumentos y Casos Límite  │
│     Encuentra qué podría salir mal y desafía suposiciones   │
│                                                             │
│  🎲 Variable Aleatoria X →  Perspectivas Inesperadas        │
│     Trae insights frescos desde ángulos de identidad aleatorios│
└─────────────────────────────────────────────────────────────┘

📊 Lo que obtendrás:
• Un informe de análisis completo (guardado en workspace/reports/)
• Múltiples perspectivas sobre el mismo contenido
• Insights accionables y notas estructuradas
• Desafíos de pensamiento crítico

💡 Consejos para mejores resultados:
• Proporciona títulos de libros específicos o sube archivos
• Haz preguntas de seguimiento sobre secciones específicas
• Usa la estructura LMS para crear tus propias notas

¿Listo para empezar? ¡Solo proporciona un título de libro o archivo!

Português (pt)

🎓 Bem-vindo à Leitura Profunda Quadridimensional!

Esta habilidade invoca 4 personas virtuais para analisar seu conteúdo de diferentes ângulos simultaneamente:

┌─────────────────────────────────────────────────────────────┐
│  🔬 Analista de Axiomas →  Pensamento de Primeiros Princípios│
│     Remove detalhes superficiais para encontrar verdades    │
│                                                             │
│  📝 Arquiteto LMS       →  Notas Estruturadas               │
│     Organiza insights em formato Logic-Method-Summary       │
│                                                             │
│  ⚡ Caçador de Cisne    →  Contra-argumentos e Casos Limite │
│     Encontra o que pode dar errado e desafia suposições     │
│                                                             │
│  🎲 Variável Aleatória X →  Perspectivas Inesperadas        │
│     Traz insights frescos de ângulos de identidade aleatórios│
└─────────────────────────────────────────────────────────────┘

📊 O que você obterá:
• Um relatório de análise completo (salvo em workspace/reports/)
• Múltiplas perspectivas sobre o mesmo conteúdo
• Insights acionáveis e notas estruturadas
• Desafios de pensamento crítico

💡 Dicas para melhores resultados:
• Forneça títulos de livros específicos ou carregue arquivos
• Faça perguntas de acompanhamento sobre seções específicas
• Use a estrutura LMS para criar suas próprias notas

Pronto para começar? Basta fornecer um título de livro ou arquivo!

Русский (ru)

🎓 Добро пожаловать в Четырёхмерное Глубокое Чтение!

Этот навык призывает 4 виртуальных персоны для анализа вашего контента с разных углов одновременно:

┌─────────────────────────────────────────────────────────────┐
│  🔬 Аналитик Аксиом     →  Мышление Первых Принципов        │
│     Убирает поверхностные детали, чтобы найти истину        │
│                                                             │
│  📝 Архитектор LMS      →  Структурированные Заметки        │
│     Организует идеи в формате Logic-Method-Summary          │
│                                                             │
│  ⚡ Охотник за Чёрным   →  Контраргументы и Краевые Случаи  │
│     Находит что может пойти не так и оспаривает предположения│
│                                                             │
│  🎲 Случайная Переменная X →  Неожиданные Перспективы       │
│     Приносит свежие идеи со случайных углов идентичности    │
└─────────────────────────────────────────────────────────────┘

📊 Что вы получите:
• Комплексный аналитический отчёт (сохранён в workspace/reports/)
• Множество перспектив на один и тот же контент
• Практические идеи и структурированные заметки
• Задачи критического мышления

💡 Советы для лучших результатов:
• Предоставьте конкретные названия книг или загрузите файлы
• Задавайте уточняющие вопросы по конкретным разделам
• Используйте структуру LMS для создания собственных заметок

Готовы начать? Просто предоставьте название книги или файл!

When to Show Onboarding

Show the onboarding guide when:

  1. First-time user - User has never used the skill before
  2. Explicit request - User asks "how to use this skill" or "help me understand"
  3. After error - User seems confused about the output format

Implementation

def should_show_onboarding(user_id: str, skill_usage_count: dict) -> bool:
    """Determine if onboarding should be shown"""
    return skill_usage_count.get(user_id, 0) < 1

def get_onboarding_message(language: str) -> str:
    """Get language-specific onboarding message"""
    ONBOARDING_TEMPLATES = {
        "en": ENGLISH_ONBOARDING,
        "zh": CHINESE_ONBOARDING,
        "ja": JAPANESE_ONBOARDING,
        "ko": KOREAN_ONBOARDING,
        "fr": FRENCH_ONBOARDING,
        "de": GERMAN_ONBOARDING,
        "es": SPANISH_ONBOARDING,
        "pt": PORTUGUESE_ONBOARDING,
        "ru": RUSSIAN_ONBOARDING,
    }
    return ONBOARDING_TEMPLATES.get(language, ONBOARDING_TEMPLATES["en"])

Core Mechanism

When a user provides a book title or file, summon 4 virtual personas to read and analyze in parallel.

⚡ Book Review Search (v1.7.4): Auto-search book reviews from multiple sources to enrich analysis with reader perspectives, expert evaluations, and critical reception.

📖 Detailed Book Introduction (v1.7.4): Auto-fetch comprehensive book metadata including: author background, publication history, chapter structure, core themes, and reader demographics.

⚡ Speed Reading Mode (v1.7.3): Quick 30-second analysis with only Axiom Analyst + One-sentence summary. Triggered by "速读【书名】" or "speed read [book title]".

Speed Mode Output Format:

## ⚡ 速读报告:[书名]

### 核心前提
[3-5条不可再分解的原子命题]

### 一句话总结
> [核心观点,不超过30字]

### 关键问题
1. [问题1]
2. [问题2]
3. [问题3]

---
⏱️ 分析时间:~30秒

Speed Mode Trigger Keywords:

  • 中文:速读、快速阅读、简读、概览
  • English: speed read, quick read, brief overview, summarize
  • 日本語: 速読、クイックリード
  • 한국어: 속독, 퀵 리드

⚡ Parallel Processing (v1.6.0): All 4 personas execute simultaneously using sessions_spawn, reducing total analysis time by ~75%.

Implementation: See scripts/parallel_analysis.py for the parallel execution module.

Horizontal-Vertical Analysis Integration: Beyond the traditional 4 personas, adds two analytical dimensions—"Diachronic Timeline" and "Synchronic Competitor Benchmarking"—forming a "4 Personas × 2 H-V Axes" matrix reading framework.

Auto-Save: After analysis completes, automatically saves the report to workspace/reports/.


📥 Book Acquisition & Preprocessing Module

🚀 Enhanced Data Fetching (v1.5.0)

核心优化

  • 多源备份:豆瓣 → Goodreads → Wikipedia → Google Books,自动切换
  • 本地缓存:7天有效期,避免重复请求
  • 错误重试:指数退避,最多重试3次
  • 智能合并:多源数据按优先级合并

实现文件reference/book_fetcher_enhanced.py

使用方式

from book_fetcher_enhanced import fetch_book_info

# 获取书籍信息(自动多源备份)
info = fetch_book_info("原子习惯")
info = fetch_book_info("Atomic Habits", author="James Clear")

# 清理过期缓存
from book_fetcher_enhanced import clear_cache
cleared = clear_cache()

# 查看缓存统计
from book_fetcher_enhanced import get_cache_stats
stats = get_cache_stats()

缓存位置/root/.openclaw/workspace/.cache/book_fetcher/


📚 Auto Book Review Search (v1.7.4新增)

功能说明:自动从多个平台搜索书籍评论,丰富分析维度

数据来源

平台语言评论类型获取难度
豆瓣评论中文用户长评、书评⭐⭐
知乎讨论中文专业问答、评价⭐⭐⭐
Goodreads Reviews英文用户评论、专业书评⭐⭐
Amazon Reviews英文用户评分、VP评论⭐⭐
Booklog日文用户书评⭐⭐⭐
Yes24韩文用户评论⭐⭐⭐

搜索关键词策略

# 中文书籍
[书名] 书评
[书名] 读后感
[书名] 评价
[作者] 书评

# 英文书籍
[book name] review
[book name] review analysis
[book name] criticism
[author] book review

# 日文书籍
[書名] 書評
[著者] レビュー

评论分析维度

  • 正面评价高频词
  • 负面评价高频词
  • 争议性观点
  • 专家 vs 普通读者分歧
  • 与同类书比较评价

输出格式

## 📚 书评综述

### 整体评价倾向
- 正面:[X]%
- 中性:[X]%
- 负面:[X]%

### 核心正面观点
1. [高频正面观点1]
2. [高频正面观点2]

### 核心负面观点
1. [高频负面观点1]
2. [高频负面观点2]

### 争议与分歧
[专家与读者观点分歧]

### 精选评论引用
> "[精选评论片段]" - 来源平台

📖 Detailed Book Introduction (v1.7.4新增)

功能说明:获取书籍的详细介绍,包括作者背景、出版信息、章节结构等

自动获取信息

信息类型来源说明
作者简介豆瓣/Goodreads/维基教育背景、代表作品、获奖情况
出版历程豆瓣/Amazon初版时间、版本迭代、发行量
章节结构豆瓣TOC/京东/Amazon完整目录、章节数量
核心主题书籍简介/书评提炼一句话介绍、适合人群
媒体评价豆瓣/Amazon/媒体网站名人推荐、媒体评论
获奖情况搜索结果书籍获奖、榜单排名

获取流程

1. 语言检测 → 选择数据源
2. 主数据源获取 → 豆瓣/Goodreads
3. 补充数据源获取 → 维基/媒体
4. 信息聚合 → 结构化输出
5. 质量校验 → 缺失字段标记

输出格式

## 📖 书籍详细介绍

### 基本信息
| 字段 | 内容 |
|------|------|
| 书名 | [书名] |
| 作者 | [作者] |
| 译者 | [译者,如适用] |
| 出版社 | [出版社] |
| 出版年 | [年份] |
| 页数 | [页数] |
| ISBN | [ISBN] |

### 作者简介
[作者背景介绍]

### 书籍简介
[一句话介绍]
[详细简介]

### 章节结构
| 章节 | 标题 | 核心内容 |
|------|------|----------|
| 第1章 | [标题] | [内容] |
| ... | ... | ... |

### 适合人群
- [人群1]
- [人群2]

### 获奖与荣誉
- [奖项1]
- [奖项2]

Method A: By Book Title (Web Search)

When user provides only a book title, auto-retrieve follows this flow:

Step 1: Language Detection & Source Selection
  → Detect book title language (Chinese / English / Japanese / Korean / etc.)
  → Route to appropriate data source based on language

Step 2: Multi-source metadata search (Language-Specific)

  【Chinese Books】
  → Douban (豆瓣) → Rating, summary, TOC, author info, reviews
  → Dangdang (当当) → Price, ranking, reader demographics
  → Zhihu (知乎) → Discussion threads, expert opinions
  → Baidu Baike → Author biography, creation background

  【English Books】
  → Goodreads → Rating, reviews, reader demographics, similar books
  → Amazon Books → Rating, bestseller ranking, editorial reviews
  → Google Books → Preview chapters, metadata, ISBN
  → Wikipedia → Creation background, version history
  → LibraryThing → Tags, collections, work information

  【Japanese Books】
  → Amazon JP → Rating, reviews
  → Booklog (ブクログ) → User reviews, ratings
  → Goodreads (fallback) → International reviews

  【Korean Books】
  → Yes24 → Rating, reviews, bestseller status
  → Aladin → Reader reviews, ratings
  → Goodreads (fallback) → International reviews

  【Other Languages】
  → Goodreads (primary) → International book database
  → Google Books → Metadata and preview
  → Wikipedia (lang-specific) → Background information

Step 3: Content aggregation
  → Merge sources into structured JSON
  → Extract: title, author, ISBN, publication year, chapter list, summary, ratings

Implementation Tools:

  • web_tool() for all book platform pages
  • search_tool for resource links
  • Output as structured JSON for persona analysis

🌐 Language-Specific Retrieve Functions

Chinese Books (豆瓣/Douban)

def retrieve_douban_book_info(book_name):
    """Retrieve Chinese book info from Douban"""
    # Use web_tool tool to retrieve book information
    # Use web_tool tool to retrieve book information
    return book_info
    
    return {
        "title": extract_title(content),
        "author": extract_author(content),
        "rating": extract_rating(content),        # 0-10 scale
        "rating_count": extract_rating_count(content),
        "summary": extract_summary(content),
        "chapters": extract_toc(content),
        "publisher": extract_publisher(content),
        "pub_date": extract_pub_date(content),
        "isbn": extract_isbn(content),
        "tags": extract_tags(content),
        "source": "douban"
    }

English Books (Goodreads)

def retrieve_goodreads_book_info(book_name, author=None):
    """Retrieve English book info from Goodreads"""
    # Use web_tool tool to retrieve book information
    # Goodreads search query combines book name and author
    return book_info
    
    return {
        "title": extract_title(content),
        "author": extract_author(content),
        "rating": extract_rating(content),        # 0-5 scale
        "rating_count": extract_rating_count(content),
        "summary": extract_description(content),
        "genres": extract_genres(content),
        "pages": extract_num_pages(content),
        "isbn": extract_isbn(content),
        "similar_books": extract_similar_books(content),  # Goodreads feature
        "reviews": extract_top_reviews(content),
        "source": "goodreads"
    }

English Books (Amazon)

def retrieve_amazon_book_info(book_name):
    """Retrieve English book info from Amazon Books"""
    # Use web_tool tool to retrieve book information
    # Amazon Books search endpoint
    return book_info
    
    return {
        "title": extract_title(content),
        "author": extract_author(content),
        "rating": extract_rating(content),        # 0-5 scale
        "rating_count": extract_rating_count(content),
        "price": extract_price(content),
        "bestseller_rank": extract_bestseller_rank(content),
        "editorial_review": extract_editorial_review(content),
        "source": "amazon"
    }

Japanese Books (Booklog)

def retrieve_booklog_info(book_name):
    """Retrieve Japanese book info from Booklog"""
    # Use web_tool tool to retrieve book information
    # Booklog (ブクログ) Japanese book reviews
    return book_info
    
    return {
        "title": extract_title(content),
        "author": extract_author(content),
        "rating": extract_rating(content),
        "reviews": extract_reviews(content),
        "source": "booklog"
    }

Korean Books (Yes24)

def retrieve_yes24_info(book_name):
    """Retrieve Korean book info from Yes24"""
    # Use web_tool tool to retrieve book information
    # Yes24 Korean book database
    return book_info
    
    return {
        "title": extract_title(content),
        "author": extract_author(content),
        "rating": extract_rating(content),
        "price": extract_price(content),
        "source": "yes24"
    }

🔄 Unified Book Info Retrieveer

def retrieve_book_info(book_name, author=None, language=None):
    """
    Unified entry: auto-detect language and retrieve from appropriate sources
    
    Priority by language:
    - Chinese: Douban → Baidu Baike → Zhihu → Wikipedia ZH
    - English: Goodreads → Google Books → Wikipedia EN → Amazon
    - Japanese: Booklog → Amazon JP → Goodreads
    - Korean: Yes24 → Aladin → Goodreads
    - Other: Goodreads → Wikipedia EN → Google Books
    
    Enhanced Features (v1.5.0):
    - Multi-source backup with automatic failover
    - Local cache with 7-day expiration
    - Retry with exponential backoff (max 3 retries)
    - Smart data merging from multiple sources
    """
    # Auto-detect language if not provided
    if not language:
        language = detect_language(book_name)
    
    # Use enhanced fetcher with cache and retry
    from book_fetcher_enhanced import fetch_book_info
    return fetch_book_info(book_name, author)

📊 Data Source Configuration

# 数据源优先级配置
SOURCE_PRIORITY = {
    "zh": ["douban", "baidu_baike", "zhihu", "wikipedia_zh"],
    "en": ["goodreads", "google_books", "wikipedia_en", "amazon"],
    "ja": ["booklog", "amazon_jp", "goodreads"],
    "ko": ["yes24", "aladin", "goodreads"],
    "default": ["goodreads", "wikipedia_en", "google_books"]
}

# 字段优先级(哪个来源的数据更可信)
FIELD_PRIORITY = {
    "rating": ["douban", "goodreads", "amazon"],
    "summary": ["douban", "goodreads", "wikipedia"],
    "reviews": ["douban", "goodreads", "amazon"],
}

# 重试配置
RETRY_CONFIG = {
    "max_retries": 3,
    "base_delay": 1.0,  # 秒
    "max_delay": 10.0,  # 秒
}

# 缓存配置
CACHE_CONFIG = {
    "cache_dir": "/root/.openclaw/workspace/.cache/book_fetcher",
    "expire_days": 7,
}

⚠️ Error Handling Strategy

┌─────────────────────────────────────────────────────┐
│              数据获取错误处理流程                    │
├─────────────────────────────────────────────────────┤
│                                                     │
│  1. 尝试数据源 A                                    │
│     ├─ 成功 → 返回数据                              │
│     └─ 失败 → 记录错误,进入步骤2                   │
│                                                     │
│  2. 检查本地缓存                                    │
│     ├─ 有缓存且未过期 → 返回缓存                    │
│     └─ 无缓存或已过期 → 进入步骤3                   │
│                                                     │
│  3. 尝试数据源 B(带重试)                          │
│     ├─ 第1次失败 → 等待1秒后重试                    │
│     ├─ 第2次失败 → 等待2秒后重试                    │
│     ├─ 第3次失败 → 等待4秒后重试                    │
│     └─ 全部失败 → 进入步骤4                         │
│                                                     │
│  4. 尝试数据源 C...                                 │
│     └─ 依次尝试所有数据源                           │
│                                                     │
│  5. 全部失败                                        │
│     └─ 返回部分数据 + 错误信息                      │
│                                                     │
└─────────────────────────────────────────────────────┘

def detect_language(text): """Detect text language using character patterns""" # Chinese: CJK Unified Ideographs if any('\u4e00' <= c <= '\u9fff' for c in text): return 'zh' # Japanese: Hiragana or Katakana if any('\u3040' <= c <= '\u309f' or '\u30a0' <= c <= '\u30ff' for c in text): return 'ja' # Korean: Hangul if any('\uac00' <= c <= '\ud7af' for c in text): return 'ko' # Default to English return 'en'

def retrieve_english_book_info(book_name, author=None): """Retrieve English book info from multiple sources""" result = {}

# Primary: Goodreads
try:
    result['goodreads'] = retrieve_goodreads_book_info(book_name, author)
except Exception as e:
    print(f"Goodreads retrieve failed: {e}")

# Secondary: Amazon
try:
    result['amazon'] = retrieve_amazon_book_info(book_name)
except Exception as e:
    print(f"Amazon retrieve failed: {e}")

# Tertiary: Google Books
try:
    result['google_books'] = retrieve_google_books_info(book_name, author)
except Exception as e:
    print(f"Google Books retrieve failed: {e}")

# Merge and deduplicate
return merge_book_info(result)

---

### 📊 Data Source Comparison

| Source | Language | Rating Scale | Unique Features |
|--------|----------|--------------|----------------|
| **Douban** | Chinese | 0-10 | Tags, TOC, Chinese reviews |
| **Goodreads** | Multi | 0-5 | Similar books, reading lists, quotes |
| **Amazon** | Multi | 0-5 | Bestseller rank, price, editorial reviews |
| **Google Books** | Multi | N/A | Preview chapters, ISBN metadata |
| **Booklog** | Japanese | 0-5 | Japanese user reviews |
| **Yes24** | Korean | 0-10 | Korean bestseller status |
| **LibraryThing** | Multi | 0-5 | Collections, work relationships |

---

### Method B: Local File Upload (Format Parsing)

Supported formats (pure Python, no system binaries required):

| Format | Parser | Notes |
|--------|--------|-------|
| **TXT** | Python `open()` direct read | UTF-8/GBK auto-detection |
| **PDF** | `pdfplumber` | Pure Python, preserve chapter structure |
| **EPUB** | `ebooklib` + `BeautifulSoup` | Pure Python, parse HTML body |
| **MD** | Direct read | Native support |

**Note**: MOBI format is not supported. Please convert to EPUB first using online tools.

**Parser Module Path**:

reference/book_parser.py # Unified entry: parse_book(file_path) -> str


**Parsing Flow**:
  1. Detect file type (magic number / extension)
  2. Call appropriate parser
  3. Clean text (remove headers/footers, ads, special chars)
  4. Identify chapter markers (# Title / Chapter X / 第 X 章)
  5. Return structured text with chapters

**book_parser.py Core Framework**:
```python
# Note: This is pseudocode for illustration purposes
# Actual implementation should use PyPDF2 or pdfplumber library

def parse_book(file_path):
    """Unified entry: returns text with chapter structure"""
    # Detect file extension and route to appropriate parser
    ext = get_extension(file_path)
    
    if ext == '.txt':
        return parse_txt(file_path)
    elif ext == '.pdf':
        return parse_pdf(file_path)  # Use PyPDF2 or pdfplumber library
    elif ext == '.epub':
        return parse_epub(file_path)
    elif ext == '.mobi':
        return parse_mobi(file_path)
    elif ext == '.md':
        return parse_md(file_path)
    else:
        raise ValueError(f"Unsupported format: {ext}")

def parse_pdf(file_path):
    """Parse PDF using PyPDF2 or pdfplumber library"""
    # Recommended: Use pdfplumber for better text extraction
    # Example using pdfplumber:
    #   with pdfplumber.open(file_path) as pdf:
    #       text = "\n".join([page.extract_text() for page in pdf.pages])
    return {"content": text, "format": "pdf"}

def parse_txt(file_path):
    """Auto-detect encoding for TXT"""
    # Try common encodings: utf-8, gbk, gb2312
    # Return content with detected encoding
    return {"content": text, "format": "txt"}

Method C: Direct Link Retrieve

User provides full text link (e.g., public PDF, online ebook):

Steps:
1. Check Content-Type to determine file type
2. Save to workspace local workspace
3. Call appropriate parser to extract plain text
4. Clean up file after processing

🔍 Horizontal-Vertical Analysis Data Strategy

Diachronic Data Sources (Intellectual History Positioning)

Data TypeSourceTool
Publication yearDouban book detailsweb_tool
Author interviewsSearch engine + news sitessearch_tool + web_tool
Version evolutionPublisher site / Douban versionsweb_tool
Intellectual originsCitations / reference chainsManual annotation + AI inference
Later influenceCitation count / citing worksAcademic DB search (optional)

Diachronic Analysis Module:

def retrieve_longitudinal_data(book_name, author):
    """Retrieve external data for diachronic analysis"""
    
    # 1. Search creation background
    bg_query = f"{book_name} {author} writing background motivation"
    background_results = duckduckgo_search(bg_query)[:3]
    
    # 2. Retrieve Douban version history
    book_page = find_douban_page(book_name)
    version_info = web_tool(book_page, extract="version_history")
    
    # 3. Search intellectual origins and influences
    influences_query = f"{book_name} influenced by influenced influence on"
    influence_results = duckduckgo_search(influences_query)[:5]
    
    return {
        "background": summarize(background_results),
        "versions": version_info,
        "influences": summarize(influence_results)
    }

Synchronic Data Sources (Competitor Benchmarking)

Comparison DimensionData Source
Similar book recommendations"Readers also bought" (Amazon/Douban)
Core viewpoint differencesProfessional review comparison articles
Rating comparisonMulti-platform rating aggregation
Reader demographicsReview section keyword analysis

Synchronic Analysis Module:

def retrieve_horizontal_comparison(book_name, category):
    """Retrieve external data for synchronic comparison"""
    
    # 1. Search top 5 similar books
    search_query = f"{category} classic books ranking TOP10"
    competitors = duckduckgo_search(search_query)[:5]
    
    # 2. Retrieve core selling points for each competitor
    competitor_data = []
    for comp in competitors:
        book_page = find_best_review(comp['title'])
        summary = web_tool(book_page, extract="key_points")
        rating = extract_rating(book_page)
        competitor_data.append({
            "name": comp['title'],
            "summary": summary,
            "rating": rating
        })
    
    # 3. Generate comparison table data
    return build_comparison_table(book_name, competitor_data)

Persona Definitions & Deep Instructions

🔬 Axiom Analyst (First Principles)

Technique Reference: Elon Musk decomposition / Axiomatic thinking

输出要求

  • 字数范围:800-1500字
  • 必含模块:核心前提(3-5条)、底层假设(3-5条)、一句话总结、书名隐喻解析
  • 深度标准:每条前提必须不可再分解,每条假设必须可被证伪

Core Instruction (System Prompt Add-on):

You are an "Axiom Analyst", using "axiomatic thinking" to decompose book content.

Task: Reduce the book's core viewpoints to indivisible atomic propositions.

Workflow:
1. Strip appearances: Identify all packaging (stories, cases, metaphors), extract pure viewpoint kernels
2. Trace premises: Find underlying assumptions supporting core viewpoints, mark as "A1, A2, A3..."
3. Reverse decomposition: If this conclusion fails, which premises must be false?
4. Minimal expression: Summarize the book's core in one sentence (max 30 chars)
5. Book title analysis: Decode the metaphor in the book title itself

Output Format:
## 核心前提
[3-5条不可再分解的原子命题,每条用一句话表达]

## 底层假设
- A1: [假设1 - 必须可被证伪]
- A2: [假设2 - 必须可被证伪]
- A3: [假设3 - 必须可被证伪]

## 书名隐喻解析
[书名本身的隐喻系统,拆解其符号意义]

## 一句话总结
> [核心观点,不超过30字]

## 作者真实意图
[透过表面文字,作者真正想表达什么?]

📝 L-M-S Architect (Structured Notes)

Technique Reference: Cornell Notes / Luhmann Zettelkasten

输出要求

  • 字数范围:1000-2000字
  • 必含模块:章节结构表、人物关系网络、关键转折点表、L-M-S知识卡片
  • 深度标准:章节结构必须完整,人物关系必须标注关系类型,转折点必须量化重要性

Core Instruction (System Prompt Add-on):

You are a "Structured Note Taker", must output specific L-M-S structure.

Task: First introduce the book's content, then compress into reusable knowledge cards.

L-M-S Structure Definition:
- **Logic**: Causal chains / derivation paths of viewpoints
- **Method**: Actionable methodologies / tools / frameworks
- **Summary**: Minimal summary of core points (max 50 chars)

Cornell Notes Integration:
- Note area: Record key passages from the book
- Cue area: Extract questions / clues
- Summary area: Compress with L-M-S

Output Format:
## 章节结构
| 部分 | 章节 | 时间/主题 | 核心事件 |
|------|------|---------|---------|
[完整章节表,至少包含主要章节]

## 人物关系网络

主角 ├── 关系线1 │ ├── 人物A(关系类型) │ └── 人物B(关系类型) ├── 关系线2 │ └── 人物C(关系类型)


## 关键转折点
| 事件 | 转折性质 | 重要程度 |
|------|---------|----------|
[5-8个关键转折点,用⭐量化重要性]

## Logic (逻辑链)
[因果链:A→B→C,解释观点的推导路径]

## Method (方法论)
[可执行的方法或工具,提取书中可复用的方法论]

## Summary (摘要)
> [核心观点,不超过50字]

⚡ Black Swan Hunter (Contrarian)

Technique Reference: Taleb critical thinking / Edge case analysis

输出要求

  • 字数范围:800-1500字
  • 必含模块:黑天鹅事件(2-3个)、边界条件(3-5个)、假设脆弱性分析、当代意义挑战
  • 深度标准:每个反驳必须有事实支撑,每个边界条件必须可验证

Core Instruction (System Prompt Add-on):

You are a "Professional Contrarian", seeking "black swan" events and boundary conditions where conclusions fail.

Task: Identify Edge Cases and Failure Points of conclusions.

Workflow:
1. Find counterexamples: What known facts contradict the book's viewpoints?
2. Boundary detection: Under what conditions does this viewpoint fail?
3. Assumption challenge: If underlying assumptions are false, does the conclusion still hold?
4. Butterfly effect: What possible chain reactions are overlooked?
5. Contemporary relevance: Why would a 2026 reader still care (or not)?

Taleb-style Questions:
- "Under what conditions does this conclusion become noise rather than signal?"
- "If randomness increases/decreases, does the conclusion still hold?"
- "Who least wants this viewpoint to be true?"

Output Format:
## 黑天鹅事件
[2-3个与书中观点冲突的真实案例,每个案例标注来源]

## 边界条件
| 条件 | 观点失效原因 | 验证方式 |
|------|-------------|----------|
[3-5个边界条件,说明在什么情况下观点不再成立]

## 假设脆弱性
[当底层假设被挑战时,会产生什么连锁反应?]

## 当代意义挑战
[2026年的读者为何要读这本书?核心命题是否依然成立?]

## 反驳与辩护
[对主要批判的回应,保持辩证平衡]
  • "Who least wants this viewpoint to be true?"

Output Format:

Black Swan Events

[Real cases conflicting with book's viewpoints]

Edge Cases

  • Condition 1: [Viewpoint may fail under XX circumstances]
  • Condition 2: [Conclusion doesn't hold when XX variable changes]

Assumption Fragility

[Chain reactions when underlying assumptions are challenged]


---

### 🎲 Random Variable X (Monte Carlo Identity)

**Technique Reference**: Monte Carlo Role Sampling

**输出要求**:
- **字数范围**:600-1000字
- **必含模块**:角色背景、独特视角、核心问题(3个)、跨界联想
- **深度标准**:视角必须真正独特,不能与前面三个角色重复;必须产生跨界洞察

**Core Instruction (System Prompt Add-on)**:

You are a "Random Variable X", randomly loading an Identity_Module via Monte Carlo method.

Random Persona Pool: Read role list from reference/identity_modules.md, randomly select 1.

Task: Provide unique interpretation from that random identity's perspective.

Output Format:

🎲 随机身份:[角色名称]

角色背景

[这个角色的身份背景、职业、价值观]

独特视角

[从这个角色的视角看这本书,会产生什么独特洞察?]

必须与前面三个角色的视角不同,必须产生跨界思考

核心问题

[这个角色会提出的3个关键问题]

  1. [问题1]
  2. [问题2]
  3. [问题3]

跨界联想

[将书中内容与角色的专业领域连接,产生新的理解]


**Random Role Loading Method**:
1. Read all roles from `reference/identity_modules.md`
2. Use random number generator to select 1 role
3. Load that role's complete definition and execute analysis

**预设角色池**(当reference/identity_modules.md不存在时使用):
- AI工程师:关注算法、模型、自动化
- 投资者:关注风险、收益、复利
- 心理学家:关注认知偏差、行为动机
- 哲学家:关注存在意义、伦理困境
- 艺术家:关注美学、表达、创造力
- 历史学家:关注时代背景、演变规律
- 科学家:关注实证、可证伪性、因果

---

### 📊 Diachronic Analysis (Longitudinal)

**Task**: Restore the book's complete development along the timeline

**Data Source**: Call [Diachronic Data Strategy] for external information

Diachronic Analysis: From Birth to Present

Creation Background

  • Writing period: [From Douban/Wikipedia]
  • Social environment: [From search results]
  • Core problem author faced: [From interviews/biography]

Version Evolution (if any)

  • Core changes from first edition to current: [From version history]
  • Intellectual evolution trajectory: [Cross-version comparison]

Intellectual History Positioning

  • Contemporary similar works: [Same-period work search]
  • Intellectual origins (influenced by): [Citation chain analysis]
  • Influence on later works: [Citation count / review mentions]

### 🔀 Synchronic Analysis (Horizontal)

**Task**: At current time slice, compare with similar books

**Data Source**: Call [Synchronic Data Strategy] for competitor data

Synchronic Analysis: Competitor Benchmarking

Similar Classic Comparison

DimensionThis BookCompetitor ACompetitor B
Core viewpoint[This book][Retrieveed][Retrieveed]
Methodology[This book][Retrieveed][Retrieveed]
Writing style[This book][Retrieveed][Retrieveed]
Applicable scenarios[This book][Retrieveed][Retrieveed]
Rating[Retrieveed][Retrieveed][Retrieveed]

Differentiation Positioning

[This book's unique value and irreplaceability]

Reader Selection Advice

  • Who should read: [Based on content characteristics]
  • Alternatives: [Similar book recommendations]

### 🎯 H-V Intersection Insight

**Task**: Combine diachronic and synchronic analysis for unique judgment

H-V Intersection Insight

History's Gift

[Which past factors shaped this book's core value]

Current Coordinates

[This book's position in current intellectual landscape]

Future Projection

[This book's predictive value for future trends]


---

## Auto-Save Module

**Save Path**: `/root/.openclaw/workspace/reports/`

### File Naming Rule

[Book_Name][Analysis_Mode][Date].md


Examples:
- `Atomic_Habits_Speed_Read_2026-05-03.md` (Speed Mode)
- `Atomic_Habits_Standard_Analysis_2026-04-25.md` (Standard Mode)
- `Sapiens_HV_Analysis_2026-04-25.md` (H-V Mode)

### Save Flow

Step 1: Generate complete analysis report (Markdown format) Step 2: Generate filename (book name + mode + date) Step 3: Write to /root/.openclaw/workspace/reports/[filename].md Step 4: Return save confirmation


### Report Template Structure

```markdown
---
title: [Book Name] Deep Analysis Report
author: Four-Dimensional Deep Reading AI
date: YYYY-MM-DD
mode: [Standard Mode / H-V Enhanced Mode]
tags: [book, analysis, reading notes]
source: [book name / file path / link]
data_sources: [list of retrieveed data sources]
---

# "[Book Name]" Deep Analysis Report

> Analysis Mode: [Standard / H-V Enhanced] | Analysis Time: [Date] | Random Persona: [Role Name]

---

## 📖 全书内容简介(标准模式必需)

> 本书基本信息、作者背景、核心内容概述(200-500字)

| 项目 | 内容 |
|------|------|
| 书名 | [书名] |
| 作者 | [作者] |
| 类型 | [类型] |
| 成书时间 | [时间] |

**内容概述**:
[此处为全书内容简介,包含故事主线、主要人物、核心主题等]

---

## 🔬 Axiom Analyst
[Content]

---

## 📝 L-M-S Architect
### Logic
[Content]

### Method
[Content]

### Summary
> [Content]

---

## ⚡ Black Swan Hunter
[Content]

---

## 🎲 Random Variable X: [Role Name]
[Content]

---

## 📊 H-V Analysis (H-V Mode Only)
### Diachronic: Intellectual History Positioning
[Content]

### Synchronic: Competitor Benchmarking
[Content]

### Intersection: Insight
[Content]

---

## 🧠 Arbiter Summary (v1.7.2)
> This summary is auto-generated after the 4 personas complete their analysis. It identifies consensus, marks dissent, and provides weighted confidence ratings.

### 🎯 Core Consensus (4/4 Agreement)
| # | Consensus Point | Confidence | Supported By |
|---|-----------------|------------|--------------|
| 1 | [Point where all 4 personas agree] | ⭐⭐⭐⭐⭐ 95% | All 4 personas |
| 2 | [Second consensus point] | ⭐⭐⭐⭐ 85% | [Persona names] |
| 3 | [Third consensus point] | ⭐⭐⭐ 75% | [Persona names] |

### ⚔️ Key Dissent Analysis
| Topic | Axiom Analyst | LMS Architect | Black Swan Hunter | Random X | Verdict |
|-------|---------------|---------------|-------------------|----------|---------|
| [Controversial topic] | [View] | [View] | [View] | [View] | [Arbiter's judgment with reasoning] |

### ⚖️ Weighted Confidence Ranking
Based on role-specific reliability:
- **Black Swan Hunter**: ×1.5 (Critical thinking validation)
- **Axiom Analyst**: ×1.2 (Logical rigor)
- **LMS Architect**: ×1.0 (Information completeness)
- **Random Variable X**: ×0.8 (Cross-domain creativity)

**Top Rated Insights:**
1. [Insight 1] — Weighted Score: 92/100
2. [Insight 2] — Weighted Score: 87/100
3. [Insight 3] — Weighted Score: 83/100

### 📋 Reader Action Checklist
- [ ] Verify: [Factual claim that needs verification]
- [ ] Question: [Assumption that deserves doubt]
- [ ] Apply: [Methodology worth trying]
- [ ] Avoid: [Mistake the book warns against]

### 💡 Final Verdict
> [One paragraph synthesizing what this book offers in 2026, who should read it, and what to take away]

---

## 📚 Reference Information
- Book: [Book Name]
- Author: [Author]
- Analysis Date: [Date]
- Random Persona Used: [Role Name]
- Data Sources: [List all retrieveed external links]

Workflow

Step 1: Receive Input and Classify

User input falls into three types:

  • Book title only → Start [Method A: Web Search Retrieve]
  • Local file path → Start [Method B: Format Parsing]
  • Full link → Start [Method C: Link Retrieve]

Step 2: Content Extraction and Cleaning

Raw content → Remove ads/headers/footers → Chapter marking → Extract

Step 3: Parallel Four-Dimensional Analysis ⚡

v1.6.0 并行处理机制:使用 sessions_spawn 同时启动 4 个子代理,每个代理独立执行一个角色的分析任务。

v1.7.0 语言感知:并行执行时自动检测用户语言,生成对应语言的 prompt 和报告。

Language Detection Priority

1. Explicit language parameter (--lang)
2. User's message language
3. Book's original language
4. Default: English

Language Detection Function

def detect_output_language(user_message, book_title=None):
    """Detect output language"""
    
    # 1. Check explicit parameter
    if user_message.lang_param:
        return user_message.lang_param
    
    # 2. Detect user message language
    user_lang = detect_language(user_message.text)
    if user_lang in ['zh', 'zh-CN', 'zh-TW']:
        return 'zh'
    elif user_lang in ['ja']:
        return 'ja'
    elif user_lang in ['ko']:
        return 'ko'
    
    # 3. Detect book title language
    if book_title:
        book_lang = detect_language(book_title)
        if book_lang in ['zh', 'zh-CN', 'zh-TW']:
            return 'zh'
    
    # 4. Default to English
    return 'en'

Persona Prompt Templates (Multi-Language)

# Supported languages
SUPPORTED_LANGUAGES = ['en', 'zh', 'ja', 'ko', 'fr', 'de', 'es', 'pt', 'ru']

# Fallback mechanism: if no complete template for a language, fallback to English
FALLBACK_LANG = 'en'

def get_persona_prompt(persona_key, language, book_info):
    """Get persona prompt in specified language"""
    
    # 1. Try to get template for specified language
    if language in PERSONA_PROMPTS:
        template = PERSONA_PROMPTS[language].get(persona_key)
        if template:
            return template.format(**book_info)
    
    # 2. Fallback to English template
    template = PERSONA_PROMPTS[FALLBACK_LANG].get(persona_key)
    return template.format(**book_info)

PERSONA_PROMPTS = {
    "en": {
        "axiom_analyst": """You are the 'Axiom Analyst', using axiomatic thinking to decompose book content.

Book: {book_title}
Author: {author}

Task: Reduce the book's core viewpoints to indivisible atomic propositions.

Workflow:
1. Strip appearances: Identify all packaging (stories, cases, metaphors), extract pure viewpoint kernels
2. Trace premises: Find underlying assumptions supporting core viewpoints, mark as \"A1, A2, A3...\"
3. Reverse decomposition: If this conclusion fails, which premises must be false?
4. Minimal expression: Summarize the book's core in one sentence (max 30 words)
5. Title analysis: Decode the metaphor system of the book title

Output Format:
## Core Premises
[3-5 indivisible atomic propositions]

## Underlying Assumptions
- A1: [Assumption 1 - must be falsifiable]
- A2: [Assumption 2 - must be falsifiable]

## Title Metaphor Analysis
[Decode the book title's metaphor system]

## One-Sentence Summary
> [Core viewpoint, max 30 words]

Word count: 800-1500 words

Important: Output analysis results directly, no opening or closing pleasantries.""",
        
        "lms_architect": """You are the 'L-M-S Architect', must output specific L-M-S structure.

Book: {book_title}
Author: {author}

Task: First introduce book content, then compress into reusable knowledge cards.

L-M-S Structure Definition:
- **Logic**: Causal chain / derivation path of viewpoints
- **Method**: Executable methodology / tools / frameworks
- **Summary**: Minimal summary of core points (max 50 words)

Output Format:
## Chapter Structure
| Part | Chapter | Theme | Core Content |

## Character Relationship Network

Protagonist ├── Relationship Line 1 │ ├── Character A (Relationship Type) │ └── Character B (Relationship Type)


## Key Turning Points
| Event | Nature | Importance |

## Logic (Causal Chain)
[Causal chain: A→B→C]

## Method (Methodology)
[Executable methods or tools]

## Summary
> [Core viewpoint, max 50 words]

Word count: 1000-2000 words""",
        
        "black_swan_hunter": """You are the 'Black Swan Hunter', looking for black swan events and boundary conditions.

Book: {book_title}
Author: {author}

Task: Identify edge cases and failure points of conclusions.

Workflow:
1. Find counterexamples: What known facts conflict with the book's viewpoints?
2. Boundary detection: Under what conditions does this viewpoint fail?
3. Assumption challenge: If underlying assumptions are false, do conclusions still hold?
4. Butterfly effect: What possible chain reactions are ignored?
5. Contemporary significance: Why should 2026 readers read this book?

Output Format:
## Black Swan Events
[2-3 real cases or theoretical rebuttals conflicting with book's viewpoints]

## Boundary Conditions
| Condition | Reason for Failure | Verification Method |

## Assumption Vulnerability
[Chain reactions when underlying assumptions are challenged]

## Contemporary Significance Challenge
[Why should 2026 readers read this book?]

## Rebuttal and Defense
[Response to main criticisms, maintain dialectical balance]

Word count: 800-1500 words""",
        
        "random_variable_x": """You are 'Random Variable X', randomly loading an identity module.

Randomly selected identity: {random_role}
Focus: {role_focus}
Values: {role_values}

Book: {book_title}
Author: {author}

Task: Provide unique interpretation from the perspective of {random_role}.

Output Format:
## 🎲 Random Identity: {random_role}

### Role Background
[Identity background, profession, values]

### Unique Perspective
[What unique insights emerge when viewing the book from this perspective?]
> Must differ from other personas' perspectives, must produce cross-domain thinking

### Core Questions
[3 key questions this role would ask]
1. [Question 1]
2. [Question 2]
3. [Question 3]

### Cross-Domain Associations
[Connect the book with domain concepts, generate new understanding]

Word count: 600-1000 words"""
    },
    
    "zh": {
        "axiom_analyst": """你是「第一性原理师」,使用公理化思维分解书籍内容。

书籍:{book_title}
作者:{author}

任务:将书籍核心观点还原为不可再分的原子命题。

工作流程:
1. 剥离表象:识别所有包装(故事、案例、隐喻),提取纯观点内核
2. 追溯前提:找出支撑核心观点的底层假设,标记为\"A1, A2, A3...\"
3. 反向分解:如果这个结论失败,哪些前提必然为假?
4. 最小表达:用一句话总结本书核心(不超过30字)
5. 书名解析:解码书名本身的隐喻系统

输出格式:
## 核心前提
[3-5条不可再分解的原子命题]

## 底层假设
- A1: [假设1 - 必须可被证伪]
- A2: [假设2 - 必须可被证伪]

## 书名隐喻解析
[书名本身的隐喻系统]

## 一句话总结
> [核心观点,不超过30字]

字数要求:800-1500字

重要提醒:直接输出分析结果,不要有任何开场白或结尾客套话""",
        
        "lms_architect": """你是「结构化笔记官」,必须输出具体的 L-M-S 结构。

书籍:{book_title}
作者:{author}

任务:先介绍书籍内容,再压缩为可复用的知识卡片。

L-M-S 结构定义:
- **Logic**:因果链 / 观点的推导路径
- **Method**:可执行的方法论 / 工具 / 框架
- **Summary**:核心点的最小摘要(不超过50字)

输出格式:
## 章节结构
| 部分 | 章节 | 主题 | 核心内容 |

## 人物关系网络

主角 ├── 关系线1 │ ├── 人物A(关系类型) │ └── 人物B(关系类型)


## 关键转折点
| 事件 | 转折性质 | 重要程度 |

## Logic (逻辑链)
[因果链:A→B→C]

## Method (方法论)
[可执行的方法或工具]

## Summary (摘要)
> [核心观点,不超过50字]

字数要求:1000-2000字""",
        
        "black_swan_hunter": """你是「专业反驳者」,寻找「黑天鹅」事件和边界条件。

书籍:{book_title}
作者:{author}

任务:识别结论的边缘情况和失效点。

工作流程:
1. 找反例:有哪些已知事实与书中观点冲突?
2. 边界检测:在什么条件下,这个观点会失效?
3. 假设挑战:如果底层假设为假,结论是否仍然成立?
4. 蝴蝶效应:忽略了哪些可能的连锁反应?
5. 当代意义:2026年的读者为何要读这本书?

输出格式:
## 黑天鹅事件
[2-3个与书中观点冲突的真实案例或理论反驳]

## 边界条件
| 条件 | 观点失效原因 | 验证方式 |

## 假设脆弱性
[当底层假设被挑战时,会产生什么连锁反应?]

## 当代意义挑战
[2026年的读者为何要读这本书?]

## 反驳与辩护
[对主要批判的回应,保持辩证平衡]

字数要求:800-1500字""",
        
        "random_variable_x": """你是「随机变量 X」,随机加载一个身份模块。

本次随机选中的身份:{random_role}
关注点:{role_focus}
价值观:{role_values}

书籍:{book_title}
作者:{author}

任务:从{random_role}的视角提供独特解读。

输出格式:
## 🎲 随机身份:{random_role}

### 角色背景
[身份背景、职业、价值观]

### 独特视角
[从该视角看书会产生什么独特洞察?]
> 必须与其他角色的视角不同,必须产生跨界思考

### 核心问题
[该角色会提出的3个关键问题]
1. [问题1]
2. [问题2]
3. [问题3]

### 跨界联想
[将书籍与领域概念连接,产生新的理解]

字数要求:600-1000字"""
    },
    
    "ja": {
        "axiom_analyst": """あなたは「公理分析者」です。公理的思考を用いて書籍の内容を分解してください。

書籍:{book_title}
著者:{author}

タスク:書籍の核心的観点を分割不可能な原子命題に還元してください。

ワークフロー:
1. 表象を剥ぎ取る:すべての包装(物語、事例、隠喩)を識別し、純粋な観点の核を抽出
2. 前提を追跡する:核心的観点を支える基礎仮定を見つけ、「A1, A2, A3...」とマーク
3. 逆分解:この結論が失敗した場合、どの前提が偽でなければならないか?
4. 最小表現:本書の核心を一言で要約(30文字以内)
5. タイトル分析:書籍タイトルの隠喩システムを解読

出力形式:
## 核心前提
[3-5個の分割不可能な原子命題]

## 基礎仮定
- A1: [仮定1 - 反証可能でなければならない]
- A2: [仮定2 - 反証可能でなければならない]

## タイトル隠喩分析
[書籍タイトルの隠喩システムを解読]

## 一言要約
> [核心的観点、30文字以内]

文字数:800-1500文字

重要:分析結果を直接出力し、冒頭や結びの挨拶は不要""",
        
        "lms_architect": """あなたは「構造化ノート作成者」です。具体的なL-M-S構造を出力してください。

書籍:{book_title}
著者:{author}

タスク:まず書籍の内容を紹介し、再利用可能な知識カードに圧縮してください。

L-M-S構造定義:
- **Logic**:因果連鎖 / 観点の導出パス
- **Method**:実行可能な方法論 / ツール / フレームワーク
- **Summary**:核心の最小要約(50文字以内)

出力形式:
## 章構造
| 部分 | 章 | テーマ | 核心内容 |

## 人物関係ネットワーク

主人公 ├── 関係線1 │ ├── 人物A(関係タイプ) │ └── 人物B(関係タイプ)


## 重要な転換点
| 出来事 | 転換の性質 | 重要度 |

## Logic(論理連鎖)
[因果連鎖:A→B→C]

## Method(方法論)
[実行可能な方法またはツール]

## Summary(要約)
> [核心的観点、50文字以内]

文字数:1000-2000文字""",
        
        "black_swan_hunter": """あなたは「ブラックスワン探索者」です。ブラックスワン事象と境界条件を探してください。

書籍:{book_title}
著者:{author}

タスク:結論のエッジケースと失敗点を識別してください。

ワークフロー:
1. 反例を見つける:書籍の観点と矛盾する既知の事実は何か?
2. 境界検出:どのような条件下でこの観点は失敗するか?
3. 仮定挑戦:基礎仮定が偽の場合、結論は依然として成立するか?
4. バタフライ効果:どのような可能な連鎖反応が無視されているか?
5. 現代的意義:2026年の読者はなぜこの本を読むべきか?

出力形式:
## ブラックスワン事象
[書籍の観点と矛盾する2-3個の実例または理論的反論]

## 境界条件
| 条件 | 失敗理由 | 検証方法 |

## 仮定の脆弱性
[基礎仮定が挑戦された時、どのような連鎖反応が生じるか?]

## 現代的意義の挑戦
[2026年の読者はなぜこの本を読むべきか?]

## 反論と弁護
[主な批判への対応、弁証法的バランスを維持]

文字数:800-1500文字""",
        
        "random_variable_x": """あなたは「確率変数X」です。ランダムにアイデンティティモジュールをロードします。

ランダムに選択されたアイデンティティ:{random_role}
焦点:{role_focus}
価値観:{role_values}

書籍:{book_title}
著者:{author}

タスク:{random_role}の視点から独自の解釈を提供してください。

出力形式:
## 🎲 ランダムアイデンティティ:{random_role}

### 役割の背景
[アイデンティティの背景、職業、価値観]

### 独自の視点
[この視点から書籍を見ると、どのような独自の洞察が生まれるか?]
> 他のペルソナの視点と異なり、クロスドメイン思考を生み出す必要がある

### 核心的質問
[この役割が提起する3つの重要な質問]
1. [質問1]
2. [質問2]
3. [質問3]

### クロスドメイン連想
[書籍をドメイン概念と接続し、新しい理解を生み出す]

文字数:600-1000文字"""
    },
    
    "ko": {
        "axiom_analyst": """당신은 '공리 분석가'입니다. 공리적 사고를 사용하여 책 내용을 분해하세요.

책: {book_title}
저자: {author}

과제: 책의 핵심 관점을 더 이상 분해할 수 없는 원자 명제로 환원하세요.

워크플로:
1. 표면 벗기기: 모든 포장(이야기, 사례, 은유)을 식별하고 순수한 관점의 핵심 추출
2. 전제 추적: 핵심 관점을 지탱하는 기초 가정을 찾아 'A1, A2, A3...'로 표시
3. 역분해: 이 결론이 실패하면 어떤 전제가 거짓이어야 하는가?
4. 최소 표현: 책의 핵심을 한 문장으로 요약(30자 이내)
5. 제목 분석: 책 제목의 은유 시스템 해독

출력 형식:
## 핵심 전제
[3-5개의 분해 불가능한 원자 명제]

## 기초 가정
- A1: [가정 1 - 반증 가능해야 함]
- A2: [가정 2 - 반증 가능해야 함]

## 제목 은유 분석
[책 제목의 은유 시스템 해독]

## 한 문장 요약
> [핵심 관점, 30자 이내]

글자 수: 800-1500자

중요: 분석 결과를 직접 출력하고, 시작이나 끝의 인사말은 필요 없음""",
        
        "lms_architect": """당신은 '구조화 노트 작성자'입니다. 구체적인 L-M-S 구조를 출력하세요.

책: {book_title}
저자: {author}

과제: 먼저 책 내용을 소개하고, 재사용 가능한 지식 카드로 압축하세요.

L-M-S 구조 정의:
- **Logic**: 인과 연쇄 / 관점의 도출 경로
- **Method**: 실행 가능한 방법론 / 도구 / 프레임워크
- **Summary**: 핵심의 최소 요약(50자 이내)

출력 형식:
## 장 구조
| 부분 | 장 | 주제 | 핵심 내용 |

## 인물 관계 네트워크

주인공 ├── 관계선 1 │ ├── 인물 A (관계 유형) │ └── 인물 B (관계 유형)


## 핵심 전환점
| 사건 | 전환 성격 | 중요도 |

## Logic (논리 연쇄)
[인과 연쇄: A→B→C]

## Method (방법론)
[실행 가능한 방법 또는 도구]

## Summary (요약)
> [핵심 관점, 50자 이내]

글자 수: 1000-2000자""",
        
        "black_swan_hunter": """당신은 '블랙 스왐 탐색자'입니다. 블랙 스왐 사건과 경계 조건을 찾으세요.

책: {book_title}
저자: {author}

과제: 결론의 엣지 케이스와 실패 지점을 식별하세요.

워크플로:
1. 반례 찾기: 책의 관점과 충돌하는 알려진 사실은 무엇인가?
2. 경계 검출: 어떤 조건에서 이 관점이 실패하는가?
3. 가정 도전: 기초 가정이 거짓이면 결론이 여전히 성립하는가?
4. 나비 효과: 어떤 가능한 연쇄 반응이 무시되고 있는가?
5. 현대적 의미: 2026년 독자가 왜 이 책을 읽어야 하는가?

출력 형식:
## 블랙 스왐 사건
[책의 관점과 충돌하는 2-3개의 실제 사례 또는 이론적 반박]

## 경계 조건
| 조건 | 실패 이유 | 검증 방법 |

## 가정의 취약성
[기초 가정이 도전받을 때 어떤 연쇄 반응이 일어나는가?]

## 현대적 의미 도전
[2026년 독자가 왜 이 책을 읽어야 하는가?]

## 반박과 변호
[주요 비판에 대한 대응, 변증법적 균형 유지]

글자 수: 800-1500자""",
        
        "random_variable_x": """당신은 '확률 변수 X'입니다. 무작위로 정체성 모듈을 로드합니다.

무작위로 선택된 정체성: {random_role}
초점: {role_focus}
가치관: {role_values}

책: {book_title}
저자: {author}

과제: {random_role}의 관점에서 독특한 해석을 제공하세요.

출력 형식:
## 🎲 무작위 정체성: {random_role}

### 역할 배경
[정체성 배경, 직업, 가치관]

### 독특한 관점
[이 관점에서 책을 보면 어떤 독특한 통찰이 생기는가?]
> 다른 페르소나의 관점과 달라야 하며, 크로스 도메인 사고를 생성해야 함

### 핵심 질문
[이 역할이 제기할 3가지 핵심 질문]
1. [질문 1]
2. [질문 2]
3. [질문 3]

### 크로스 도메인 연상
[책을 도메인 개념과 연결하여 새로운 이해 생성]

글자 수: 600-1000자"""
    }
}

# Additional languages (French, German, Spanish, Portuguese, Russian) use English template as base
# But require output in corresponding language
ADDITIONAL_LANG_INSTRUCTIONS = {
    "fr": "Important: Output all analysis in French (Français).",
    "de": "Important: Output all analysis in German (Deutsch).",
    "es": "Important: Output all analysis in Spanish (Español).",
    "pt": "Important: Output all analysis in Portuguese (Português).",
    "ru": "Important: Output all analysis in Russian (Русский)."
}

def get_persona_prompt(persona_key, language, book_info):
    """
    Get persona prompt in specified language
    
    Supported languages:
    - en (English) - Complete template
    - zh (Chinese) - Complete template
    - ja (Japanese) - Complete template
    - ko (Korean) - Complete template
    - fr (French) - English template + French output instruction
    - de (German) - English template + German output instruction
    - es (Spanish) - English template + Spanish output instruction
    - pt (Portuguese) - English template + Portuguese output instruction
    - ru (Russian) - English template + Russian output instruction
    - Other languages - English template
    """
    
    # 1. Try to get complete template for specified language
    if language in PERSONA_PROMPTS:
        template = PERSONA_PROMPTS[language].get(persona_key)
        if template:
            return template.format(**book_info)
    
    # 2. For other supported languages, use English template + language instruction
    template = PERSONA_PROMPTS[FALLBACK_LANG].get(persona_key)
    base_prompt = template.format(**book_info)
    
    # Add language output instruction
    if language in ADDITIONAL_LANG_INSTRUCTIONS:
        base_prompt += f"\n\n{ADDITIONAL_LANG_INSTRUCTIONS[language]}"
    
    return base_prompt

Parallel Execution Code (with Language Detection)

# 1. Detect output language
output_lang = detect_output_language(user_message, book_title)

# 2. Get prompt template for the language
prompts = PERSONA_PROMPTS.get(output_lang, PERSONA_PROMPTS["en"])

# 3. Launch 4 persona analyses in parallel
personas = [
    {"key": "axiom_analyst", "name": "Axiom Analyst" if output_lang == "en" else "第一性原理师"},
    {"key": "lms_architect", "name": "L-M-S Architect" if output_lang == "en" else "结构化笔记官"},
    {"key": "black_swan_hunter", "name": "Black Swan Hunter" if output_lang == "en" else "黑天鹅猎手"},
    {"key": "random_variable_x", "name": "Random Variable X" if output_lang == "en" else "随机变量 X"}
]

# 4. Execute in parallel using sessions_spawn (with language parameter)
for persona in personas:
    prompt_template = prompts[persona["key"]]
    task_prompt = prompt_template.format(
        book_title=book_title,
        author=author,
        random_role=random_role,
        role_focus=role_focus,
        role_values=role_values
    )
    
    sessions_spawn(
        task=task_prompt,
        mode="run",
        runtime="subagent"
    )

# 5. Wait for all subagents to complete
sessions_yield(message=f"Waiting for all persona analyses to complete (Output language: {output_lang})")

OpenClaw Tool Call Example (English User)

# User message: "Please deep read The Three-Body Problem"
# Detected language: en

# 1. Launch Axiom Analyst (English prompt)
sessions_spawn(
  task: "You are the 'Axiom Analyst', using axiomatic thinking to decompose book content. Book: The Three-Body Problem...",
  mode: "run",
  runtime: "subagent"
)

# 2. Launch L-M-S Architect (English prompt)
sessions_spawn(
  task: "You are the 'L-M-S Architect', must output specific L-M-S structure. Book: The Three-Body Problem...",
  mode: "run",
  runtime: "subagent"
)

# 3. Launch Black Swan Hunter (English prompt)
sessions_spawn(
  task: "You are the 'Black Swan Hunter', looking for black swan events and boundary conditions...",
  mode: "run",
  runtime: "subagent"
)

# 4. Launch Random Variable X (English prompt)
sessions_spawn(
  task: "You are 'Random Variable X', randomly loading an identity module...",
  mode: "run",
  runtime: "subagent"
)

# 5. Wait for all results
sessions_yield(message: "Waiting for all persona analyses to complete (Output language: en)")

OpenClaw Tool Call Example (Chinese User)

# User message: "深度阅读《三体》"
# Detected language: zh

# 1. Launch 第一性原理师 (Chinese prompt)
sessions_spawn(
  task: "你是「第一性原理师」,使用公理化思维分解书籍内容。书籍:《三体》...",
  mode: "run",
  runtime: "subagent"
)

# 2. Launch 结构化笔记官 (Chinese prompt)
sessions_spawn(
  task: "你是「结构化笔记官」,必须输出具体的 L-M-S 结构...",
  mode: "run",
  runtime: "subagent"
)

# 3. Launch 黑天鹅猎手 (Chinese prompt)
sessions_spawn(
  task: "你是「专业反驳者」,寻找「黑天鹅」事件和边界条件...",
  mode: "run",
  runtime: "subagent"
)

# 4. Launch 随机变量 X (Chinese prompt)
sessions_spawn(
  task: "你是「随机变量 X」,随机加载一个身份模块...",
  mode: "run",
  runtime: "subagent"
)

# 5. Wait for all results
sessions_yield(message: "等待所有角色分析完成(输出语言:zh)")

并行处理流程图

┌─────────────────────────────────────────────────────────────────┐
│                    Step 3: 并行四维分析                         │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌────────┐│
│   │ Axiom       │  │ L-M-S       │  │ Black Swan  │  │ Random ││
│   │ Analyst     │  │ Architect   │  │ Hunter      │  │ Var X  ││
│   └──────┬──────┘  └──────┬──────┘  └──────┬──────┘  └───┬────┘│
│          │                │                │             │      │
│          └────────────────┴────────────────┴─────────────┘      │
│                                    │                            │
│                                    ▼                            │
│                          ┌─────────────────┐                    │
│                          │  结果聚合       │                    │
│                          │  Synthesis      │                    │
│                          └─────────────────┘                    │
└─────────────────────────────────────────────────────────────────┘

时间对比:
- 顺序执行:~4T(每个角色耗时 T)
- 并行执行:~T(所有角色同时完成)
- 效率提升:约 75%

Step 4: H-V Analysis (Optional)

If user requests enhanced mode:

  • Diachronic → Intellectual history positioning
  • Synchronic → Competitor benchmarking
  • Intersection → Cross-axis insight

Step 5: Synthesis and Save

  1. Aggregate all persona outputs
  2. Generate complete Markdown report
  3. Save to workspace/reports/
  4. Return report path to user

Quality Assessment Module

Analysis Quality Metrics

DimensionMetricWeight
DepthAtomic proposition count25%
StructureL-M-S completeness20%
CriticalityEdge case count20%
DiversityRandom persona insight uniqueness15%
ContextH-V analysis coverage20%

Quality Score Calculation

def calculate_quality_score(analysis_result):
    """Calculate overall quality score (0-100)"""
    
    scores = {
        "depth": count_atomic_propositions(analysis_result) * 5,  # max 25
        "structure": assess_lms_completeness(analysis_result) * 20,  # max 20
        "criticality": count_edge_cases(analysis_result) * 4,  # max 20
        "diversity": assess_insight_uniqueness(analysis_result) * 15,  # max 15
        "context": assess_hv_coverage(analysis_result) * 20  # max 20
    }
    
    return sum(scores.values())  # max 100

Quality Report Output

## 📊 Analysis Quality Report

| Dimension | Score | Max |
|-----------|-------|-----|
| Depth | 22 | 25 |
| Structure | 18 | 20 |
| Criticality | 16 | 20 |
| Diversity | 12 | 15 |
| Context | 18 | 20 |
| **Total** | **86** | **100** |

### Quality Assessment
- ✅ Excellent depth analysis
- ✅ Well-structured notes
- ⚠️ Consider more edge cases
- ✅ Unique persona perspective
- ✅ Comprehensive H-V analysis

Usage Examples

Example 1: Book Title Only

User: Use deep reading to analyze "Atomic Habits"
→ Triggers Method A (web search)
→ Retrievees metadata from Douban, Google Books, Wikipedia
→ Runs 4-persona analysis
→ Saves report to reports/Atomic_Habits_Analysis_2026-04-26.md

Example 2: Local File

User: Deep read this file: /path/to/book.pdf
→ Triggers Method B (format parsing)
→ Parses PDF to text
→ Runs 4-persona analysis
→ Saves report

Example 3: Link

User: Analyze this book from a public link
→ Triggers Method C (Link retrieve)
→ Saves and parses
→ Runs 4-persona analysis
→ Saves report

🌐 Language Output Module

Supported Languages

LanguageCodeNative Name
EnglishenEnglish
Chinese (Simplified)zh-CN简体中文
Chinese (Traditional)zh-TW繁體中文
Japaneseja日本語
Koreanko한국어
FrenchfrFrançais
GermandeDeutsch
SpanishesEspañol
PortugueseptPortuguês
RussianruРусский

Language Detection Logic

def detect_output_language(user_input, book_language=None):
    """Determine output language based on context"""
    
    # Priority order:
    # 1. Explicit language parameter
    # 2. User's message language
    # 3. Book's original language
    # 4. Default (English)
    
    if user_input.language_param:
        return user_input.language_param
    
    detected = detect_language(user_input.text)
    if detected in SUPPORTED_LANGUAGES:
        return detected
    
    if book_language:
        return book_language
    
    return 'en'  # Default

Language-Specific Output Templates

English Template

## 🔬 Axiom Analyst
### Core Premises
[Atomic propositions in English]

### Underlying Assumptions
- A1: [Assumption 1]
- A2: [Assumption 2]

Chinese Template (Simplified)

## 🔬 第一性原理师
### 核心前提
[原子命题,中文表达]

### 底层假设
- A1: [假设 1]
- A2: [假设 2]

Japanese Template

## 🔬 公理分析者
### 核心前提
[原子命題、日本語で]

### 基礎仮定
- A1: [仮定 1]
- A2: [仮定 2]

Persona Name Localization

PersonaEnglishChineseJapaneseKorean
Axiom AnalystAxiom Analyst第一性原理师公理分析者공리 분석가
L-M-S ArchitectL-M-S Architect结构化笔记官構造化ノート作成者구조화 노트 작성자
Black Swan HunterBlack Swan Hunter黑天鹅猎手ブラックスワン探索者블랙 스왐 탐색자
Random Variable XRandom Variable X随机变量 X確率変数 X확률 변수 X

Section Header Localization

SectionEnglishChineseJapanese
Core PremisesCore Premises核心前提核心前提
Underlying AssumptionsUnderlying Assumptions底层假设基礎仮定
LogicLogic逻辑論理
MethodMethod方法方法
SummarySummary摘要要約
Black Swan EventsBlack Swan Events黑天鹅事件ブラックスワン事件
Edge CasesEdge Cases边界条件境界条件
Diachronic AnalysisDiachronic Analysis纵向分析縦断分析
Synchronic AnalysisSynchronic Analysis横向分析横断分析

Usage Examples with Language

# English output (default)
User: Analyze "Atomic Habits" with deep reading

# Chinese output
User: 用深度阅读分析《原子习惯》
User: Analyze "Atomic Habits" --lang zh-CN

# Japanese output
User: 深読みで「アトミック・ハビッツ」を分析して
User: Analyze "Atomic Habits" --lang ja

# Explicit language parameter
User: Analyze "三体" --lang en  # Chinese book, English output

Language-Aware Report Naming

def generate_report_filename(book_name, language, date):
    """Generate language-aware filename"""
    
    lang_suffix = {
        'en': '',
        'zh-CN': '_中文',
        'zh-TW': '_繁體',
        'ja': '_日本語',
        'ko': '_한국어'
    }.get(language, '')
    
    return f"{book_name}_Deep_Analysis{lang_suffix}_{date}.md"

Configuration

Environment Variables

DEEP_READER_REPORTS_DIR=/root/.openclaw/workspace/reports
DEEP_READER_TEMP_DIR=/tmp/deep-reader
DEEP_READER_DEFAULT_MODE=hv-enhanced  # standard | hv-enhanced
DEEP_READER_DEFAULT_LANG=auto  # auto | en | zh-CN | ja | ko | ...

Skill Parameters

ParameterDefaultDescription
modehv-enhancedAnalysis mode: speed
langautoOutput language (auto-detect if auto)
save_reporttrueAuto-save report
random_persona_categoryallRestrict random persona pool
quality_threshold70Minimum quality score to pass

Mode Comparison

ModeTimePersonasOutputBest For
speed~30sAxiom Analyst onlyCore premises + Summary + QuestionsQuick screening
standard~2minAll 4 personasFull 4-persona analysisDeep understanding
hv-enhanced~5minAll 4 + H-V4-persona + Horizontal-VerticalComprehensive research

Dependencies & Installation

Core Dependencies (Auto-installed with skill)

DependencyPurposeNotes
web_toolRetrieve web contentBuilt-in OpenClaw tool
search_toolSearch book resourcesBuilt-in skill

File Parsing Dependencies (Optional)

All file parsing uses pure Python libraries - no system binaries required.

FormatLibraryInstallNotes
TXTNone-✅ Always available
MDNone-✅ Always available
PDFpdfplumberpip install pdfplumberPure Python, no system deps
EPUBebooklib, beautifulsoup4pip install ebooklib beautifulsoup4Pure Python
MOBIConvert to EPUB first-Use online converter

Quick Install (for local file parsing)

pip install pdfplumber ebooklib beautifulsoup4 lxml

Or install from requirements.txt:

pip install -r requirements.txt

Dependency Check

python3 -c "import pdfplumber; print('PDF OK')"
python3 -c "import ebooklib; print('EPUB OK')"

Usage Examples

Example 1: Speed Reading Mode (Quick Analysis)

User: 速读《原子习惯》
User: Speed read "Atomic Habits"
User: 快速阅读《三体》

→ Triggers Speed Reading Mode
→ Uses only Axiom Analyst persona
→ Output: Core premises + One-sentence summary + Key questions
→ Time: ~30 seconds
→ Saves mini-report to reports/<Book_Name>_Speed_Read_<Date>.md

Example 2: Book Title Only (Web Search)

User: Analyze "Atomic Habits" with deep reading
User: Use four-dimensional deep reading on "Tao Te Ching"
User: 用四维深度阅读分析《漫长的旅途》

→ Triggers Method A (web search)
→ Retrievees metadata from Douban, Google Books, Wikipedia
→ Runs 4-persona analysis
→ Saves report to reports/<Book_Name>_Deep_Analysis_<Date>.md

Example 2: Local TXT File

User: Deep read this file: /path/to/book.txt
User: 分析这个文件:/home/user/我的书.txt

→ Triggers Method B (format parsing)
→ Auto-detects encoding (UTF-8/GBK/GB2312/Big5)
→ Runs 4-persona analysis
→ Saves report

Example 3: Local Markdown File

User: Analyze /path/to/notes.md with deep reading
User: 深度阅读这个 Markdown:./chapter1.md

→ Triggers Method B (format parsing)
→ Detects ## headers as chapter markers
→ Runs 4-persona analysis

Example 4: PDF File (requires pdftotext)

User: Deep read /path/to/book.pdf
User: 分析 PDF:./saves/ebook.pdf

→ Triggers Method B (PDF parsing)
→ Uses pdftotext to extract text with layout preservation
→ Detects chapter markers
→ Runs 4-persona analysis

Example 5: EPUB File (requires ebooklib)

User: Analyze /path/to/book.epub with four-dimensional deep reading
User: 深度阅读 EPUB:./books/novel.epub

→ Triggers Method B (EPUB parsing)
→ Extracts HTML content from EPUB
→ Preserves chapter structure
→ Runs 4-persona analysis

Example 6: Link (Direct Retrieve)

User: Analyze this book from a public link
User: 深度阅读这个在线电子书链接

→ Triggers Method C (Link retrieve)
→ Saves to workspace
→ Detects file type from Content-Type header
→ Parses and analyzes
→ Cleans up temp file

Example 7: With Language Parameter

User: Analyze "三体" --lang en        # Chinese book, English output
User: 分析 "Atomic Habits" --lang zh-CN  # English book, Chinese output
User: 深読みで「道徳経」--lang ja       # Japanese output

Example 8: With Mode Parameter

User: Analyze "1984" --mode speed        # Speed reading (~30s)
User: 分析《红楼梦》--mode standard     # Standard 4-persona
User: 深度阅读《三体》--mode hv-enhanced  # Full H-V analysis
User: 速读《原子习惯》                    # Speed mode (trigger keyword)

✅ 质检清单 (Quality Checklist)

报告生成后必须通过以下质检项,不合格则返工修正:

一、角色输出完整性

检查项标准通过条件
第一性原理师800-1500字包含核心前提、底层假设、书名隐喻、一句话总结
结构化笔记师1000-2000字包含章节结构、人物网络、转折点、L-M-S
黑天鹅猎手800-1500字包含黑天鹅事件、边界条件、假设脆弱性
随机变量X600-1000字包含角色背景、独特视角、核心问题、跨界联想

二、内容质量标准

检查项标准检查方法
原子命题不可再分每条核心前提都是最小单元尝试拆分,无法拆分则通过
假设可证伪每条底层假设都可被证伪存在反例则通过
反驳有事实支撑每个黑天鹅事件有来源标注来源则通过
边界条件可验证每个边界条件可被检验存在检验方法则通过
视角真正独特随机角色视角不与前三个重复无重复观点则通过

三、横纵分析质量(H-V模式)

检查项标准通过条件
纵向叙事完整有起源、演进、阶段划分故事线完整则通过
横向对比充分至少对比3个同类作品对比表完整则通过
交汇洞察新颖不是前文内容的缩写有新判断则通过

四、写作风格检查

检查项禁止检查方法
无AI套话"首先...其次...最后"、"综上所述"未出现则通过
无空洞词"赋能"、"抓手"、"打造闭环"未出现则通过
无教科书开头"在当今...的时代"、"随着...的发展"未出现则通过
无高频踩雷"说白了"、"意味着什么?"、"本质上"出现<2次则通过

五、信息来源标注

检查项标准通过条件
关键事实有来源重要论断标注出处有来源链接则通过
暂缺信息诚实标注不编造无法获取的信息标注"暂缺"则通过

六、输出路径检查

检查项标准通过条件
文件保存目录必须在 /root/.openclaw/workspace/reports/目录正确则通过
文件命名规范格式:[书名]_[模式]_[日期].md命名规范则通过
文件存在性报告生成后文件必须实际存在文件存在则通过
文件非空文件大小 > 1KB有内容则通过

质检评分计算

def calculate_quality_score(report):
    """计算质检总分 (0-100)"""
    
    scores = {
        "角色完整性": check_persona_completeness(report) * 25,  # max 25
        "内容质量": check_content_quality(report) * 25,  # max 25
        "横纵分析": check_hv_quality(report) * 20,  # max 20
        "写作风格": check_writing_style(report) * 15,  # max 15
        "来源标注": check_source_attribution(report) * 15  # max 15
    }
    
    total = sum(scores.values())
    return {
        "scores": scores,
        "total": total,
        "passed": total >= 70  # 70分及格
    }

质检报告输出模板

## 📊 质检报告

| 检查维度 | 得分 | 满分 | 状态 |
|----------|------|------|------|
| 角色完整性 | 23 | 25 | ✅ |
| 内容质量 | 22 | 25 | ✅ |
| 横纵分析 | 18 | 20 | ✅ |
| 写作风格 | 14 | 15 | ✅ |
| 来源标注 | 13 | 15 | ⚠️ |
| **总分** | **90** | **100** | **✅ 通过** |

### 改进建议
- ⚠️ 来源标注:建议补充更多数据来源

📁 报告生成检查 (Report Generation Check) - v1.7.2

报告生成后必须确认以下内容:

一、文件保存检查

检查项标准通过条件
文件存在报告文件已创建ls workspace/reports/ 存在则通过
命名规范格式:书名-四维深度阅读-YYYY-MM-DD.md符合格式则通过
内容非空文件大小 > 1KB文件不为空则通过

二、仲裁者总结检查 (v1.7.2新增)

检查项标准通过条件
核心共识存在包含 ## 核心共识## 🎯找到则通过
分歧分析存在包含 ## 分歧## ⚔️找到则通过
加权可信度包含权重乘数说明包含 BS×1.5 等则通过
行动清单包含 4 项检查 (Verify/Question/Apply/Avoid)4项齐全则通过
最终评判包含一句话总结找到 [Final Verdict][最终评判] 则通过

三、报告完整性快速检查

# 脚本:report_check.sh
#!/bin/bash
REPORT_FILE="$1"

echo "=== 报告生成检查 ==="

# 1. 文件存在
if [ -f "$REPORT_FILE" ]; then
    echo "✅ 文件存在: $REPORT_FILE"
else
    echo "❌ 文件不存在: $REPORT_FILE"
    exit 1
fi

# 2. 包含4个角色
for role in "第一性原理师" "结构化笔记官" "黑天鹅猎手" "随机变量"; do
    if grep -q "$role\|Axiom\|LMS\|Black Swan" "$REPORT_FILE"; then
        echo "✅ 包含角色: $role"
    else
        echo "⚠️ 缺少角色: $role"
    fi
done

# 3. 包含仲裁者总结 (v1.7.2)
if grep -q "仲裁者\|Arbiter\|核心共识\|Consensus" "$REPORT_FILE"; then
    echo "✅ 包含仲裁者总结"
else
    echo "⚠️ 缺少仲裁者总结 (v1.7.2)"
fi

echo "=== 检查完成 ==="

四、多语言适配检查

语言检查项
中文 (zh)包含"仲裁者"、"核心共识"、"分歧"
英文 (en)包含"Arbiter"、"Consensus"、"Dissent"
日文 (ja)包含"仲裁者"、"コア"、"不合"
韩文 (ko)包含"중재자"、"합의"、"不合"

📈 Performance Metrics (v1.5.0)

Data Fetching Success Rate

MetricBeforeAfterImprovement
Success Rate~70%~95%+25%
Avg Response Time3-5s1-2s (cached)-60%
Retry Coverage0%100%+100%
Cache Hit Rate0%~40%+40%

Cache Statistics

# 查看缓存统计
from book_fetcher_enhanced import get_cache_stats
stats = get_cache_stats()
# 输出: {"total": 15, "size_mb": 0.05}

File Format Details

TXT File Parsing

  • Encoding Detection: UTF-8 → GBK → GB2312 → Big5 (auto-tried in order)
  • Chapter Detection: Regex patterns for common chapter markers
    • Chinese: 第 X 章, 第 X 部分, 第 X 卷
    • English: Chapter X, Part X, Section X
    • Numeric: 1., 1.1, etc.

Markdown File Parsing

  • Chapter Detection: ## headers as chapter markers
  • Structure Preservation: Headers, lists, code blocks preserved
  • Encoding: UTF-8 (default), GBK fallback

PDF File Parsing

  • Tool: pdftotext from poppler-utils
  • Layout: Preserved with -layout flag
  • Limitation: Scanned PDFs (images) require OCR (not supported)

EPUB File Parsing

  • Tool: ebooklib + BeautifulSoup
  • Structure: HTML parsed, chapter titles extracted from <h1>/<h2>
  • Metadata: Title, author extracted from EPUB metadata

MOBI File Parsing

  • Tool: calibre (ebook-convert)
  • Process: MOBI → EPUB → Parse
  • Note: Calibre is large (~200MB), install only if needed

License

MIT License

Changelog

v1.7.5 (2026-05-06)

  • 新增标准模式全书内容简介输出
  • 新增质检输出路径检查

v1.7.4 (2026-05-06)

  • 新增自动搜索书评和书籍详细信息

v1.7.3 (2026-05-03)

  • 新增速读模式,30秒快速分析

v1.7.2 (2026-05-02)

  • 新增仲裁者总结模块

v1.7.1 (2026-04-30)

  • 新增多语言用户引导

v1.7.0 (2026-04-28)

  • 新增多语言并行处理支持

v1.6.0 (2026-04-28)

  • 新增并行角色处理,速度提升75%

v1.5.0 (2026-04-27)

  • 新增多源数据获取优化

v1.4.4 (2026-04-27)

  • 移除subprocess,仅保留纯Python

v1.2.0 (2026-04-26)

  • 新增完整文件解析文档

v1.1.0 (2026-04-26)

  • 新增多语言输出支持

v1.0.0 (2026-04-26)

  • 初始版本发布