mcpField
S
Subagent-Driven Literature Review

Subagent-Driven Literature Review

github.com/kthorn生产力13161 次安装53 周前更新
代码仓库

关于 Subagent-Driven Literature Review

Subagent-Driven Literature Review 是一项面向大型文献集的技能,通过并行子 Agent 筛选和分析论文,再由主 Agent 汇总并检查结果。适用于包含大量独立论文、引文探索或深入信息提取的研究流程。

主要功能

  1. 01分批并行筛选论文
  2. 02深入提取重点论文信息
  3. 03探索前向与后向引文
  4. 04汇总结果并检查质量
  5. 05生成结构化 JSON 结果

适用场景

  1. 01筛选搜索所得的数十篇论文
  2. 02提取重点论文的方法与发现
  3. 03探索相关研究的引文网络

安装

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

$npx skills add https://github.com/kthorn/research-superpower --skill subagent-driven-literature-review

安装后在 Claude Code 中输入/subagent-driven-literature-review确认已加载。

详细介绍

子 Agent 驱动的文献综述

概述

核心原则: 每批使用一个全新的子 Agent + 在批次之间进行汇总 = 快速并行筛选,同时做好质量控制

对于大型文献综述(50 篇以上论文),派遣并行或顺序执行的子 Agent 可以大幅加快筛选速度,并通过汇总检查点确保质量。

适用场景

在以下情况下使用子 Agent 驱动的方法:

  • 大型检索: 需要筛选 50 篇以上论文
  • 可并行化的工作: 论文彼此独立,可以分别筛选
  • 深入分析任务: 需要对多篇论文进行详细信息提取(数据表、方法、数据集)
  • 引文探索: 递归追踪引文网络
  • 上下文管理: 主上下文即将满载,需要全新上下文
  • 时间紧迫: 需要比顺序筛选更快地获得结果

请勿在以下情况下使用:

  • 小规模检索(少于 20 篇论文)——开销不值得
  • 需要用户实时查看每篇论文的处理情况
  • 筛选过程中需要交叉比较论文
  • 简单、快速的筛选任务

使用场景

1. 并行筛选论文(最常见)

场景: 你从 PubMed 检索中获得了 100 篇论文,需要筛选其相关性

模式:

Main agent:
1. Splits 100 papers into 5 batches of 20
2. Dispatches 5 subagents IN PARALLEL (single message, multiple Task calls)
3. Each subagent:
   - Fetches abstracts for its batch
   - Scores using rubric
   - Returns JSON with results
4. Main agent consolidates results into papers-reviewed.json

Time savings: 5x faster than sequential!

子 Agent 提示词模板:

I need you to screen papers 1-20 from this PMID list for relevance to [QUERY].

PMIDs to screen: [PMID list]

Use the evaluating-paper-relevance skill to:
1. Fetch abstract for each PMID
2. Score 0-10 based on:
   - Keywords: [list]
   - Data types needed: [measurements, protocols, datasets, etc.]
3. Return JSON:

{
  "screened_papers": [
    {"pmid": "12345", "score": 8, "status": "relevant", "reason": "..."},
    ...
  ],
  "stats": {"highly_relevant": 3, "relevant": 5, "not_relevant": 12}
}

Do NOT update papers-reviewed.json - return results only.

**Rate limiting (CRITICAL - PubMed limits are SHARED across all parallel subagents):**
- If you are the ONLY subagent running: Use 500ms delays (2 req/sec, safe)
- If running with OTHER parallel subagents: Use longer delays to share capacity
  - You are 1 of 2 parallel: Use 1 second delays
  - You are 1 of 3 parallel: Use 1.5 second delays
  - You are 1 of 5 parallel: Use 2.5 second delays
- If you get HTTP 429 errors: Wait 5 seconds, then use 5-second delays for remaining requests
2. 深入分析优先论文

场景: 初步筛选发现 15 篇高度相关的论文,需要从每篇中提取详细数据

模式:

