Scholar wendao skill
学者问道:为人文社科学者构建可调用的思想分析工具。 输入学者名/研究领域,自动多语言采集著作、二手文献、传记与学术争论, 提炼出可在你的研究中调用的"分析镜片"——而不是聊天机器人。 默认输出第三人称分析模式,对话/角色扮演作为 opt-in。 触发词:「学者问道」「问道于XX」「蒸馏学者」「构建XX的分析镜片」 「XX的研究方法」「XX视角」「scholar-wendao」「XX-perspective」「为XX建一个 skill」。 模糊触发:「我研究XX,需要某种分析框架」「有没有一种学者视角能帮我看待这个材料」。From its SKILL.md
npx -y skills add tizzy916/scholar-wendao-skillAssembled 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 既有逻辑,仅增补不重写)
关键设计原则
- A 与 B 通过
_acquisition_manifest.json解耦 —— B 不假设 A 已完成,只读 manifest 中已下载的部分作为 evidence 源。 - A.4 主动导入是一等公民,不是 fallback。用户随时可"我有一本 PDF,加到 X 的库",工具自动重命名 + 移到 Library + 生成 Card。
- 资料采集的"无漏"原则 = metadata 无漏,不是 PDF 全到手 —— 反爬严格的源(annas / Sci-Hub / 部分 paywall)只能输出 Tier 3+4 manifest 让用户决策。
- B 不阻塞 A 未完成项 —— 蒸馏总能跑(基于已有素材),SKILL.md 质量随 Library 增长而上。
- "重蒸 B"是激进重做 —— Library 大幅扩充后整体重做 Phase 2.x,旧 SKILL.md 进
_archive/;与"轻量 update"不同。
4 层资料采集架构
| Tier | 自动化程度 | 适用源 | 工具 |
|---|---|---|---|
| 1 · 完全 API | 100% 自动 | OpenAlex / Crossref / Semantic Scholar / arXiv / OAPEN / DOAB / unpaywall | harvest_works.py |
| 2 · 友好 scrape | 90% 自动 | 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 主题模式)
学者类型 → 三个核心差异
| 维度 | contemporary | traditional(v0.5 新增) | topic |
|---|---|---|---|
| 概念地图 size | 3-7 | 5-15(允许大概念集) | 5-10 |
| 默认输出 mode | 单一第三人称 | multi-perspective(本人+N 派) | 领域共识+各家分歧 |
| Lineages 一等公民 | 否 | 是(必填 4-6 派) | 否(流派 = 主题本身) |
| 概念结构 | 概念→单一定义 | 概念→本人+N 派 reading 差异 | 共识概念+争议概念 |
| 引文系统 | PDF page anchor | Bekker/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 项「学者类型」):
-
学者身份精确锁定:避免重名混淆("Foucault" 是 Michel 还是 Léon?"Charles Taylor" 哪一位?)
-
聚焦方向(可选):全面镜片 vs 聚焦某个维度(如只蒸馏 Stiegler 关于"技术外在化"的部分)
-
使用场景:用于分析某类特定材料?给写作提供概念资源?还是做思想史研究?
-
是否更新:检查
~/.claude/skills/[scholar]-perspective/是否已存在 -
本地一手语料:「你手上有这个学者的一手语料吗?比如电子版专著、访谈 transcript、本人手稿、学生整理的讲座稿。有的话直接给路径,比网络搜索质量高得多」
-
学者类型(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 是用户全局学术档案目录。优先级:
- 用户已设置环境变量
$SCHOLAR_WENDAO_LIBRARY→ 使用之 - 用户使用 Obsidian 等知识库系统 → 推荐配置为已有的"数字图书馆"目录
- 例:
export SCHOLAR_WENDAO_LIBRARY="$HOME/Documents/Obsidian/Library/_files"
- 例:
- 都没有 → 默认
$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.md 的 archive_layout 字段。下载脚本(download_open_access.sh、annas_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.md 的 coverage_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.1download_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% 或用户提供 PDF | Phase 1.0 抽取本地 evidence 为主,网络补缺口 |
| 纯本地 | Library 覆盖率 ≥ 70% 或用户明确"只用我给的" | Phase 1.0 evidence 为唯一来源,网络仅补传记类信息 |
本地优先的执行逻辑:
- 先读本地素材:将文件按 7 维度归类(一本书可能同时覆盖专著+表达+方法论)
- 识别信息缺口:哪些维度本地覆盖了?哪些薄弱?
- 定向补充搜索:仅对缺失维度启动网络 agent
- 来源标记:调研文件中明确区分"用户提供"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.json 含 empty_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.pdfOCR 完成后重跑
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 的任务流:
- 多语言查询:以学者母语 + 英语 + 中文(如有)三组关键词查询,合并去重
- 完整性检查:交叉对比 OpenAlex / Crossref / 学者本人主页 / 维基百科书目,标注遗漏
- OA 标注:每条记录标注是否开放获取,及可获取链接
- 优先级排序:按"奠基性专著 → 代表论文 → 重要访谈 → 编辑作品"分级
- 输出清单:
07-archive.md含完整书目 + 待采购清单(标注闭源版本的获取建议) - 触发下载:对开放获取部分,调用
scripts/download_open_access.sh自动下载到sources/works/ - 处理闭源:调用
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_status:pending/intake_completed/acquired_via_browser/skippedacquisition_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 条目
自动行为:
- 重命名为扁平命名
{file_prefix}{year}_{slug}_{lang}.pdf - 移动到
{library_files_path}目录 - 跑
extract_pdf_evidence.py(仅对该新 PDF)→_pdf_evidence/{slug}.md - 跑
generate_library_cards.py(增量)→ Card - 在
_acquisition_manifest.json中标记acquisition_status: intake_completed - 输出报告:哪部 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 个核心概念)
学者的"心智模型" = 他的核心理论概念及其相互关系。不是普通用词,是被他系统化为分析工具的术语。
操作步骤:
- 扫描:从
01-monographs.md到05-debates.md列出所有候选概念 - 三重验证:每个候选执行——
- 概念体系化使用:在 ≥2 部不同时期/不同主题的著作中作为分析工具被反复使用?
- 推断生成性:用这个概念能否推断学者对新现象的可能立场?
- 学派区分度:是否区别于同代/同流派学者?(如果福柯和阿甘本都用"主权",区分度低)
- 三重通过 → 核心概念;仅 1-2 重 → 降级为"次级概念";0 重 → 丢弃
- 取舍:3-7 个核心概念。宁少勿多
- PDF 证据锁定(v0.4 新增·本地优先 / 纯本地模式强制):
- 对每个核心概念,从
_pdf_evidence/_navigator.md的「概念 × 书」矩阵读出 top-3 anchor 书 - 打开对应
_pdf_evidence/{book}.md,读完该概念在该书的所有 hits - 每条引文必须能锁定到具体页码(
p.{N}) - 概念定义、关键引文、引文页码必须能在某一份
_pdf_evidence/{book}.md中直接搜到——禁止凭印象引用,禁止从二手文献转引 - 概念末尾"反复出现的著作"小节必须按 evidence 出现频次而非常识权重排序
- 对每个核心概念,从
- 记录格式:每个概念——
- 名称(含原语)
- 一句话定义(含来源文献页码)
- 反复出现的著作(每条标 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,必须明确写出六大局限:
- 波兰尼问题:本镜片只能复现可显式表达的部分,学者的研究直觉与品味是默会的
- 思想化石化:截止到调研时间点的快照,之后的演变需要 update
- 公开 vs 私下:所有公开材料都是经过过滤的展演自我
- 传记修辞污染:所有传记类信息已分级标注,但仍然可能被叙事框架扭曲
- 漫画化风险:使用本镜片时如果发现自己在生产"段子集合"而非智识分析,立刻停止
- 死亡-尊重边界(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 执行:
-
读源:
_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""引用章节"等
-
填充 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}]]"+"文献笔记:[[…读书笔记]] (待写)"
- frontmatter:
-
写出:
- 路径:
{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% | 主要靠二手转述 |
| 漫画化检测 | PASS | FAIL |
| 诚实边界(六项) | 全部声明(含自杀-尊重边界) | 缺任意一条 |
| 引文 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 执行:
-
PDF Library:
_files/{ScholarSlug}{year}.pdf已经在用户 Vault 里(download_open_access.sh 直接下到那里)—— 不需移动- 验证扁平命名一致性(
flatarchive_layout)
-
Library Cards(来自 Phase 2.9):
- 从项目仓库的
_pdf_evidence/+07-archive.json生成 → 写到{vault}/{library_cards_path}/{ScholarSlug}{year}.md - 增量模式:保留用户已手写的内容
- 从项目仓库的
-
概念笔记(Concepts):
- 检测 Vault 内是否已有匹配的概念笔记(如
第三持存.md) - 已有 → 末尾追加"📎 v{X} PDF 证据来源"小节,链接到对应 Cards
- 不存在 → 不创建(避免污染用户已有的概念体系,等用户主动建)
- 检测 Vault 内是否已有匹配的概念笔记(如
-
永久笔记(Permanent Notes / 谱系):
- 类似 Concepts:仅在已有谱系笔记上追加 wikilink,不创建新文件
-
MOC(主题地图):
- 检测
{vault}/{moc_path}/{学者中文名}研究 MOC.md是否存在 - 已有 → 在末尾"🔬 v{X} 蒸馏素材"小节追加:
- 链接到 perspective skill SKILL.md
- 链接到 Library Cards(按年份分组)
- 链接到 research/ 文档
- 链接到 biography 时间线
- 不存在 → 创建新 MOC(最小骨架),用户后续手动扩展
- 检测
-
人物志(People):
- 类似:在已有
{ScholarName}.md末尾追加 v{X} 蒸馏 biography 的精华摘录 + 完整文档 wikilink
- 类似:在已有
-
research / biography 工作区:
- 复制(or 软链)
references/research/+references/biography/到{vault}/{project_workspace_path}/ - markdown 内的相对路径引用全部 wikilink 化
- 复制(or 软链)
-
项目仓库瘦身:
- 在项目仓库
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 改动。
操作步骤:
-
生成 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
- 标题:
-
stage + commit:
git add SKILL.md scripts/ references/ examples/{slug}-perspective/ README.md git commit -F <(echo "$COMMIT_MSG") -
询问 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 既有逻辑:
- 读取现有 SKILL.md 的"调研时间",标注距今多久
- 启动 Agent 1(新著作)+ Agent 2(新访谈)+ Agent 7(档案增量更新)
- 对比新信息 vs 现有内容:
- 新信息强化现有概念 → 补充案例
- 新信息冲突 → 标注立场转变(不删除旧版,记入论战 section)
- 出现新概念 → 考虑增加
- 更新 SKILL.md 的"最新动态"+ 调研时间
- 不重写整个 skill,只增量
模式 C · 重蒸("重蒸 X" / "用新资料重做 X 的镜片")
触发:Library 经过多轮 A.4 大幅扩充(如新加了 10+ 部关键专著),现有 SKILL.md 基于的 evidence 已不充分,需要整体重做。
行为:
- archive 旧版:把当前
examples/{slug}-perspective/SKILL.md移到examples/{slug}-perspective/_archive/SKILL_v{X}_{date}.md - 重跑 Workflow B 全部(B.1 → B.6)
- diff 新旧:在 commit message 中 highlight 哪些概念因新材料而实质改变
- 保留:用户在旧 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/ |
| 1 | 7 agent 围绕一人 | 先确定主题的 3-5 个核心人物,每人 1-2 个 agent(不是 7 个) |
| 2.1 | 一人的概念地图 | 领域共识+各家分歧 |
| 2.4 | 一人的行文风格 | 不模仿,用中性专业表达 |
| 2.7 | 一人人格 | 跳过(主题没有人格) |
| 3 | 用 scholar-template | 调整模板:去掉学术身份卡,改为"领域概览"+"流派对比" |
冷门学者(公开信息 <10 条来源)
- Phase 0.5 就告知用户"信息量受限,质量会打折"
- 概念地图减至 2-3 个,每个标注"基于有限信息推测"
- 诚实边界 section 加大,列出"哪些维度信息不足"
- 鼓励用户提供一手语料
蒸馏用户的导师/师兄/同事
- 学者问道无法从公开渠道蒸馏私人学者
- 引导用户提供:导师的论文/讲义、合作论文、面谈录音、给学生的反馈邮件
- Phase 1 改为分析用户提供的素材
- 注意"师生关系不对等"——学生的回忆可能美化或贬损,多源交叉
最后
学者问道的 skill 不是替代学者,是把他的分析镜片借给你。
用别人的概念地图,看自己的研究材料;用别人的方法论,问自己未问的问题。
不为了模仿他们,是为了拓展你的思维边界——这是与古今学者建立的真正学术对话。
关于作者 / About the Author
沈聪,中央美术学院实验艺术学院本科,清华大学科学史系硕士(导师 胡翌霖),科技文创公司 天与视界 TIANYU VISION 创始人 & CEO。学术训练横跨实验艺术、科学史与技术哲学;创业方向是用 AI 做科研可视化、科学传播与科艺融合。
「学者问道」诞生于一个具体的写作困境——做学位论文《技术自由主义》时,他不需要"和 Stiegler 聊天",而是需要把多位学者(Stiegler、Rancière、Arendt、Aristotle……)的分析镜片装进自己的研究流程,边读材料边能立刻调用。市面上没有这样的工具,只能自己造——这就是学者问道。
📮 GitHub @tizzy916 · [email protected] · 欢迎纠错、合作、交流
What ships with it: 26 files
325.9 KB alongside SKILL.md, 11 of them executable
references/
- biography-protocol.md11.1 KB
- extraction-framework.md13.6 KB
- humble-epistemics.md20.7 KB
- _library_config-template.md6.0 KB
- lineage-protocol.md9.9 KB
- scholar-template.md13.4 KB
- source-strategies.md10.2 KB
- traditional-scholar-template.md7.2 KB
scripts/
- annas_acquire.pyruns15.3 KB
- biography_synth.pyruns9.5 KB
- download_open_access.shruns8.7 KB
- extract_pdf_evidence.pyruns11.6 KB
- generate_library_cards.pyruns14.8 KB
- harvest_oa_publishers.pyruns16.7 KB
- harvest_works.pyruns14.9 KB
- intake_manual_pdf.pyruns14.3 KB
- quality_check.pyruns35.3 KB
- regenerate_navigator.pyruns8.4 KB
- sync_to_vault.pyruns8.0 KB
- CITATION.cff2.8 KB
- CONTRIBUTING.md6.8 KB
- .gitignore1.4 KB
- LICENSE18.9 KB
- README_EN.md21.7 KB
- README.md22.7 KB
- .zenodo.json2.0 KB