mcpField
E
efficient-literature-survey

efficient-literature-survey

github.com/namooubn生产力10125 次安装27 周前更新
代码仓库

关于 efficient-literature-survey

efficient-literature-survey 是用于批量处理学术文献的工作流,涵盖元数据提取、阅读排序和结构化写作。它通过分阶段确认与分层定向阅读,支持学位论文或综述论文写作。

主要功能

  1. 01批量提取文献元数据
  2. 02主题聚类与相关性评分
  3. 03分层定向阅读论文
  4. 04大纲确认检查点
  5. 05结构化文献写作

适用场景

  1. 01整理文件夹中的学术论文
  2. 02为论文综述确定阅读优先级
  3. 03拟定文献地图与写作大纲

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/namooubn/efficient-literature-survey --skill efficient-literature-survey

安装后在 Claude Code 中输入/efficient-literature-survey确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
README.md
CHANGELOG.md
README_EN.md
extract_literature_metadata.py
pyproject.toml
requirements.txt
test_extract_literature_metadata.py
cache/
__init__.py
manager.py
checkpoint/
manager.py
citation/
__init__.py
bibtex.py
engine.py
core/
__init__.py
constants.py
logging_config.py
config.py
helpers.py
extractors/
__init__.py
docx.py
base.py
txt.py
pdf.py
epub.py
report/
__init__.py
generator.py

详细介绍

高效文献调研工作流

核心假设

  • 文献类型:用户提供的文件是学术论文、专著或学位论文。非学术内容(新闻报道、法律文件、产品手册)需标记为 non-academic 并降级至 P2 仅摘要处理。
  • 语言:支持中英混合文献。输出语言以 Stage 0 用户配置为准。
  • 格式:PDF、DOCX、TXT、MD、EPUB。CAJ 需先转 PDF。
  • Token 策略:从全文通读(500 万以上字符)压缩至定向阅读(约 3 万字符),节省 99% 以上。

触发条件

  • “帮我读文献”、“写绪论和综述”、“快速理解大量文献”、“节省 token 读论文”
  • “文献综述”、“论文绪论”、“批量阅读论文”
  • 用户有一个文献文件夹,并需要结构化的学术输出

**不适用情况:**少于 5 篇论文、仅需总结单篇论文,或文件纯属非学术内容。

启动模式

  • 模式 A(默认):立即运行 Stage 1 脚本 → 显示结果表格 → 收集剩余的 Stage 0 配置。
  • 模式 B:如果用户主动提供了全部 5 项配置,直接进入 Stage 1。
  • 模式 C(快速模式):仅当 (a) 已提供全部 5 项配置,且 (b) 用户明确表示“直接走 / 全速推进 / 不用确认”时触发。在此模式下:
    • 显示 Stage 1 结果;如果用户没有异议,自动进入 Stage 2。
    • 显示 Stage 2 聚类图;自动进入 Stage 3(合并检查点)。
    • 显示 Stage 3 阅读摘要;进入 Stage 3.5 前必须暂停并等待用户确认。
    • 显示 Stage 3.5 大纲;进入 Stage 4 前必须暂停并等待用户确认。
    • 保留 Stage 0 和 Stage 2 检查点;将 Stage 2→3 检查点合并为一份“图谱 + 计划”摘要。
  • 模式 D(半快速模式):当 (a) 已提供全部 5 项配置,且 (b) 用户没有明确表示“逐阶段确认”时触发。在此模式下:
    • 显示 Stage 1 结果;自动进入 Stage 2。
    • 将 Stage 2 聚类图 + 阅读计划合并为一个输出;进入 Stage 3 前必须暂停并等待用户确认。
    • 显示 Stage 3 阅读摘要;进入 Stage 3.5 前必须暂停并等待用户确认。
    • 显示 Stage 3.5 大纲;进入 Stage 4 前必须暂停并等待用户确认。
    • 关键规则:即使在模式 D 下,Agent 也不得在没有用户明确确认的情况下从 Stage 2 进入 Stage 3,或从 Stage 3.5 进入 Stage 4。这些检查点不可协商。

Stage 0:用户配置(必填——收集齐全部 5 项之前停留在此处)