Main agent:
1. Creates TodoWrite with 15 tasks (one per paper)
2. For each paper, dispatches subagent to:
   - Fetch full text (PMC, Unpaywall)
   - Extract relevant data (tables, figures, methods)
   - Identify key findings
   - Return structured findings
3. Main agent consolidates into SUMMARY.md
4. Reviews and adds to papers-reviewed.json

Can dispatch in parallel (5 at a time) or sequentially

子 Agent 提示词模板:

Deep dive analysis for paper PMID [12345] / DOI [10.xxxx/yyyy]

Use evaluating-paper-relevance skill to:
1. Check for curated data sources (if applicable to domain)
2. Fetch full text (try PMC, then Unpaywall if paywalled)
3. Extract relevant data based on research domain:
   - Data tables and measurements
   - Methods and protocols
   - Key results and findings
   - Figures with relevant information
4. Return structured JSON:

{
  "pmid": "12345",
  "doi": "10.xxxx/yyyy",
  "full_text_source": "PMC" or "Unpaywall" or "paywalled",
  "data_sources": ["Table 1", "Figure 3", "Supplementary Data"],
  "key_measurements": ["specific values or ranges found"],
  "methods_summary": "Brief description of methods",
  "key_findings": ["Finding 1", "Finding 2", ...],
  "data_availability": "GEO: GSE12345" or "Code: github.com/..." or null
}

Do NOT update papers-reviewed.json - return findings only.
3. 引文网络探索

场景: 找到一篇高度相关的论文,需要探索其前向和后向引文

模式:

Main agent:
1. Dispatches two subagents IN PARALLEL:
   - Subagent A: Fetch and screen forward citations
   - Subagent B: Fetch and screen backward citations
2. Each returns list of promising PMIDs with scores
3. Main agent:
   - Consolidates results
   - Removes duplicates
   - Adds to screening queue
   - Updates papers-reviewed.json

子 Agent 提示词模板:

Find and screen forward citations for PMID [12345].

Use traversing-citations skill to:
1. Fetch forward citations from PubMed or OpenCitations
2. Screen abstracts for relevance to [QUERY]
3. Score each citation (0-10)
4. Return JSON with promising papers (score ≥7):

{
  "seed_pmid": "12345",
  "direction": "forward",
  "citations_found": 45,
  "relevant_citations": [
    {"pmid": "67890", "score": 8, "title": "...", "reason": "..."},
    ...
  ]
}

Do NOT update papers-reviewed.json - return results only.
4. 特定领域的信息提取

按领域划分的示例:

基因组学:

Subagent extracts:
- GEO/SRA/ENA accessions
- Sample sizes and conditions
- Sequencing methods (RNA-seq, WGS, etc.)
- Analysis pipelines
- Differential expression results

计算方法:

Subagent extracts:
- Algorithm descriptions
- Code repositories (GitHub, GitLab, etc.)
- Benchmark datasets used
- Performance metrics
- Implementation details

临床研究:

Subagent extracts:
- Study design (RCT, cohort, etc.)
- Sample size and demographics
- Intervention details
- Primary outcomes
- Statistical methods

生态学/环境科学:

Subagent extracts:
- Study sites and coordinates
- Sampling methods
- Species/taxa studied
- Environmental measurements
- Data repositories

工作流:并行筛选

步骤 1:规划并拆分

主 Agent 任务:

  1. 从检索结果中载入 PMID 列表
  2. 确定批次大小(通常每个子 Agent 处理 15–25 篇论文)
  3. 使用 TodoWrite 创建批次
  4. 准备子 Agent 提示词

TodoWrite 示例:

- Screen papers batch 1 (PMIDs 1-20)
- Screen papers batch 2 (PMIDs 21-40)
- Screen papers batch 3 (PMIDs 41-60)
- Screen papers batch 4 (PMIDs 61-80)
- Screen papers batch 5 (PMIDs 81-100)
- Consolidate all subagent results
- Generate SUMMARY.md from consolidated data
步骤 2:派遣子 Agent

