agentsclimarketplace

Scholar wendao skill

Skill tizzy916/scholar-wendao-skill

学者问道:为人文社科学者构建可调用的思想分析工具。 输入学者名/研究领域,自动多语言采集著作、二手文献、传记与学术争论, 提炼出可在你的研究中调用的"分析镜片"——而不是聊天机器人。 默认输出第三人称分析模式,对话/角色扮演作为 opt-in。 触发词:「学者问道」「问道于XX」「蒸馏学者」「构建XX的分析镜片」 「XX的研究方法」「XX视角」「scholar-wendao」「XX-perspective」「为XX建一个 skill」。 模糊触发:「我研究XX,需要某种分析框架」「有没有一种学者视角能帮我看待这个材料」。From its SKILL.md

Install
npx -y skills add tizzy916/scholar-wendao-skill

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 20 stars20 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

66.5 KB, ~24.8k tokens by cl100k_base, as published. Nobody here has run it

学者问道 · Scholar-Wendao

问道于古今学者 · Ask the way of scholars across time

核心理念

学者问道不造人,构建分析镜片。

人文社科研究者真正需要的不是"和福柯聊天",而是把福柯的分析镜片装到自己的研究流程里——读到一段材料,能立刻问"用这个学者的概念框架看,会怎么解读"。

一个好的学者 perspective skill 是一套可运行的学术分析工具箱

  • 他用什么概念地图理解问题?(核心理论术语网络)
  • 他的方法论进路是什么?(碰到一个现象先问什么、怎么组织证据、如何论证)
  • 他的学派定位智识谱系?(受谁影响、影响了谁、与同代人的差异化)
  • 他的论战与立场转变?(公开争论暴露的真实判断)
  • 他的行文风格与概念语言?(学术写作中的概念使用方式,不是"语气")
  • 他的人格与处世?(性格、家庭、形成性事件——影响思想但常被忽略)
  • 做不到什么?(默会知识、化石化、传记修辞污染——诚实边界)

关键区分:捕捉的是 HOW they analyze,不是 WHAT they wrote

与人格 skill 通用工具的根本差异

  • 默认输出第三人称分析("从 Stiegler 的 organology 视角看,这个现象的技术外在化逻辑是……"),而非第一人称扮演
  • 对话/角色扮演为 opt-in,必须用户主动激活
  • 信息源严格分级(一手 / 二手 / 传记类 / 学生回忆,每条标注)
  • 直面六大学术批评(默会知识、思想化石化、公开 vs 私下、传记修辞、漫画化、死亡-尊重边界)

双工作流架构(v0.4.2)

scholar-wendao 的执行被显式分为两个独立可触发的子工作流,加一个共享数据层。

                       ┌─ _library_config.md (配置)
共享数据层 ──────────────┼─ _acquisition_manifest.{md,json} (资料状态 + 4 tier 标注)
                       ├─ {Vault}/Library/{_files,Cards}/ (Vault 内的真源)
                       └─ examples/{slug}-perspective/_pdf_evidence/ (蒸馏证据)

┌─ Workflow A · 图书馆建设(Library Building)─────────────────────┐
│ 触发: "搜集 X 的资料" / "为 X 建库" / "build-library X"        │
│   A.0 配置(_library_config.md)                                │
│   A.1 Metadata 全收集(无漏 manifest)                          │
│   A.2 Tier 1+2 自动下载(OA / yt-dlp / scrape)                │
│   A.3 Tier 3+4 manifest 输出(待手动 / 浏览器助手项)           │
│   A.4 用户主动导入 ← intake_manual_pdf.py(可重复跑)          │
│   A.5 generate_library_cards(Library → Cards)                 │
│ 退出: Library 增长 + acquisition_manifest 标记当前覆盖率        │
└──────────────────────────────────────────────────────────────────┘
                              │  (可独立运行多轮)
                              │
┌─ Workflow B · 学者蒸馏(Scholar Distillation)────────────────────┐
│ 触发: "蒸馏 X" / "做 X 的分析镜片" / "distill X"                │
│ 前置: Workflow A 至少跑过一次(Library 有 ≥ 5 部 PDF 推荐)    │
│   B.1 extract_pdf_evidence(基于 Library 当前状态)             │
│   B.2 7 agent 调研(research / biography)                      │
│   B.3 框架提炼(concepts / heuristics / genealogy / etc.)      │
│   B.4 SKILL.md 构建                                             │
│   B.5 质量验证                                                   │
│   B.6 Vault 同步(回灌 wikilinks)                              │
│ 退出: Perspective Skill 产出 + Vault wikilinks 更新             │
└──────────────────────────────────────────────────────────────────┘

默认入口 "学者问道 X" = A → B 串行(向后兼容 v0.4.1 端到端流程)
增量入口:
  - "更新 X 库" / "为 X 补料" → 仅跑 A(含 A.4 主动导入)
  - "重蒸 X" / "用新资料重做 X 镜片" → 仅跑 B(基于扩充后 Library 整体重做)
  - "更新 X 的 skill" → 轻量 update(v0.4.1 既有逻辑,仅增补不重写)

关键设计原则

  1. A 与 B 通过 _acquisition_manifest.json 解耦 —— B 不假设 A 已完成,只读 manifest 中已下载的部分作为 evidence 源。
  2. A.4 主动导入是一等公民,不是 fallback。用户随时可"我有一本 PDF,加到 X 的库",工具自动重命名 + 移到 Library + 生成 Card。
  3. 资料采集的"无漏"原则 = metadata 无漏,不是 PDF 全到手 —— 反爬严格的源(annas / Sci-Hub / 部分 paywall)只能输出 Tier 3+4 manifest 让用户决策。
  4. B 不阻塞 A 未完成项 —— 蒸馏总能跑(基于已有素材),SKILL.md 质量随 Library 增长而上。
  5. "重蒸 B"是激进重做 —— Library 大幅扩充后整体重做 Phase 2.x,旧 SKILL.md 进 _archive/;与"轻量 update"不同。

4 层资料采集架构

Tier自动化程度适用源工具
1 · 完全 API100% 自动OpenAlex / Crossref / Semantic Scholar / arXiv / OAPEN / DOAB / unpaywallharvest_works.py
2 · 友好 scrape90% 自动YouTube 元数据 / Vimeo / 学者主页 / ARS Industrialis / Internation / 出版社 OA 落地页4 个新 harvester(v0.4.3)
3 · 浏览器助手50% 自动annas / paywall(机构 access) / Cairn 锁定文章用户浏览器解 captcha → 导出 cookies → 工具用 cookies 调 API
4 · 完全手动0% 自动,工具辅助归档annas 严格反爬 / Sci-Hub / 闭源专著 / 罕见档案intake_manual_pdf.py(用户拖入 PDF → 自动改名 + 移到 Library + 生成 Card)

每条资料在 _acquisition_manifest.json 中标注 acquisition_tier: 1/2/3/4 + priority: P0/P1/P2。Phase A.3 输出 Tier 3+4 列表给用户决策;Phase A.4 把用户手动下的 PDF 标记为 intake_completed


v0.5 学者类型 + Workflow B 分支

v0.4.x 默认 framework 为当代单一作者优化(Stiegler 验证)。v0.5 加传统学者支持,Workflow B 内部按 scholar_type 分流:

Workflow B(蒸馏)
├── B.0 学者类型判定(Phase 0A 第 6 项 scholar_type)
│
├── [contemporary] → B.3a 现代单一作者蒸馏(向后兼容 v0.4.x)
│       Phase 2.1-2.8 现有流程不变
│       默认输出:单一第三人称分析镜片
│
├── [traditional] → B.3b 传统学者蒸馏(v0.5 新增)
│       新增 Phase 2.0' Lineages 提炼(4-6 派代表学者 + reading strategy)
│       Phase 2.1' 概念地图扩展为「概念 × 派」二维矩阵
│       Phase 2.5' biography 降级 + intellectual genealogy 升级
│       Phase 2.7' 古典引文系统(Bekker / Stephanus / 中典页码)
│       默认输出:multi-perspective(本人 + N 派各自看)
│
└── [topic] → B.3c 主题/流派蒸馏(已有的 v0.4 主题模式)

学者类型 → 三个核心差异