#配置项提问
1输出语言“使用什么语言?”
2引用格式“APA / MLA / GB/T 7714 / 编号 [1]?”
3章节结构“自定义标题,还是使用默认模板(中文/英文论文)?”
4研究定位“论文标题、摘要、研究问题,或 3–5 个关键词——任意一项均可。”
5文献文件夹路径“文件在哪里?”
6输出类型“学位论文(thesis)/ 综述论文(review article)/ 其他?”(默认:学位论文)

规则:收集齐全部 5 项之前,不要进入 Stage 4。如果选择了自定义结构但尚未提供具体内容,则停留在 Stage 0。

Stage 1:批量提取元数据

步骤 0:环境预检查(必需)

运行提取前,检查环境以避免运行时故障:

python extract_literature_metadata.py <folder_path> --env-check

此步骤会检查:

  • 是否已安装依赖项(PyPDF2、pdfplumber、python-docx 等)
  • 终端编码(Windows GBK → UTF-8 警告)
  • 加密 PDF、扫描图像 PDF、CAJ 文件

如果缺少依赖项:pip install PyPDF2 PyCryptodome pdfplumber python-docx ebooklib beautifulsoup4 如果 Windows 使用 GBK 编码:运行 chcp 65001 或 set PYTHONIOENCODING=utf-8 如果检测到加密 PDF:区分轻度加密与完全加密(参见下文的决策点)。

步骤 1:提取信息

运行 extract_literature_metadata.py <folder_path> [--keywords "kw1,kw2"] 以提取:

  • 标题、作者、年份、页数、字数
  • 期刊/卷/期/页码范围/DOI(启发式检测)
  • 扫描图像标记、加密标记(含等级:轻度/完整)、首页预览文本
  • 专著目录 + 匹配关键词的章节(针对页数 >100 的 PDF)
  • 重复项检测

输出:_literature_extraction.json + _literature_report.md + 可选的 _literature_references.bib。

增量复用:如果输出文件夹中已存在 _literature_extraction.json,且文件未发生变化(SHA-256 缓存),则跳过重新提取,继续进入阶段 2。除非用户明确要求,否则不要强制重新运行阶段 1。

决策点:

  • 扫描版/图像型 PDF → 提醒用户;建议使用 marker / nougat / tesseract OCR。
  • 加密 PDF → 分级处理:
    • 轻度加密(encryption_level: light):PyPDF2 会标记为已加密,但 pdfplumber 可正常读取文本。脚本会使用空密码自动解密。正常继续。
    • 完整加密(encryption_level: full):PyPDF2 和 pdfplumber 均无法读取。标记并请用户手动解密。
  • 检测到 CAJ → 指示用户转换为 PDF。
  • 带目录的专著(>100 页)若目录匹配 → 在阶段 1 输出中报告匹配的章节及页码范围。这些章节将成为 P0 核心阅读目标。
  • 40 篇参考文献 → 按子文件夹或主题簇分批处理。

[USER_CHECKPOINT]:展示阶段 1 结果表。等待用户确认后再进入阶段 2。

阶段 2:构建文献图谱(聚类 + 优先级排序)

输入:阶段 1 元数据(标题、预览)+ 阶段 0 研究定位。

步骤 1:主题聚类(必须)

将参考文献分为 5-8 个主题簇。每个主题簇名称都必须在括号中包含 1-2 个代表性关键词。

示例 — 对 5 篇大模型研究论文进行聚类:

标题所属主题簇
Attention Is All You Need1. Transformer 架构与注意力机制 (Transformer, Attention)
BERT: Pre-training of Deep Bidirectional Transformers2. 预训练与表征学习 (Pre-training, Representation)
Language Models are Few-Shot Learners (GPT-3)3. 大模型推理与涌现能力 (LLM, Emergence)
Chain-of-Thought Prompting Elicits Reasoning3. 大模型推理与涌现能力 (LLM, Emergence)
Evaluating Large Language Models via Human Preference4. 模型评估与对齐 (Evaluation, Alignment)

规则:每篇论文只能归入一个主要主题簇。如果论文涉及多个主题,请在 note 中注明次要主题簇。

步骤 2:相关性评分(必须)

根据用户阶段 0 研究定位中的关键词,对每个主题簇进行评分,并将这些关键词作为明确的评判标准。

分数含义操作阅读深度
直接相关直接回应用户的研究问题→ P0 核心全文(≤50k 字符)或摘要 + 结论 + 关键章节
相关支持理论、方法或背景→ P1 辅助摘要 + 结论 + 关键词匹配章节
边缘相关属于同一领域,但关联较弱→ P2 背景仅摘要
关联极弱关联极少→ 排除不引用