重要:使用包含多个 Task 调用的单条消息并行派遣所有子 Agent

示例:

I'm dispatching 5 subagents in parallel to screen 100 papers.

[Uses Task tool 5 times in single message]

并行的优势: 相较顺序处理,速度提升 5 倍!

步骤 3:收集结果

主 Agent:

  1. 等待所有子 Agent 完成
  2. 收集各自的 JSON 结果
  3. 验证格式和完整性

检查以下内容:

  • 所有 PMID 均已筛选
  • 评分标准得到一致应用
  • 没有遗漏论文
步骤 4:汇总

主 Agent:

  1. 合并所有子 Agent 的结果
  2. 删除重复项(如果批次之间有重叠)
  3. 按相关性评分排序
  4. 将所有论文添加到 papers-reviewed.json:
{
  "10.1234/example.2023": {
    "pmid": "12345",
    "status": "highly_relevant",
    "score": 9,
    "source": "pubmed_search_batch1",
    "screened_by": "subagent",
    "timestamp": "2025-10-11T14:30:00Z",
    "found_data": ["measurements", "methods", "datasets"]
  }
}

将来源标记为 "subagent"、"pubmed_search_batch1" 等。

步骤 5:检查质量

主 Agent 检查:

  • 各批次的评分是否一致
  • 是否有批次的命中率明显不同(可能表明存在问题)
  • 高度相关的论文是否合理
  • 是否有论文需要人工重新审核?

警示信号:

  • 一个批次发现 10 篇相关论文,其他批次却只发现 0–1 篇(评分是否不一致?)
  • 标记为“高度相关”的论文与关键词不匹配
  • 缺少预期中的论文

如果发现问题: 手动或使用全新的子 Agent 重新筛选有问题的批次

步骤 6:生成摘要

主 Agent:

  1. 创建 SUMMARY.md,列出所有高度相关和相关的论文
  2. 按评分排序
  3. 添加统计信息
  4. 标注需要深入分析的论文
步骤 7:可选的深入分析

针对高度相关的论文(评分 ≥8):

方案 A:按顺序派遣子 Agent

For each highly relevant paper:
  - Dispatch one subagent per paper
  - Subagent does deep dive extraction
  - Main agent consolidates findings immediately
  - Updates SUMMARY.md progressively

方案 B:分批并行派遣子 Agent

Batch 1: Papers 1-5 (dispatch 5 subagents in parallel)
Wait for completion, consolidate
Batch 2: Papers 6-10 (dispatch 5 subagents in parallel)
Wait for completion, consolidate
...

工作流:引文探索

步骤 1:确定种子论文

从初步筛选中找出 2–3 篇高度相关的论文

步骤 2:分派引文子 Agent

针对每篇种子论文,并行分派两个子 Agent:

  1. 前向引文(哪些论文引用了这篇论文?)
  2. 后向引文(这篇论文引用了哪些论文?)

为每个子 Agent 提供以下提示:

  • 种子 PMID
  • 相关性标准
  • 仅返回评分 ≥7 的论文
步骤 3:汇总引文

主 Agent:

  1. 收集所有引文结果
  2. 去除重复项
  3. 移除已在 papers-reviewed.json 中的论文
  4. 创建新的筛选队列
步骤 4:筛选新论文

选项 A: 为引文结果分派新一批筛选子 Agent 选项 B: 主 Agent 手动筛选较小批次

步骤 5:迭代

如果引文探索发现了许多新的相关论文:

  • 考虑继续探索这些论文的引文
  • 注意避免指数级增长!
  • 设置停止标准(例如,最多深入 3 层,总论文数最多 200 篇)

与其他技能集成

适用于:
  • evaluating-paper-relevance:子 Agent 使用此技能筛选单篇论文
  • traversing-citations:子 Agent 使用此技能探索引文
  • finding-open-access-papers:子 Agent 使用 Unpaywall 检查付费墙后的论文
  • checking-chembl:子 Agent 可检查精选数据库(如适用)