维度contemporarytraditional(v0.5 新增)topic
概念地图 size3-75-15(允许大概念集)5-10
默认输出 mode单一第三人称multi-perspective(本人+N 派)领域共识+各家分歧
Lineages 一等公民(必填 4-6 派)否(流派 = 主题本身)
概念结构概念→单一定义概念→本人+N 派 reading 差异共识概念+争议概念
引文系统PDF page anchorBekker/Stephanus 编号 + 译本页码并存引代表论文 page anchor
biography 重要性高(强 BRACKETING)低(生平稀少不可靠,重 genealogy)不需要
一手分级A+ → C(8 级)+ 派学者「子一手」 A^(Aquinas/Avicenna 自己写的"是 X 这样想"著作)不适用

Lineage 一等公民结构(traditional 必填)

每个 traditional 学者的 SKILL.md 必须含 lineages 章节(4-6 派):

lineages:
  - name: "经院派 / Thomism"
    representative: "Thomas Aquinas"
    period: "13世纪"
    key_works:
      - "Summa Theologiae"
      - "Commentary on Nicomachean Ethics"
    reading_strategy: "把 Aristotle 形质论 / 四因说整合进基督教神学"
    distinctive_claims:
      - "首要 ousia = essence + esse(存在)"
      - "灵魂作为实体形式"
    representative_concept_reading:
      ousia: "essence + esse"
      virtue: "infused virtue 高于 acquired virtue"
  - name: "阿拉伯派"
    representative: "Avicenna (Ibn Sina)"
    ...

Multi-perspective 默认输出格式(traditional)

## [Aristotle 本人]
基于 *EN* 1097b22-1098a20,Aristotle 会说……
[此段引文用 Bekker 编号 + 现代译本页码并标]

## [经院派 / Aquinas]
他会重读这段为……,因为对他而言 *eudaimonia* 不只是地上活动 (operatio),
而是指向至福直观 (visio beatifica)。
[引 *Summa Theologiae* I-II Q.3]

## [Heidegger 派]
他会跳过命题层,看到 *eudaimonia* 的存在论意义被遮蔽为"幸福感"。
他会回到 *physis* 与 *aletheia* 的发生……
[引 *Sein und Zeit* §40 + *Brief über den Humanismus*]

## [Anglo-American analytic / MacIntyre]
他会形式化为:德性是 practice 内部 goods 的获取条件……
[引 *After Virtue* ch.14]

用户在调用时若说"用 X 派看这个材料"或"X 派会怎么想 Y" → 工具直接走该派的 reading strategy 输出。

向后兼容

  • Stiegler 等已有 contemporary 案例不受影响(_library_config 默认 scholar_type: contemporary 时走 v0.4.x 流程)
  • v0.5.2 计划:用 traditional 框架升级 Stiegler(加 lineages: 海德格尔派 / 西蒙东派 / Derrida 派 / 中国 Stiegler 派——许煜/陆兴华),让 Stiegler 输出 mode 也支持 multi-perspective

执行流程

Phase 0: 入口分流(v0.4.2 加双工作流分支)

收到用户请求后,先判断触发哪个 workflow + 哪条路径:

用户输入意图Workflow后续路径
"搜集 X 的资料" / "为 X 建图书馆" / "build-library X"A 单跑A.0 → A.5
"蒸馏 X" / "做 X 的分析镜片" / "distill X"B 单跑检查 Library 覆盖率 → B.1 → B.6
"学者问道 X" / "为 X 建一个 skill"(默认端到端)A → B完整流程
"重蒸 X" / "用新资料重做 X 镜片"B 重做模式旧 SKILL.md 进 _archive/ → B.1-B.6 重做
"更新 X 的 skill"B 轻量 update仅增补不重写(v0.4.1 既有逻辑)
"我有一份 PDF 想加到 X 的库" / "import PDF for X"A.4 单步直接跑 intake_manual_pdf.py

学者识别(直接路径 / 主题 / 诊断)的判断与 v0.4.1 一致:

用户输入路径示例
明确的学者名直接路径 → Phase 0A"蒸馏 Bernard Stiegler"、"为福柯建一个 skill"
明确的方法论主题主题路径 → Phase 0A(主题模式)"构建批判理论分析工具"、"民族志方法 perspective"
模糊的研究需求诊断路径 → Phase 0B"我研究农村教育,想要一种能看穿权力关系的视角"

Phase 0A: 需求澄清(直接路径)