规则:每项评分都必须至少引用一个用户阶段 0 研究定位中的关键词。示例:“主题簇 3 评为直接相关,因为它讨论了‘思维链推理’,与用户的关键词‘推理增强’相符。”

[CONTEXT_OVERFLOW] 防护规则:>40 篇参考文献 → 按格式或主题簇分批筛选。

[USER_CHECKPOINT]:展示完整图谱(主题簇、评分、阅读策略)。等待用户确认。

阶段 3:分级定向阅读

[USER_CHECKPOINT]:展示阅读计划(哪些 P0/P1/P2,以及阅读深度)。等待确认。

模式 C 例外:如果用户已用“直接走”确认阶段 2 的聚类图,则将此检查点合并到阶段 2 的摘要中。将阅读计划作为聚类图输出的一部分展示,然后自动进入下一阶段。

模式 D 例外:模式 D 中合并后的“聚类图 + 阅读计划”输出仍必须等待用户确认,才能继续实际阅读。不要仅仅因为已展示计划就悄悄执行阶段 3 的阅读。

P0(核心)——5-8 篇参考文献
  1. 先阅读前 2,000 个字符,了解结构。
  2. 如果 ≤50,000 个字符 → 阅读全文。
  3. 如果 >50,000 个字符 → 阅读摘要 + 结论 + 2-3 个关键章节。
  4. 提取:核心论点、2-3 条直接引文、理论脉络、方法论。
P1(支持)——15-20 篇参考文献
  1. 阅读前 2,000 个字符(摘要 + 引言)。
  2. 阅读最后 1,500 个字符(结论)。
  3. 如果预览中出现关键词 → 阅读匹配部分(前后各 500 个字符)。
  4. 提取:用 2-3 句话说明贡献及其与研究空白的关联。
P2(背景)——其余参考文献
  1. 阅读前 1,000 个字符(摘要)。
  2. 用一句话说明其定位。

[CONTEXT_OVERFLOW] 防护规则:P0+P1 合计 >100k 字 → 将所有 P1 降级为仅阅读摘要;P0 仅保留排名前 5 的文献。

[USER_CHECKPOINT]:阶段 3 结束后,展示简要阅读摘要。等待确认后再进入阶段 4。

阶段 3.5:大纲确认(必须执行)

目的:避免写完 6,800+ 字后,用户想调整结构而造成大量返工。用户说过“我不着急 一步步来”——本阶段旨在尊重这一意愿。

输入:阶段 3 的阅读摘要 + 阶段 0 的章节结构 + 专著章节映射(如有)。

输出:要点式大纲,包含:

  • 章节标题(与用户的阶段 0 结构完全一致)
  • 各章节的核心论点(1-2 句话)
  • 各章节计划引用的文献编号
  • 各章节预计字数
  • 专著章节与部分的映射(例如“专著《X》第 3 章 → 本节理论框架”)

格式:

## 写作大纲(待确认)

### 1. 研究背景与问题提出(约 800 字)
- 论点:XXX 领域的发展引出 YYY 核心问题
- 引用:[1], [3], [5]

### 2. 文献综述 — 子主题 A(约 1200 字)
- 论点:早期研究侧重... 近期突破在于...
- 引用:[2], [4], [7]
- 专著映射:专著《X》第3章"理论框架" → 本节理论基础

...

### N. 研究缺口与本研究定位(约 600 字)
- 论点:现有研究存在三方面局限 → 本研究的切入点
- 引用:[6], [8]

**预估总字数**:6800 字

规则:

  1. 本阶段不得撰写完整正文——仅列要点。
  2. 每一条计划引用都必须对应阶段 1 结果中的真实参考文献。
  3. 如果用户在阶段 0 提供了自定义章节结构,则必须原样使用;不得另行编造标题。
  4. 对于包含 chapter_texts 的专著,注明哪些章节对应哪些部分。

模式 C/D 例外:即使在快速 / 半快速模式下,阶段 3.5 也不得跳过。此处不允许自动进入下一阶段。阶段 2→3 合并检查点必须在阶段 3.5 结束,不得进入阶段 4。

[USER_CHECKPOINT]:展示大纲。等待用户明确确认或提出修改。

  • 如果用户说“确认 / 可以 / 没问题 / 就这么写” → 进入阶段 4。
  • 如果用户要求修改 → 修订大纲并重新展示。用户确认之前不得进入阶段 4。