可结合:
  • writing-plans:在分派子 Agent 前创建筛选计划
  • TodoWrite:跟踪批次和汇总进度

汇总模式

模式 1:JSON 聚合

子 Agent 返回结构化 JSON,由主 Agent 合并:

# Pseudo-code for consolidation
all_results = []
for subagent_output in subagent_results:
    results = parse_json(subagent_output)
    all_results.extend(results['screened_papers'])

# Sort by score
all_results.sort(key=lambda x: x['score'], reverse=True)

# Update papers-reviewed.json
for paper in all_results:
    papers_reviewed[paper['doi']] = {
        'pmid': paper['pmid'],
        'status': paper['status'],
        'score': paper['score'],
        'source': f"subagent_batch_{paper['batch_id']}",
        'timestamp': now()
    }
模式 2:渐进式汇总

每个子 Agent 完成后进行汇总(顺序分派):

Dispatch subagent 1 → wait → consolidate → dispatch subagent 2 → wait → consolidate → ...

优点: 可逐步查看进度 缺点: 比完全并行更慢

模式 3:批次汇总

并行分派 N 个子 Agent,汇总该批次后重复:

Dispatch 5 subagents → wait for all 5 → consolidate → dispatch next 5 → ...

优点: 兼顾速度与易于管理的汇总 缺点: 比完全并行或顺序处理更复杂

常见错误

未并行分派: 顺序发送 Task 调用会浪费时间 → 在单条消息中使用多个 Task 调用 子 Agent 更新跟踪文件: 会造成冲突 → 子 Agent 仅返回 JSON,由主 Agent 更新文件 评分标准不一致: 不同子 Agent 使用不同的评分标准 → 在提示中提供明确的评分标准 没有质量审查: 盲目信任子 Agent 的结果 → 始终审查汇总结果 并行子 Agent 过多: 一次分派 20 个以上 → 并行数量最多控制在 5–10 个 忘记速率限制: 子 Agent 触及 API 限制 → 在提示中加入速率限制(单个 Agent 间隔 500ms,5 个并行 Agent 间隔 2.5 秒) 未跟踪来源: 无法判断哪些论文由哪个批次找到 → 添加 batch_id 或 source 字段 重复工作: 多个子 Agent 筛选相同论文 → 仔细拆分 PMID 列表,避免重叠

成本考量

使用子 Agent 会产生费用:

每个子 Agent 的令牌用量:

  • 筛选 20 篇论文:每个子 Agent 约 10–15K 个令牌
  • 深入分析 1 篇论文:每个子 Agent 约 5–10K 个令牌
  • 引文探索:每个子 Agent 约 8–12K 个令牌

权衡:

  • 并行筛选:成本较高,但速度快得多(快 5 倍)
  • 顺序筛选:成本较低,但速度较慢
  • 可用于时间紧迫的研究

节省成本的策略:

  • 仅对大型批次使用子 Agent(50 篇以上)
  • 小规模搜索时(少于 20 篇)手动筛选
  • 初筛时并行分派(速度很重要)
  • 深入分析时顺序分派(可逐步审查)

示例

示例 1:并行筛选 80 篇论文

初始状态: 已有从 PubMed 搜索中获得的 80 个 PMID

主 Agent:

I'll dispatch 4 subagents in parallel to screen these 80 papers.

Batch 1: PMIDs 1-20 [dispatches subagent with prompt]
Batch 2: PMIDs 21-40 [dispatches subagent with prompt]
Batch 3: PMIDs 41-60 [dispatches subagent with prompt]
Batch 4: PMIDs 61-80 [dispatches subagent with prompt]

[Uses Task tool 4 times in single message]

Now waiting for all subagents to complete...

子 Agent 完成后:

All 4 subagents have completed. Consolidating results:

Batch 1: 3 highly relevant, 5 relevant, 12 not relevant
Batch 2: 2 highly relevant, 7 relevant, 11 not relevant
Batch 3: 4 highly relevant, 6 relevant, 10 not relevant
Batch 4: 1 highly relevant, 4 relevant, 15 not relevant