收到明确学者名后,确认六件事(v0.5 加第 6 项「学者类型」):

  1. 学者身份精确锁定:避免重名混淆("Foucault" 是 Michel 还是 Léon?"Charles Taylor" 哪一位?)

  2. 聚焦方向(可选):全面镜片 vs 聚焦某个维度(如只蒸馏 Stiegler 关于"技术外在化"的部分)

  3. 使用场景:用于分析某类特定材料?给写作提供概念资源?还是做思想史研究?

  4. 是否更新:检查 ~/.claude/skills/[scholar]-perspective/ 是否已存在

  5. 本地一手语料:「你手上有这个学者的一手语料吗?比如电子版专著、访谈 transcript、本人手稿、学生整理的讲座稿。有的话直接给路径,比网络搜索质量高得多」

  6. 学者类型(v0.5 新增 · 决定 Workflow B 走哪条分支):

    • contemporary —— 当代单一作者(20-21 世纪在世或近 50 年内去世)。例:Stiegler / Yuk Hui / Latour / Haraway。默认 mode:单一第三人称分析镜片,向后兼容 v0.4.x 全部流程。
    • traditional —— 古典 / 经典学者(去世 ≥ 100 年 + 已形成多派解读传统)。例:Aristotle / Plato / Confucius / Kant / Hegel。默认 mode多视角输出(本人 + N 派 lineages 解读),启用 v0.5 新流程(Phase B.3'+ 含 lineages 蒸馏 + 概念×派矩阵)。
    • topic —— 不是单一学者而是方法论传统/流派(critical theory / ANT / 民族志方法)。默认 mode:领域共识 + 各家分歧。

    判断启发式:

    • 学者去世 ≥ 100 年 + 维基百科页面有"interpretation by school"小节 → traditional
    • 学者著作存在多语种古译本(拉丁 / 阿拉伯 / 经典中译) → traditional
    • 单一思想家 + 主要在世或近代 → contemporary
    • 用户输入是方法论名词(批判理论/STS) → topic

默认行为:用户没有更多信息 → 全面镜片 + 学术分析用途 + 无本地语料(走网络+开放档案) + scholar_type 自动判定 → 进入 Phase 0.5。


Phase 0B: 需求诊断(模糊路径)

用户不知道该蒸馏谁,只有困惑或需求。这时学者问道的工作是从研究需求反推最合适的学者

Step 1: 需求维度定位

通过 1-2 个追问定位用户的核心研究需求:

需求维度典型表达学者方向
权力分析「想看穿表面话语下的权力运作」「制度如何塑造主体」福柯、布尔迪厄、葛兰西、阿甘本
技术与人「想理解技术如何重塑人类」「数字资本主义」Stiegler、Simondon、芒福德、麦克卢汉
行动者-网络「想避免人/物二元论」「物的行动力」拉图尔、Mol、Haraway
资本主义批判「想分析资本逻辑对生活的渗透」马克思、Wendy Brown、Boltanski、Streeck
文化与象征「想分析符号系统如何运作」列维-斯特劳斯、Geertz、Bourdieu(作为符号社会学家)
现代性反思「想批判性看待启蒙、进步」韦伯、阿多诺/霍克海默、查尔斯·泰勒
诠释学「文本/材料的意义如何解读」伽达默尔、利科、Charles Taylor
知识社会学「知识如何被生产、流通、合法化」曼海姆、布尔迪厄、Latour
殖民与后殖民「想批判性分析现代性的另一面」Said、Spivak、Mbembe
性别与身体「想分析性别建构与身体经验」Butler、Haraway、Wittig

追问原则

  • 最多 2 轮,不变成问卷
  • 用户表达足够清晰 → 不追问,直接推荐
  • 第二轮的目的是区分相似维度("批判技术"是法兰克福学派路线还是 STS 路线?)

Step 2: 候选推荐

基于需求维度推荐 2-3 个候选学者。先判断:人物 skill 还是主题 skill?

  • 用户的需求指向某种具体的分析视角 → 人物 skill
  • 用户的需求指向某个领域的方法论传统 → 主题 skill(如"批判理论""民族志方法")
  • 不确定 → 推荐里同时包含两类,让用户选

两个来源:

来源 A:本地已有 skill——扫描 ~/.claude/skills/*-perspective/,匹配现有学者镜片。已存在的零成本调用。

来源 B:新蒸馏候选——基于需求维度匹配。每个候选的展示格式:

### 候选 1: [学者名]  ⚡已有 skill / 🆕需要蒸馏

**核心镜片**:[此学者分析问题的独特视角,一句话]
**为什么适合你**:[直接对应用户研究需求,匹配逻辑要具体]
**学派定位**:[他属于什么传统、与同代人的差异]
**局限**:[这个视角的盲区——什么类型的问题这个镜片不擅长]
**语料可获取性**:[原文语种 + 是否有充足英/中译]

推荐原则:

  • 不超过 3 个,差异化要明显(不要推荐 3 个都属于法兰克福学派)
  • 已有 skill 优先展示
  • 必须说清楚局限——没有万能的分析框架
  • 必须说清楚语料可获取性——冷门学者蒸馏出来质量会受限

Step 3: 用户选择

  • 选已有 skill → 直接激活
  • 选新蒸馏 → 进入 Phase 0A 确认细节 → Phase 0.5 开始
  • 都不满意 → 回到 Step 1 继续探索

Phase 0.5 / [Workflow A.0]: 创建 skill 目录与采集预案

收到确认后立即执行,在调研之前完成。

双路径架构(核心设计)

学者问道把"轻产物"与"重材料"严格分开,避免 skill 仓库被版权 PDF 与大文件污染:

路径 A · Skill 产物(轻量,可上 git)
~/.claude/skills/[scholar]-perspective/
├── SKILL.md                          # 最终产物
├── scripts/                          # 工具脚本(来自 scholar-wendao)
└── references/
    ├── research/                     # 7 个 agent 的调研结果(markdown 综述)
    │   ├── 01-monographs.md
    │   ├── 02-interviews.md
    │   ├── 03-style.md
    │   ├── 04-secondary.md
    │   ├── 05-debates.md
    │   ├── 06-genealogy.md
    │   └── 07-archive.md             # 多语言全文献清单(含获取链接)
    └── biography/                    # 生平人格素材(独立章节)
        ├── timeline.md
        ├── personality.md
        ├── relations.md
        └── controversies.md

路径 B · Library 重材料(永远不进 git,永久持有)
$SCHOLAR_WENDAO_LIBRARY/[scholar-slug]/
├── works/
│   ├── fr/                           # 学者母语原版 PDF
│   ├── en/                           # 英译本
│   └── zh/                           # 中译本(如有)
├── interviews/                       # 访谈与讲座 transcript
├── secondary/                        # 二手研究 PDF
└── biographies/                      # 传记类 PDF

Library 路径配置

$SCHOLAR_WENDAO_LIBRARY 是用户全局学术档案目录。优先级:

  1. 用户已设置环境变量 $SCHOLAR_WENDAO_LIBRARY → 使用之
  2. 用户使用 Obsidian 等知识库系统 → 推荐配置为已有的"数字图书馆"目录
    • 例:export SCHOLAR_WENDAO_LIBRARY="$HOME/Documents/Obsidian/Library/_files"
  3. 都没有 → 默认 $HOME/scholar-wendao-library/(脚本自动创建)

Library 归档布局(v0.4 新增)

用户的 Library 可能采用两种命名约定,本框架两种都支持但必须显式配置,否则下载脚本可能造成污染(例:v0.3 实战中 download_open_access.sh 自动创建 _files/fr/ _files/en/ 子目录与扁平命名约定冲突):

布局命名
flat全部 PDF 在 _files/ 根目录,前缀+年份+语种Stiegler2010_le_circuit_fr.pdf
by-language按语种子目录 _files/{fr,en,zh}/_files/fr/2010_le_circuit.pdf

Phase 0.5 必须把所选布局写入 references/research/_library_config.mdarchive_layout 字段。下载脚本(download_open_access.shannas_acquire.py)读此字段决定输出路径。Phase 0.5 完成前必须确认布局——询问用户「你的 Library 是扁平命名(建议)还是按语种子目录?」

为什么这样设计:

  • ✅ Skill 产物可干净上 git(无版权 PDF 污染)
  • ✅ Library 跨 skill 复用(蒸馏 Foucault 时已有的二手文献,蒸馏 Stiegler 时不用重下)
  • ✅ 与已有学术工作流兼容(Obsidian / Calibre / Zotero / 自建文件夹都可以)
  • ✅ 用户保留对自己档案的完整控制

Library 覆盖率扫描(v0.4 新增·"本地优先模式"判断条件具体化)

v0.3 实战暴露的问题:「在 Library 有一些 PDF」介于无和全有之间,无清晰处理路径。v0.4 把这一步具体化为可计算指标:

LOCAL_PDFS=$(find "$SCHOLAR_WENDAO_LIBRARY" -iname "*[Ss]cholarSlug*.pdf" -type f | wc -l)
EXPECTED_BOOKS=$(估算自学者主要专著数,可先用 5 作为 fallback)
COVERAGE=$((LOCAL_PDFS * 100 / EXPECTED_BOOKS))
覆盖率模式行为
0%纯网络7 agent 全网络采集
1-30%本地补网络 agent 优先;本地 PDF 进入 evidence 提取
31-70%本地优先本地 PDF 全量进入 evidence;网络仅补缺口
71-100%纯本地跳过部分网络 agent;evidence 提取作为主蒸馏源

扫描结果写入 _library_config.mdcoverage_report 字段。

Phase 0.5 自动检查

  • 路径 A 目录已创建在 ~/.claude/skills/[scholar]-perspective/
  • 解析 $SCHOLAR_WENDAO_LIBRARY,路径 B 目录已创建(按 slug 子目录或扁平命名前缀,依 archive_layout
  • archive_layout 已明确flat / by-language,写入 _library_config.md
  • coverage_report 已生成(扫描 Library 现有 PDF 数量与预期主要专著数对比)
  • references/research/07-archive.md 中的下载脚本调用使用路径 B 作为 --output,并传入 archive_layout
  • references/research/_library_config.md 记录使用的 Library 路径(供后续 update 时参照)

完成检查(自动执行):

  • 目录已创建
  • 已读取学者所属国家/主导语言,决定信息源策略:
    • 法语学者:BnF Gallica、Persée、Cairn、本人著作的法语原版优先
    • 德语学者:DNB、SUB Göttingen、JSTOR DE
    • 英美学者:JSTOR、PhilPapers、机构仓库、本人主页
    • 中国学者:CNKI、万方、本人著作中文版、B 站/小宇宙学术访谈、官方采访(《思想的境界》《一席》《文化纵横》);永远排除知乎与微信公众号
  • 如果是更新模式:已读取现有 SKILL.md 的"调研时间",标注哪些需要刷新
  • 如果用户提供了本地语料 / Library 覆盖率 ≥ 30%:素材已分类入 sources/ 或登记入 _library_config.md,标记为本地优先模式

关键规则

  • 每个 subagent 必须把调研结果写入对应的 md 文件。不存文件 = 没做
  • 所有调研文件必须存在 skill 目录内部references/research/),绝不存到外部目录。Skill 必须自包含——复制目录就能独立使用,便于开源分发

Phase 1 / [跨 A.1+A.2 与 B.2]: 多源信息采集

v0.4.2 拆分提示:本节包含三件事,分属两个 workflow:

  • harvest_works.py + 4 harvester(metadata 全收集)= A.1
  • download_open_access.sh + Tier 1+2 自动下载 = A.2
  • 7 agent 调研产出 research / biography 文档 = B.2

单跑 Workflow A 时只跑前两件;单跑 B 时只跑 7 agent(基于 A 已下载的 Library 素材)。

模式判断:本地语料 vs 网络搜索

模式触发条件策略
纯网络Library 覆盖率 0%,无用户语料7 个 agent 全部走网络+开放档案
本地补Library 覆盖率 1-30%网络 agent 主线;Phase 1.0 同步抽取本地 evidence
本地优先Library 覆盖率 31-70% 或用户提供 PDFPhase 1.0 抽取本地 evidence 为主,网络补缺口
纯本地Library 覆盖率 ≥ 70% 或用户明确"只用我给的"Phase 1.0 evidence 为唯一来源,网络仅补传记类信息

本地优先的执行逻辑:

  1. 先读本地素材:将文件按 7 维度归类(一本书可能同时覆盖专著+表达+方法论)
  2. 识别信息缺口:哪些维度本地覆盖了?哪些薄弱?
  3. 定向补充搜索:仅对缺失维度启动网络 agent
  4. 来源标记:调研文件中明确区分"用户提供"vs"网络搜索"

Phase 1.0 / [Workflow B.1]:PDF 证据强制提取(v0.4 新增·本地优先 / 纯本地模式触发)

为什么这一步必须存在:v0.3 实战暴露——Phase 1 只读了用户已整理的 Obsidian Card 元数据,任何一部本地 PDF 全文都没进入 Phase 2 蒸馏,导致引文/页码/概念分期等关键细节失真(v0.3 SKILL.md 中至少 2 条引文页码不可在本地 PDF 验证)。

v0.4 强制 Phase 1.0 在 7 个 agent 启动之前完成:

python3 scripts/extract_pdf_evidence.py \
    --library "$SCHOLAR_WENDAO_LIBRARY" \
    --filter "{ScholarSlug}*.pdf" \
    --concepts examples/{slug}-perspective/_pdf_evidence/_concepts.json \
    --out examples/{slug}-perspective/_pdf_evidence \
    --head 30 --tail 30

_concepts.json 的多语言术语映射先用学者 1-2 个最高确定性概念冷启动(基于学者 Wikipedia 条目术语表),后续 Phase 2.1 蒸馏过程中可补全。

输出:每部 PDF → _pdf_evidence/{book_basename}.md,含:

  • Head/Tail 页全文文本(前 30 + 末 30 页)
  • Concept anchor search:每概念 ≤50 个带页码上下文
  • _index.json + _navigator.md(概念 × 书命中矩阵 + OCR backlog 报告)

OCR Backlog 自动检测(v0.4 新增)

extract_pdf_evidence.py 输出的 _index.jsonempty_pages 字段。Phase 1.0 完成后必须扫描:

# 任意 PDF 的 empty_pages / total head+tail pages > 50% → 标 OCR backlog
ocr_backlog = [r for r in index if r["empty_pages"] / 60.0 > 0.5]

OCR backlog 列表写入 _pdf_evidence/_ocr_backlog.md,每条记录:文件名、页数、PDF 元数据推断的真实书名、估计语言。提示用户:

⚠️ 检测到 N 部 PDF 无文字层(疑扫描版)。Phase 2 蒸馏将不能从这些书中抽证据。建议执行:

brew install ocrmypdf  # 或 pip install ocrmypdf
ocrmypdf --language fra+eng+chi_sim --skip-text input.pdf input.pdf

OCR 完成后重跑 extract_pdf_evidence.py --force

Phase 1.0 退出条件

  • 所有可机读 PDF 已生成 evidence markdown
  • _navigator.md 已生成(含 9 概念 × top-3 书矩阵)
  • OCR backlog 已生成并提示用户

7 个 Agent 的任务分配(标准网络模式)

Agent搜索目标提取重点输出文件
1 专著学者出版的专著、代表论文、长篇序言系统性论点、自创概念、引用习惯、章节结构01-monographs.md
2 访谈学术访谈、公开讲座、研讨会问答、播客即兴回答中暴露的判断方式、被追问时的应对、改变立场的瞬间02-interviews.md
3 风格学者本人的写作样本(专著节选+论文+长访谈)行文节奏、概念使用频率、术语网络、定义习惯、辩护与让步的语态03-style.md
4 二手二手研究、书评、批评、传记、学位论文学派分类、主要批评点、与同行比较、被引用次数最高的作品04-secondary.md
5 论战公开论战、立场转变、争议事件论战对象与争议焦点、立场前后变化、面对批评的反应05-debates.md
6 谱系生平传记、师承关系、学术影响地图师承(受谁影响)、学派归属、对后人的影响、与同代人的关系06-genealogy.md
7 档案(新)多语言全著作清单(OpenAlex/Crossref/Semantic Scholar/PhilPapers/BnF/CNKI 等)完整著作元数据:标题、年份、语种、出版社、ISBN/DOI、引用数、OA 链接、获取路径07-archive.md

7 号 Agent 的特别说明(学术档案采集)

调用 scripts/harvest_works.py(包装 Academix MCP)。Agent 7 的任务流:

  1. 多语言查询:以学者母语 + 英语 + 中文(如有)三组关键词查询,合并去重
  2. 完整性检查:交叉对比 OpenAlex / Crossref / 学者本人主页 / 维基百科书目,标注遗漏
  3. OA 标注:每条记录标注是否开放获取,及可获取链接
  4. 优先级排序:按"奠基性专著 → 代表论文 → 重要访谈 → 编辑作品"分级
  5. 输出清单07-archive.md 含完整书目 + 待采购清单(标注闭源版本的获取建议)
  6. 触发下载:对开放获取部分,调用 scripts/download_open_access.sh 自动下载到 sources/works/
  7. 处理闭源:调用 scripts/annas_acquire.py(包装 annas-mcp),按"原版语言 > 英译 > 其他译本"优先级,确保至少一个语言版本被获取

每个 Agent 的硬性要求

  • 调研结果必须用 Write 工具写入 references/research/0X-xxx.md
  • 返回前必须用 Read 或 cat 工具确认输出文件存在并展示前 50 行(v0.4 新增·P1 #3 修复——v0.3 实战中多个 agent 写错路径或仅在消息里返回未真写文件)
  • 每条信息标注信息源 URL 与可信度等级(一手/二手/传记类/学生回忆)
  • 区分"学者本人写的"vs"他人转述的"vs"我推断的"
  • 发现矛盾保留矛盾,不要和稀泥
  • 如果是本地优先 / 纯本地模式:优先引用 _pdf_evidence/{book}.md 中带页码的原文片段作为论点证据,而非凭印象转述

信息源优先级

来源类型揭示什么权重
用户提供的一手语料完整原文,未经二手过滤最高+
学者本人专著系统性思考最高
学者本人长访谈即兴思维过程最高
学者本人讲座 transcript教学场景的论证展开
同行评审论文经过过滤的展演自我
实际学术决策(编辑作品/合作者选择)真实判断 vs 声称
二手学术研究外部视角、定位、批评
传记生平+人格,但有传记作者修辞中-(需多源交叉)
学生回忆私下场景,但带回忆者偏见中-
维基百科入门参考

信息源黑名单(永远排除)

  • 知乎:洗稿严重、信息失真率高
  • 微信公众号:封闭生态、无法验证、大量二手转述
  • 百度百科/百度知道:信息陈旧不可靠

中文权威媒体可用:CNKI、万方、商务印书馆等学术出版社、《思想的境界》《一席》《文化纵横》《读书》《澎湃新闻·思想市场》、B 站原始讲座视频(非搬运号)、小宇宙学术播客。


Phase A.3(v0.4.2 新增):Tier 3+4 acquisition manifest 输出

触发条件:Workflow A 跑完 A.1+A.2 后。所有未能自动下载(Tier 3+4)的资料必须在此输出可读 manifest。

_acquisition_manifest.json 标准 schema(v0.4.2):

{
  "scholar": "Bernard Stiegler",
  "scholar_slug": "stiegler",
  "generated_at": "2026-XX-XX",
  "library_root": "/path/to/Library/_files",
  "items": [
    {
      "id": "stiegler-1994-tt1-fr",
      "title": "La technique et le temps, 1: La faute d'Épiméthée",
      "year": 1994,
      "language": "fr",
      "type": "book",
      "publisher": "Galilée",
      "isbn": "...",
      "doi": null,
      "openalex_id": "W...",
      "acquisition_tier": 4,
      "priority": "P0",
      "acquisition_status": "pending",
      "acquisition_hints": [
        "annas-archive.org(反爬严格,浏览器手动)",
        "Galilée 出版社官方网站可购电子版",
        "中国国家图书馆 / 大学图书馆机构外借"
      ],
      "intended_filename": "Stiegler1994_T_et_T_1_fr.pdf",
      "intake_completed_at": null
    }
  ]
}

字段含义

  • acquisition_tier:1/2/3/4 按 4 层架构标注
  • priority:P0(核心专著,必须有)/ P1(重要论文)/ P2(补充)
  • acquisition_statuspending / intake_completed / acquired_via_browser / skipped
  • acquisition_hints:人类可读的"获取建议"列表(多条)
  • intended_filename:建议的扁平命名(用于 intake 自动重命名)

输出

  • _acquisition_manifest.json(机器可读)
  • _acquisition_manifest.md(人类可读,按 priority 排序,每条带建议)

用户决策点:用户阅读 manifest 后决定:

  • a) 跳过未下载项(接受当前覆盖率,进 Workflow B)
  • b) Tier 3:配置浏览器 cookies 重跑(v0.4.3 实现)
  • c) Tier 4:手动下载若干本 → 进 Phase A.4

Phase A.4(v0.4.2 新增):用户主动导入

触发条件:用户已手动下载若干 PDF(从 annas / 出版社 / 机构图书馆)。

python3 scripts/intake_manual_pdf.py \
    ~/Downloads/Bifurquer-Stiegler.pdf \
    --config examples/stiegler-perspective/references/research/_library_config.md \
    --year 2020 \
    --slug Bifurquer \
    --lang fr \
    [--manifest-id stiegler-2020-bifurquer-fr]   # 可选:关联 manifest 条目

自动行为

  1. 重命名为扁平命名 {file_prefix}{year}_{slug}_{lang}.pdf
  2. 移动到 {library_files_path} 目录
  3. extract_pdf_evidence.py(仅对该新 PDF)→ _pdf_evidence/{slug}.md
  4. generate_library_cards.py(增量)→ Card
  5. _acquisition_manifest.json 中标记 acquisition_status: intake_completed
  6. 输出报告:哪部 PDF 加进来了,evidence 头/尾命中数,Card 路径

Phase A.4 是可重复入口:用户可以每天补一两本,scholar-wendao 累积式增长 Library。


Phase 1.5 / [Workflow B 内]: 调研 Review 检查点

Step 1.5.0:主流程文件存在性兜底验证(v0.4 新增·P1 #3 修复)

所有 agent 返回后,主流程必须立刻执行

for f in references/research/0{1..7}-*.md; do
    if [ ! -s "$f" ]; then
        echo "❌ 缺失或空文件: $f"
        # 主流程兜底:根据 agent 返回消息中的内容自写该文件
        # 如果消息中也无内容 → 标记为"信息不足维度"
    else
        echo "✓ $f ($(wc -l < "$f") 行)"
    fi
done

触发条件:v0.3 实战中至少 3 个 agent 出现"返回声明完成但文件不存在 / 写到错误路径"。Phase 1.5 第一步永远是 ls -la references/research/ 验证 + 缺失项兜底。

Step 1.5.1:调研质量摘要

所有 agent 完成 + 文件存在性验证通过后,暂停展示调研质量摘要:

┌──────────────────┬──────────┬──────────────────────────┐
│ Agent            │ 来源数量  │ 关键发现                  │
├──────────────────┼──────────┼──────────────────────────┤
│ 1 专著           │ 12 本    │ 核心概念: 第三持存、组织学..│
│ 2 访谈           │ 8 段     │ 立场转变: 2015 年后...     │
│ 3 风格           │ 30K 字样本│ 高频术语: tertiary..      │
│ 4 二手           │ 25 篇    │ 主要批评: ...             │
│ 5 论战           │ 4 起     │ 与 Latour 之争...         │
│ 6 谱系           │ 完整     │ 师承: 德里达...           │
│ 7 档案           │ 47 本+200篇│ OA 覆盖率: 60%, 闭源 X 本│
├──────────────────┼──────────┼──────────────────────────┤
│ Phase 1.0 PDF    │ N 部     │ M 部可读 / K 部 OCR backlog│
├──────────────────┼──────────┼──────────────────────────┤
│ 矛盾点           │ 3 处     │ Agent1 vs Agent4 在 Y...  │
│ 信息不足维度      │ 1 处     │ 私人通信很难采集到         │
└──────────────────┴──────────┴──────────────────────────┘

用户确认调研质量 OK → Phase 2。 用户觉得某维度不够 → 补充调研后再继续。


Phase 2 / [Workflow B.3]: 框架提炼(Synthesis)

7 个 agent 的素材汇总后,执行结构化提炼。先读取 references/extraction-framework.md 获取学者版三重验证方法论。

2.1 概念地图提取(3-7 个核心概念)

学者的"心智模型" = 他的核心理论概念及其相互关系。不是普通用词,是被他系统化为分析工具的术语

操作步骤:

  1. 扫描:从 01-monographs.md05-debates.md 列出所有候选概念
  2. 三重验证:每个候选执行——
    • 概念体系化使用:在 ≥2 部不同时期/不同主题的著作中作为分析工具被反复使用?
    • 推断生成性:用这个概念能否推断学者对新现象的可能立场?
    • 学派区分度:是否区别于同代/同流派学者?(如果福柯和阿甘本都用"主权",区分度低)
    • 三重通过 → 核心概念;仅 1-2 重 → 降级为"次级概念";0 重 → 丢弃
  3. 取舍:3-7 个核心概念。宁少勿多
  4. PDF 证据锁定(v0.4 新增·本地优先 / 纯本地模式强制):
    • 对每个核心概念,从 _pdf_evidence/_navigator.md 的「概念 × 书」矩阵读出 top-3 anchor 书
    • 打开对应 _pdf_evidence/{book}.md,读完该概念在该书的所有 hits
    • 每条引文必须能锁定到具体页码(p.{N}
    • 概念定义、关键引文、引文页码必须能在某一份 _pdf_evidence/{book}.md 中直接搜到——禁止凭印象引用,禁止从二手文献转引
    • 概念末尾"反复出现的著作"小节必须按 evidence 出现频次而非常识权重排序
  5. 记录格式:每个概念——
    • 名称(含原语)
    • 一句话定义(含来源文献页码)
    • 反复出现的著作(每条标 evidence 命中数 / 来源 anchor)
    • 典型应用场景
    • 与该学者其他概念的关系
    • 局限性
    • 关键引文(每条带书名+页码,必须可在 evidence 中定位)
    • 证据来源(v0.4 新增):列出该概念在哪些 _pdf_evidence/{book}.md 出现及命中数

v0.4 概念条目模板

### 核心概念 N:{中文名} *{原语}* / {English}

**定义**({学者+年}+{源著}, p. {N}):…

**[v0.4 选填] 子分期 / 进化 / 内部分类**(来自 evidence 系统讲述,例如 Stiegler 的"四阶段第三持存"必须直接来自 _pdf_evidence/Stiegler2020_Nanjing_Lectures.md pp. 22-39):…

**反复出现的著作**:
- *Book A*(year)— evidence: `_pdf_evidence/{book_A}.md` (N hits)
- *Book B*(year)— evidence: `_pdf_evidence/{book_B}.md` (M hits)

**典型应用场景**:…

**与其他概念的关系**:…(每条尽量挂一个 page anchor)

**局限**:…

**关键引文**(必须可在 evidence 中定位):
> "..."  —— *{Book}*, p. {N}

**证据来源**(v0.4):
- `_pdf_evidence/{book_A}.md` — N hits(主源)
- `_pdf_evidence/{book_B}.md` — M hits
- `_pdf_evidence/{book_C}.md` — K hits

2.2 方法论手稿(5-10 条分析进路)

学者面对一个新现象时,他的第一步问什么、用什么数据、怎么组织论证。可表述为"如果碰到 X 类材料/问题,则按 Y 路径展开分析"。

格式示例(Stiegler):

  • 遇到任何"技术对象":先追问其作为"第三持存"如何外在化人类记忆 → 再追问这种外在化是 pharmakon(毒-药)的哪一面 → 再追问当前的资本主义条件如何决定其偏向

2.3 学术坐标

维度提取内容
学派归属后结构主义?批判理论第二代?分析哲学?混合?
主要立场在该领域的核心分歧上他站哪边
自我定位 vs 他者定位学者自称属于 X,但学术界普遍归他为 Y
时代位置在该领域思想史上的承前启后

2.4 行文风格 + 概念语言

不是"语气"或"幽默感",而是学者在写作中如何使用概念、组织论证、回应反对

维度提取内容
概念引入方式自创术语?借用并重定义?保持开放性的隐喻?
定义习惯总是先精确定义?还是边写边演化?
论证节奏演绎链条?归纳堆叠?多线索辩证?
反对处理直接驳斥?容纳吸收?战略性沉默?
引用习惯主要引同代人还是经典?引敌手吗?引谁的频率最高?
自我修正公开承认前期错误吗?默默改?还是从不承认?

2.5 智识谱系

[受谁影响] → 学者本人 → [影响了谁]
        ↕
   [横向对话/争论] ← 同代人

明确标注:
- 师承(导师/直接受教)
- 远程谱系(精神导师)
- 重要对话者(同代)
- 批判对象
- 被批判的位置
- 后继者

2.6 论战与立场转变

学者最有信息量的不是稳定论点,而是改变立场的瞬间论战中暴露的判断

每条记录格式:

  • 时间、议题、对手
  • 学者的立场(变化前 / 变化后)
  • 这次变化暴露了他什么底层判断
  • 他事后是否反思/承认这次变化

2.7 人格与处世(独立章节)

学者的思想与生平经常深度耦合(Stiegler 的"技术外在化"理论与他狱中读哲学的经验)。但生平整合必须严格分级标注信息源

[事件] · 时间 · 事件描述
  ├ 来源类型: [本人自述 / 他者描述 / 传记作者推断]
  ├ 多源交叉验证: [是 / 否 / 部分]
  └ 与思想的关联: [本人明确说 / 他者推断 / 我们的判断]

人格描写的来源分级(参见 references/biography-protocol.md):

来源可信度限制
学者本人在访谈中谈自己中(自我呈现)公开自我可能有修饰
学者私人通信(已出版)但已被编辑选择过
终身合作者/亲属回忆中-高有情感倾向
学生回忆师生关系不对等可能扭曲
学术对手回忆中-可能贬损
传记作者描述低-中文学化处理严重
媒体二手报道普遍失真

2.8 诚实边界(最厚的章节)

参见 references/humble-epistemics.md,必须明确写出六大局限:

  1. 波兰尼问题:本镜片只能复现可显式表达的部分,学者的研究直觉与品味是默会的
  2. 思想化石化:截止到调研时间点的快照,之后的演变需要 update
  3. 公开 vs 私下:所有公开材料都是经过过滤的展演自我
  4. 传记修辞污染:所有传记类信息已分级标注,但仍然可能被叙事框架扭曲
  5. 漫画化风险:使用本镜片时如果发现自己在生产"段子集合"而非智识分析,立刻停止
  6. 死亡-尊重边界(v0.4 新增):涉及学者死亡 / 自杀 / 监禁 / 重大创伤事件时,仅记录可公开核实的事实,不戏剧化、不连接因果、不用学者第一人称回应(即使在对话模式中)

2.9 / [Workflow A.5] Library Card 自动生成(v0.4.1 新增 · 学者问道核心差异化)

为什么这一步存在:scholar-wendao 的真正定位不是只产出 SKILL.md,而是 同时为用户的图书馆体系增建标准 Card——让蒸馏过程变成研究知识库的实际增长。每个进入 Library 的 PDF 都应当配套生成符合用户 Vault 命名约定的 markdown Card,这样研究者在写作时可直接 [[Cards/{ScholarSlug}{year}]] 引用。

触发条件:本地优先 / 纯本地模式(即 _pdf_evidence/ 已生成)。

操作步骤

调用 scripts/generate_library_cards.py,对每部已抽取 evidence 的 PDF 执行:

  1. 读源

    • _pdf_evidence/{book}.md(PDF 提取的页码上下文 + 概念命中)
    • references/research/07-archive.json(OpenAlex 元数据:title / year / language / coauthors / DOI / publisher)
    • 已有 Card(如果存在 {vault_cards_path}/{ScholarSlug}{year}.md)—— 增量更新模式,保留用户手写的"文献笔记 wikilink""引用章节"等
  2. 填充 Card 模板(参见 references/library-card-template.md):

    • frontmatter:title / author / year / grade / has_pdf / status / tags / versions
    • 关键词(从 evidence 的 concept_hits top-3 推断)
    • 完整引用(APA 7th,自动构造)
    • 多语言版本表(按 archive.json 的 versions 字段)
    • 一句话摘要(取自 evidence head pages 第一段,或 LLM 摘要)
    • 论文引用摘录(取自 evidence head/tail/concept_hits 中的高质量片段,带页码)
    • 关联:自动加"人物:[[{vault_people_path}/{ScholarName}]]"+"文献笔记:[[…读书笔记]] (待写)"
  3. 写出

    • 路径:{vault_archive_path}/{vault_cards_path}/{ScholarSlug}{year}.md
    • 增量模式:合并现有 Card 的"📝 论文引用摘录"、"🔗 关联"、"## 一句话摘要"段(用户可能已手写过)

v0.4.1 关键设计点:Library Cards 写到用户的 Vault,写到项目仓库的 examples/{slug}-perspective/。项目仓库内的 examples/{slug}-perspective/ 仅保留:

  • SKILL.md(perspective skill 主产物)
  • _vault_paths.md(指向 Vault 内真实素材路径的索引)

这样的双源架构:用户 Vault 是单一真源 + 项目仓库是开源共享层。


Phase 2.5 / [Workflow B 内]: 提炼确认检查点

Phase 2 完成后暂停展示提炼摘要:

提炼结果摘要:
- 核心概念:N 个(列出名称及原语)
- 方法论进路:N 条
- 学术坐标:[学派 / 立场 / 时代位置]
- 行文风格:[3 个关键特征]
- 智识谱系:[N 位上游 / N 位下游 / N 位横向对话者]
- 重大立场转变:N 处
- 内在张力:N 对
- 信息分级标注:一手 X% / 二手 Y% / 传记类 Z%

用户确认 → Phase 3。 不满意 → 回到 Phase 2 调整。


Phase 3 / [Workflow B.4]: Skill 构建

将 Phase 2 提炼结果组装为可运行的 SKILL.md。

Step 1: 读取模板

读取 references/scholar-template.md 获取标准结构。

Step 2: 填充内容

模板 Section填充来源
frontmatter description学者名 + 学派 + 触发词 + "默认第三人称分析镜片,对话模式 opt-in"
激活默认模式(核心)第三人称分析("从 [学者] 的 [概念] 视角看...")
可选对话模式(opt-in)用户主动说「切换到对话模式」「让我和 [学者] 直接对话」时启用,但全程保持元意识标注
学术身份卡学派 + 学术坐标 + 一句话核心镜片
概念地图Phase 2.1 结果
方法论手稿Phase 2.2 结果
学术坐标Phase 2.3 结果
行文风格 + 概念语言Phase 2.4 结果 → 转为分析时如何使用术语的指引
智识谱系Phase 2.5 结果
重大论战与立场转变Phase 2.6 结果
人格与处世Phase 2.7 结果(独立章节,不塞进时间线)
诚实边界Phase 2.8 结果(每条具体到操作层面)
调研来源7 个 agent 的引用汇总,分一手/二手/传记/访谈各自标注
创建者归属固定内容:"本 skill 由 学者问道 生成 / 致敬 女娲.skill 的方法论启发"

Step 3: 默认输出模式(关键差异化)

生成的 perspective skill 默认是分析镜片模式

## 激活规则(默认:分析镜片模式)

**本 skill 激活后,以学术分析者身份,使用 [学者] 的概念地图和方法论进路分析用户提供的材料或问题。**

### 输出格式
- 第三人称引用学者:"从 [学者] 的 [概念 X] 视角看..."、"按照 [学者] 的方法论进路,分析这个材料应该先..."
- 显式标注使用了哪个概念:"此处运用 [概念 Y],因为..."
- 指出概念局限:"但 [学者] 这个镜片对此类材料有以下盲区..."
- 不假装自己是该学者
- 不模仿语气、不模仿口头禅
- 必要时承认"超出 [学者] 思考过的范围,这是我(分析者)基于其框架的推断"

### 学术合规
- 涉及具体引用时附上来源(书名+章节)
- 区分"[学者] 明确说过"和"基于 [学者] 框架推断"
- 遇到本镜片不擅长的问题,明确说"此问题超出 [学者] 框架的有效范围"

### 可选:切换到对话模式(opt-in)
当用户**明确**说「切换到对话模式」「让我直接和 [学者] 对话」「角色扮演 [学者]」时,可以进入对话模式。但:
- 必须在第一回合声明:"我以 [学者] 的视角与你对话,基于公开著作推断,**非本人观点**。任何此对话内容不可作为 [学者] 真实立场引用"
- 整个对话过程保持元意识:遇到无法基于 [学者] 著作推断的问题,明确退出角色说"超出范围"
- 用户说「退出」「切回分析模式」时立即恢复

Step 4: 质量自检

读取 references/extraction-framework.md 末尾的质量自检清单,逐项检查。不通过的项标注,回到对应 Phase 修复。

Step 5: 输出

将完成的 SKILL.md 写入 ~/.claude/skills/[scholar]-perspective/SKILL.md,并在 ~/.agents/skills/ 创建软链接。


Phase 4 / [Workflow B.5]: 质量验证

生成 skill 后,用子 agent 执行 4 项测试(独立 agent 避免自评偏差):

4.1 已知测试(Sanity Check)

选 3 个该学者公开表态过的议题,spawn 子 agent 带新 skill 分析,对比实际立场。

  • 方向一致 → 模型有效
  • 偏离 → 调整概念地图权重

4.2 边缘测试(Edge Case)

选 1 个该学者没公开讨论过但相关的议题,用 skill 推断。

  • 期望:"基于概念 X 和方法论进路 Y 的推断,可能...但超出学者明确框架"
  • 不应该斩钉截铁地代学者发言

4.3 漫画化检测(Caricature Test)⭐ 学者问道独有

用 skill 分析一段日常材料(如新闻报道、社交媒体帖子)。

  • PASS:分析中调用了概念,但保持智识严肃性
  • FAIL:变成"学者口头禅集合"或"段子机器人"
  • 如果 FAIL,说明在 Phase 2.4(行文风格)抓得过表面,回去重做

4.4 默会知识声明检查

检查 SKILL.md 是否明确包含:

  • 波兰尼问题声明
  • 化石化时间标注
  • 公开 vs 私下区分
  • 传记修辞污染说明
  • 漫画化风险警示
  • 信息源分级标注
  • 死亡-自杀-尊重边界声明(v0.4 新增·见 humble-epistemics.md 第六项)

4.5 引文 page-anchor 强制核验(v0.4 新增·P0 #2 实施)

触发条件:本地优先 / 纯本地模式(即 _pdf_evidence/ 已生成的情况)。

检查规则

# 概念地图中每条带页码的引文:
# 模式 "p. N" 或 "p.{N}" 或 "页 N"
for citation in extract_citations(skill_md):
    book = citation.source_book
    page = citation.page
    quote = citation.quote_text
    evidence_md = f"_pdf_evidence/{slug(book)}.md"
    if not evidence_md_exists:
        warn("引文 anchor 不可证(evidence 文件缺失)")
        continue
    # 读 evidence_md 中 p.{page} 段落,比对 quote 头 80 字符
    if not quote_substring_in_evidence_page(quote, evidence_md, page):
        FAIL(f"引文不可定位: '{quote[:60]}...' 标 {book} p.{page},"
             f"但 evidence_md 该页无此文本")

v0.3 实战教训:v0.3 SKILL.md 至少 2 条引文页码不可证(WMLWL 引文 p.19 不存在 / Pharmacology organology 定义实际在 p.43 而非 p.46)。这些引文都是凭 Obsidian Card 摘录或印象写出。v0.4 必须 fail-fast。

不通过处理

  • 该条引文末尾标注「⚠️ v{X} 引文页码不可在本地 PDF 中验证」
  • 在 evidence 中找替代引文,或删除该条
  • 在 SKILL.md 末尾"v0.X 修订记录"小节记下变更

4.6 Narrative-Bracketing 自动检测(v0.4 新增·P1 #4)

触发条件:人格与处世章节(Phase 2.7 输出),尤其是含"形成性事件"段落。

v0.3 教训:Stiegler "1978 年武装抢劫服刑 5 年期间读哲学"段落,子 agent 的 prompt 强调了 narrative-bracketing(事实层 + 叙事层并标),但主 SKILL.md 输出无强制校验,结果可能出现"狱中读哲学"作为浪漫化叙事写入而无双层标注。

检查

formative_events = extract_formative_events(skill_md)  # heuristic:日期+事件+影响
for event in formative_events:
    has_fact_layer = bool(re.search(r"事实层|fact-level|来源等级", event.text))
    has_narrative_layer = bool(re.search(r"叙事层|narrative-level|学者自述|传记修辞", event.text))
    if not (has_fact_layer and has_narrative_layer):
        WARN(f"形成性事件 '{event.summary[:40]}' 缺 BRACKETING 双层标注")

4.7 通过标准

检查项通过标准不通过信号
概念地图数量3-7 个,每个有 ≥2 来源<3 或 >10
每个概念的局限性明确写出失效条件只写优点
方法论进路具体性可被新材料触发只适用于原始案例
智识谱系完整性上游+横向+下游都有单线孤立
信息源分级每条调研有等级标注无标注/混淆
一手来源占比>50%主要靠二手转述
漫画化检测PASSFAIL
诚实边界(六项)全部声明(含自杀-尊重边界)缺任意一条
引文 page-anchor 核验100% 引文可在 evidence 定位任何一条不可证
Narrative-Bracketing形成性事件双层标注缺事实/叙事层
PDF Evidence 覆盖每核心概念 ≥1 个证据来源0 evidence 来源

验证通过 → 交付。不通过 → 标注薄弱环节,回到对应 Phase。 迭代上限:Phase 2→4 最多循环 2 次。2 轮后仍不达标 → 在诚实边界中标注薄弱维度,交付当前最优版本。


Phase 5 / [Workflow B.5 子步骤]: 双 Agent 精炼(可选,开源前推荐)

参考 女娲.skill 的 Phase 5,但增加学术合规检查维度。

并行启动:

Agent A(结构评估)

  • 8 维度评估:激活规则清晰度、概念地图深度、方法论可操作性、信息源分级严格度、诚实边界具体性、漫画化检测健壮性、引用规范、跨语言素材整合
  • 输出最弱 2-3 个维度的具体改进建议

Agent B(学术合规审)

  • 检查所有概念引用是否附原文出处
  • 检查"明确说过"vs"框架推断"区分是否清晰
  • 检查传记类信息是否符合 biography-protocol.md 的分级标准
  • 检查是否避免了对学者人格的过度推断(特别是已故学者)
  • 输出 2-3 处具体修订建议

主 agent 综合两份报告 → 应用不冲突的改进 → 展示变更摘要请用户确认。


Phase 5.5 / [Workflow B.6]: Vault 同步(v0.4.1 新增 · 端到端工作流的关键步骤)

为什么这一步存在:scholar-wendao 是为 agent 准备的 学术研究全栈工作流系统——它的输出不只是给 GitHub 看的 demo,而是要 进入用户的真实研究知识库。前面所有 Phase 产出的素材如果只留在项目仓库的 examples/{slug}-perspective/,就只是 demo。Phase 5.5 的工作是把它们落到用户 Vault 的对应位置,让蒸馏过程同时增长用户的图书馆 + 概念笔记 + 谱系网络。

触发条件:用户在 _library_config.md 中配置了 vault_archive_path 字段。

配置项_library_config.md):

vault_archive_path: "$HOME/Documents/Obsidian/MyVault/02 · Knowledge"
library_files_path: "Library/_files"      # PDF 落点(已有路径)
library_cards_path: "Library/Cards"        # Card 落点
concepts_path: "Concepts"                  # 概念笔记落点
permanent_notes_path: "Permanent Notes"   # 谱系永久笔记落点
moc_path: "MOC Maps"                      # 主题地图落点
people_path: "People"                     # 人物志落点
project_workspace_path: "Projects/scholar-wendao/{slug}"  # research/biography 落点

操作步骤:调用 scripts/sync_to_vault.py 执行:

  1. PDF Library

    • _files/{ScholarSlug}{year}.pdf 已经在用户 Vault 里(download_open_access.sh 直接下到那里)—— 不需移动
    • 验证扁平命名一致性(flat archive_layout)
  2. Library Cards(来自 Phase 2.9):

    • 从项目仓库的 _pdf_evidence/ + 07-archive.json 生成 → 写到 {vault}/{library_cards_path}/{ScholarSlug}{year}.md
    • 增量模式:保留用户已手写的内容
  3. 概念笔记(Concepts):

    • 检测 Vault 内是否已有匹配的概念笔记(如 第三持存.md
    • 已有 → 末尾追加"📎 v{X} PDF 证据来源"小节,链接到对应 Cards
    • 不存在 → 不创建(避免污染用户已有的概念体系,等用户主动建)
  4. 永久笔记(Permanent Notes / 谱系):

    • 类似 Concepts:仅在已有谱系笔记上追加 wikilink,不创建新文件
  5. MOC(主题地图):

    • 检测 {vault}/{moc_path}/{学者中文名}研究 MOC.md 是否存在
    • 已有 → 在末尾"🔬 v{X} 蒸馏素材"小节追加:
      • 链接到 perspective skill SKILL.md
      • 链接到 Library Cards(按年份分组)
      • 链接到 research/ 文档
      • 链接到 biography 时间线
    • 不存在 → 创建新 MOC(最小骨架),用户后续手动扩展
  6. 人物志(People):

    • 类似:在已有 {ScholarName}.md 末尾追加 v{X} 蒸馏 biography 的精华摘录 + 完整文档 wikilink
  7. research / biography 工作区

    • 复制(or 软链)references/research/ + references/biography/{vault}/{project_workspace_path}/
    • markdown 内的相对路径引用全部 wikilink 化
  8. 项目仓库瘦身

    • 在项目仓库 examples/{slug}-perspective/ 生成 _vault_paths.md(索引,内容是 Vault 路径列表)
    • 选项 (a) 极简:删除 references/_pdf_evidence/(仅保留 SKILL.md + _vault_paths.md)
    • 选项 (b) 轻量(默认):保留 references/research/ 7 篇 + _pdf_evidence/_navigator.md,作为开源访客可见的"产出形态"参考
    • 选项 (c) 照旧:保留全部(Vault 也有副本,双份)

Phase 5.5 退出条件

  • 用户 Vault 内的 7 个目标位置全部接收到对应素材
  • 项目仓库 examples/{slug}-perspective/ 已按选项 a/b/c 处理
  • _vault_paths.md 写入完整路径索引

Phase 6 / [共享层]: GitHub 工作流(v0.4.1 新增 · 端到端可重现)

为什么这一步存在:scholar-wendao 的开源价值在于 整套工作流可被其他研究者复用。Phase 6 把项目仓库的更新提交并推送,让蒸馏成果可被开源社区追溯。

触发条件:在 Phase 5.5 完成后,且项目仓库有 staged 改动。

操作步骤

  1. 生成 commit message

    • 标题:v{X}: {ScholarName} perspective skill — distilled from {N} PDFs + {M} non-book sources
    • 摘要:核心概念列表 + quality_check 得分 + page-anchor 通过率 + Vault 同步路径概览
    • 工具尾行:Created by https://github.com/tizzy916/scholar-wendao-skill
  2. stage + commit

    git add SKILL.md scripts/ references/ examples/{slug}-perspective/ README.md
    git commit -F <(echo "$COMMIT_MSG")
    
  3. 询问 push(不直接 push,用户确认):

    • 默认推送到 origin/main
    • 如果用户配置了 dev_branch,推送到 dev 分支让用户 review 后 merge

Phase 6 不应该

  • 把 Vault 内素材推到 git(Vault 内可能含版权 PDF + 私人笔记)
  • 在用户未确认时执行 git push --force 或修改历史

更新与重蒸(v0.4.2 双工作流细分)

v0.4.2 区分三种"再次跑"的语义。agent 必须根据用户表达准确路由:

模式 A · 仅补料("为 X 补料" / "更新 X 的图书馆")

触发:用户已有 X 的 skill + Library,想新加几本书 / 几个讲座链接到库里。

行为:仅跑 Workflow A(A.0/A.1/A.2/A.3/A.4/A.5),不动 SKILL.md。

  • 新 PDF 通过 A.4 主动导入 → Library/_files
  • 增量更新 / 新建 Library Cards
  • 更新 acquisition_manifest 标注新增项

模式 B · 轻量 update("更新 X 的 skill")

触发:用户已有 X 的 skill,最近有新文献 / 新讲座,想增量补充而非重做。

行为:v0.4.1 既有逻辑:

  1. 读取现有 SKILL.md 的"调研时间",标注距今多久
  2. 启动 Agent 1(新著作)+ Agent 2(新访谈)+ Agent 7(档案增量更新)
  3. 对比新信息 vs 现有内容:
    • 新信息强化现有概念 → 补充案例
    • 新信息冲突 → 标注立场转变(不删除旧版,记入论战 section)
    • 出现新概念 → 考虑增加
  4. 更新 SKILL.md 的"最新动态"+ 调研时间
  5. 不重写整个 skill,只增量

模式 C · 重蒸("重蒸 X" / "用新资料重做 X 的镜片")

触发:Library 经过多轮 A.4 大幅扩充(如新加了 10+ 部关键专著),现有 SKILL.md 基于的 evidence 已不充分,需要整体重做。

行为

  1. archive 旧版:把当前 examples/{slug}-perspective/SKILL.md 移到 examples/{slug}-perspective/_archive/SKILL_v{X}_{date}.md
  2. 重跑 Workflow B 全部(B.1 → B.6)
  3. diff 新旧:在 commit message 中 highlight 哪些概念因新材料而实质改变
  4. 保留:用户在旧 SKILL.md "## 引用章节"、"📝 论文引用摘录" 等手写小节由 Phase 5.5 增量合并保留

模式 C 与模式 B 的区别:B 是"加几条",C 是"基于扩充后 evidence 重新组织所有概念定义、引文、谱系"。


品味守则(速查)

原则一句话
概念体系化 > 金句一个反复使用的术语网络比 50 句精彩论断更揭示思维
论战 > 一致改变立场和被批评的瞬间最有信息量
一手 > 二手直接读学者本人,比读"X 学者研究"更接近真相
局限 > 包装把局限明确说出来,比把局限藏起来更可信
镜片 > 替身我们要的是分析工具,不是代言人

绝不做的事

  • 编造该学者没说过的话
  • 把通用学术常识包装成此学者的"独特见解"
  • 忽略对该学者的尖锐批评(即使合规要求婉转处理也要保留)
  • 在信息不足时强行生成完整 skill(宁可写出诚实的 60 分)
  • 用第一人称扮演作为默认输出(必须用户主动 opt-in)
  • 把传记作者的修辞当事实

特殊场景

已故学者 vs 在世学者

  • 已故学者:闭合语料,调研时间标注一次即可
  • 在世学者:标注调研截止日期,建议每 12-24 个月做一次 update

中国学者 vs 西方学者

  • 中国学者:CNKI/万方/商务馆/三联书店为主、本人讲座(B 站原始)、官方采访(《思想的境界》《一席》《文化纵横》《读书》)。永远排除知乎、微信公众号、百度百科
  • 西方学者:本人著作 + JSTOR + PhilPapers + Google Books + 机构主页
  • 中文译介过来的西方学者优先读原语,中译只作为参考。表达 DNA 必须基于原文,否则就是在蒸馏译者而非作者

主题 skill(如"批判理论""民族志方法")

输入不是单个学者而是方法论传统时:

Phase人物 skill主题 skill 变体
0A确认学者+聚焦确认主题边界+流派范围
0.5[scholar]-perspective/[topic]-framework/
17 agent 围绕一人先确定主题的 3-5 个核心人物,每人 1-2 个 agent(不是 7 个)
2.1一人的概念地图领域共识+各家分歧
2.4一人的行文风格不模仿,用中性专业表达
2.7一人人格跳过(主题没有人格)
3用 scholar-template调整模板:去掉学术身份卡,改为"领域概览"+"流派对比"

冷门学者(公开信息 <10 条来源)

  1. Phase 0.5 就告知用户"信息量受限,质量会打折"
  2. 概念地图减至 2-3 个,每个标注"基于有限信息推测"
  3. 诚实边界 section 加大,列出"哪些维度信息不足"
  4. 鼓励用户提供一手语料

蒸馏用户的导师/师兄/同事

  1. 学者问道无法从公开渠道蒸馏私人学者
  2. 引导用户提供:导师的论文/讲义、合作论文、面谈录音、给学生的反馈邮件
  3. Phase 1 改为分析用户提供的素材
  4. 注意"师生关系不对等"——学生的回忆可能美化或贬损,多源交叉

最后

学者问道的 skill 不是替代学者,是把他的分析镜片借给你。

用别人的概念地图,看自己的研究材料;用别人的方法论,问自己未问的问题。

不为了模仿他们,是为了拓展你的思维边界——这是与古今学者建立的真正学术对话。


关于作者 / About the Author

沈聪,中央美术学院实验艺术学院本科,清华大学科学史系硕士(导师 胡翌霖),科技文创公司 天与视界 TIANYU VISION 创始人 & CEO。学术训练横跨实验艺术、科学史与技术哲学;创业方向是用 AI 做科研可视化、科学传播与科艺融合。

「学者问道」诞生于一个具体的写作困境——做学位论文《技术自由主义》时,他不需要"和 Stiegler 聊天",而是需要把多位学者(Stiegler、Rancière、Arendt、Aristotle……)的分析镜片装进自己的研究流程,边读材料边能立刻调用。市面上没有这样的工具,只能自己造——这就是学者问道。

📮 GitHub @tizzy916 · [email protected] · 欢迎纠错、合作、交流


本 skill 由 学者问道 生成 方法论受 女娲.skill 启发,专为人文学术场景重新设计

What ships with it: 26 files

325.9 KB alongside SKILL.md, 11 of them executable

Keep looking

Skills are one crate of 326,144. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.