阶段 4:结构化写作

按照用户的阶段 0 章节结构撰写引言和文献综述。除非用户明确选择,否则不得使用任何默认模板。

写作规则(强制)
  1. 严格遵循章节结构:使用用户指定的标题层级。
  2. 引用格式:使用用户要求的格式(APA/MLA/GB/编号制)。
  3. 来源锚定:
    • P0 级参考文献 → 深入的理论锚定和核心论点
    • P1 级参考文献 → 实证支持和次要论点
    • P2 级参考文献 → 仅用于拓展广度或交代历史定位
  4. 每项论断都必须能追溯到具体参考文献。
  5. 研究空白:最后一节必须明确指出研究空白,并说明用户的研究如何填补这一空白。
  6. 输出语言:严格遵循 Stage 0 配置。
  7. 时间演进:在每个主题集群内,按时间顺序或理论脉络组织参考文献。呈现:早期研究 → 转折点 → 最新进展。
  8. 批判性分析(根据 output_type 区分):
    • review article:每个主题集群段落中,至少内嵌一处冲突、方法论局限或矛盾发现。批判内容应融入该主题集群的论述脉络。
    • thesis(默认):批判内容可以集中放在专门的“文献评述 / Literature Critique”一节(通常位于所有主题集群小节之后)。每个主题集群段落应侧重时间演进和主题综合。统一评述部分应指出跨主题集群的研究空白、方法论局限及领域内的矛盾发现。每个主题集群中可酌情加入简短的内嵌批判,但并非必须。
    • Mixed:每个主题集群中加入简短的内嵌批判,并设置统一评述部分分析跨领域的研究空白。
  9. 综述与原创研究的区分:必须在高被引综述论文的首次文内引用之后立即标注 〔综述〕。示例:“郭小宇等〔综述〕对 X 领域进行了系统梳理……”。原创实验论文无需标注。
Few-Shot:主题集群段落写作示例

用户研究定位:“大模型中的思维链提示研究”

优秀示例(符合规则 7+8):

早期研究通过少量示例激发 LLM 的推理能力,但未显式构建中间步骤 (Brown et al., 2020)。Wei 等 (2022) 提出思维链 (CoT) 提示,在算术与常识推理任务上取得突破。然而,后续研究揭示了一项关键矛盾:CoT 虽能提升复杂任务的表现,却可能放大训练数据中的偏见 (Turpin et al., 2023),且其在低资源语言中的效果会大幅下降 (Shi et al., 2022)。这些相互矛盾的发现表明,亟需构建具备偏差感知能力的 CoT 机制——这正是本研究通过提出[你的方法]所要解决的研究空白。

优秀示例——论文风格(按时间顺序综合,将批判推迟到统一评述部分):

早期研究通过少量示例激发 LLM 推理能力,但未显式构建中间步骤 (Brown et al., 2020)。Wei 等 (2022) 提出思维链 (CoT) 提示,在算术与常识推理任务上取得突破。此后,零样本 CoT (Kojima et al., 2022) 与自一致性解码 (Wang et al., 2023) 进一步扩展了该范式。郭小宇等〔综述〕系统梳理了 CoT 在复杂推理中的应用现状。上述研究共同推动了从“直接预测”到“逐步推理”的范式转变,为本研究提出的偏差感知 CoT 机制奠定了理论基础。

(在文献评述一节统一批判:然而,现有 CoT 方法存在两方面局限:一是可能放大训练数据中的固有偏见 (Turpin et al., 2023);二是在低资源语言中效果显著下降 (Shi et al., 2022)。这些矛盾发现表明,亟需构建兼顾公平性与跨语言泛化能力的 CoT 框架——这正是本研究的切入点。)

不良示例(违反规则 7+8——平铺罗列,缺少冲突):

Wei et al. (2022) 提出了思维链提示。Kojima et al. (2022) 使用了零样本 CoT。Wang et al. (2023) 通过自一致性对其进行了改进。这些方法都提升了推理能力。

[USER_CHECKPOINT]:Stage 4 完成后,展示草稿并征求修改意见(结构、引用、研究空白分析)。

追加模式:添加新参考文献