Total: 10 highly relevant, 22 relevant, 48 not relevant

Updating papers-reviewed.json with all 80 papers...
Generating SUMMARY.md with 32 relevant papers...

Next: Deep dive on 10 highly relevant papers?
示例 2:深入分析 12 篇论文

初始状态: 有 12 篇高度相关、需要提取数据的论文

主 Agent:

I'll dispatch 12 subagents (in 3 batches of 4) to do deep dive analysis.

Batch 1 papers: PMID 12345, 23456, 34567, 45678
[Dispatches 4 subagents in parallel with deep dive prompts]

Waiting for batch 1 to complete...
[Consolidates batch 1 results into SUMMARY.md]

Batch 2 papers: PMID 56789, 67890, 78901, 89012
[Dispatches 4 subagents in parallel]
...

结果: 约 10–15 分钟内完成对全部 12 篇论文的分析并整理出结构化数据;顺序处理则需 1–2 小时

示例 3:引文探索

初始状态: 找到关键论文 PMID 12345

主 Agent:

I'll explore citations from this key paper.

Dispatching 2 subagents in parallel:
1. Forward citations (who cited PMID 12345?)
2. Backward citations (what did PMID 12345 cite?)

[Uses Task tool twice in single message]

Waiting for citation exploration...

Forward citations: Found 34 citations, 8 appear relevant
Backward citations: Found 42 references, 6 appear relevant

New papers to screen: 14 (after removing duplicates)

Now dispatching screening subagent for these 14 papers...

快速参考

任务子 Agent 模式并行?汇总方式
筛选 100 篇论文分为 5 批,每批 20 篇是(5 个并行任务)合并 JSON,更新 papers-reviewed.json
深入研究 15 篇论文15 个独立任务是(每批 5 个)逐步将发现添加到 SUMMARY.md
引文探索2–3 个引文任务是合并、去重,添加到筛选队列
数据提取每篇论文 1 个任务顺序执行或分批执行根据发现更新 papers-reviewed.json

决策树

Have literature review task?
├─ <20 papers?
│  └─ Screen manually (no subagents)
├─ 20-50 papers?
│  ├─ Time-sensitive? → Use subagents (2-3 batches)
│  └─ Not urgent? → Screen manually
└─ 50+ papers?
   ├─ Initial screening → Use parallel subagents (5-10 batches)
   ├─ Deep dive needed? → Use sequential or batched subagents
   └─ Citation exploration? → Use parallel subagents per seed paper

高级:递归引文探索

用于全面分析引文网络:

Level 0: Seed paper (PMID 12345)
├─ Level 1: Forward + backward citations (dispatch 2 subagents)
│  ├─ Find 12 relevant papers
│  └─ Add to papers-reviewed.json
├─ Level 2: For each of 12 papers, explore citations (dispatch 24 subagents)
│  ├─ Find 43 new relevant papers
│  └─ Add to papers-reviewed.json
└─ Level 3: For top 10 papers from Level 2, explore citations
   ├─ Find 28 new relevant papers
   └─ STOP (reaching diminishing returns)

Total: 83 papers discovered through citation network

停止条件:

  • 最大深度(例如,3 层)
  • 论文总数上限(例如,200 篇)
  • 边际收益递减(每一层相关论文越来越少)
  • 时间/成本预算

子 Agent 审查后的后续步骤

  1. 审查汇总结果,确保质量和一致性
  2. 找出缺口——是否遗漏了预期论文?
  3. 深入研究高度相关的论文(如果尚未完成)
  4. 生成最终总结,包含统计数据和主要发现
  5. 规划后续操作——引文探索?提取特定数据?

另请参阅

  • evaluating-paper-relevance:核心筛选方法
  • traversing-citations:引文探索技巧
  • finding-open-access-papers:为付费墙限制的论文集成 Unpaywall

评论

支持 Markdown