当用户说“再添加一些论文”或“我找到 5 篇新参考文献”时:

  1. 增量提取:运行 Stage 1 脚本。SHA-256 缓存可确保跳过未更改的文件。
  2. 重新评估聚类:新参考文献进入 Stage 2。如果新参考文献揭示了缺失的主题,现有聚类可能会重命名或拆分。
  3. 最小化改写:更新文献地图,并将新参考文献标记为 〔新增〕。仅修改受影响聚类的 Stage 4 草稿。不要改写未受影响的部分。
  4. 重新编号引文:如果使用编号引文,则进行全局重新编号。提供引文变更的差异。

工具使用

Bash — 运行提取脚本
# Environment pre-check (run first)
python extract_literature_metadata.py <folder_path> --env-check

# Full extraction
python extract_literature_metadata.py <folder_path> [--max-pages N] [--citation-style STYLE] [--output-dir PATH] [--bibtex] [--no-recursive]
Read — 按层级定向阅读
层级策略
P0若全文不超过 50k 个字符,则阅读全文;否则阅读前 2k 个字符和关键章节
P1阅读前 2k 个字符、后 1.5k 个字符,以及关键词匹配的章节
P2仅阅读前 1k 个字符(摘要)
Write — 保存输出
  • _literature_map.md — 聚类、评分、阅读计划
  • _thesis_introduction.md / _literature_review.md — Stage 4 输出

快速参考

情况操作
文件夹中有 30 个以上文件立即运行 Stage 1(Mode A)
扫描版/图像版 PDF标记;建议使用 OCR 工具
轻度加密的 PDF自动解密;正常继续
完全加密的 PDF标记 encryption_level: full;用户必须解密
超过 100 页的专著提取目录;按关键词匹配章节;阅读匹配章节
没有章节结构暂停在 Stage 0;不要猜测
没有研究定位暂停在 Stage 0;不要盲目聚类
参考文献相关性较弱排除;在文献地图中注明其“相关性较弱”
用户希望“节省 tokens”强调 P0/P1/P2 层级系统
用户说“直接走/全速推进”启用 Mode C(快速模式)
用户提供了所有配置,但没有说“逐阶段确认”启用 Mode D(半快速模式)
CAJ 文件指示用户将其转换为 PDF
工作流中途添加新参考文献使用 追加模式
已存在 _literature_extraction.json跳过 Stage 1;继续 Stage 2

常见错误

  • 通读所有内容 — 先提取元数据。打开每个文件会耗费上下文。
  • 没有聚类 — 缺少主题聚类时,综述就会变成摘要列表,而非论证。
  • 未确定研究定位就聚类 — 没有用户的研究关键词,相关性评分就只能靠猜。
  • 猜测结构 — 在 Stage 0 询问确切的标题。结构不匹配 = 全面重写。
  • 忽略相关性较弱的参考文献 — 必须标记相关性较弱的参考文献,并酌情排除。
  • 跳过差距分析 — Stage 4 必须以研究差距 + 研究定位收尾。
  • 跳过 Stage 0 — 未收集全部 5 项配置就开始写作,必然会导致不匹配。
  • 自动推进 — 每个 [USER_CHECKPOINT] 都有其用意。不要默默继续(除非在 Mode C 下获得用户明确同意)。
  • 平铺式按时间顺序罗列 — 违反规则 7。必须展现发展演变,而非仅作顺序排列。
  • 缺少批判性张力 — 违反规则 8。没有批判的综述只是书目,而非学术研究。
  • 不分输出类型硬套批判规则 — thesis 和 review article 的批判分布不同,生搬硬套会破坏行文流畅度。
  • 忽略环境差异 — Windows GBK 编码、加密 PDF、缺失依赖会导致 Stage 1 批量失败。必须先做环境预检。

可复用工具

extract_literature_metadata.py — 批量提取标题、作者、页数/词数、文本量、扫描页面检测结果、书目元数据(期刊/卷/期/DOI)、重复项检测结果及格式化引文。输出 JSON + Markdown + 可选的 BibTeX。

依赖项:PyPDF2 PyCryptodome pdfplumber python-docx ebooklib beautifulsoup4

实际效果

30 篇中英文混合参考文献(3 本超过 200 页的专著):

  • 全文:约 500 万以上字符
  • 定向阅读:约 3 万字符(节省 99.4%)
  • 输出:1,796 字符的引言 + 3,767 字符的综述,含 35 条引文、8 个聚类

评论

支持 Markdown