mcpField
S
Subagent-Driven Literature Review

Subagent-Driven Literature Review

github.com/kthorn生産性13161 回インストール53 週間前に更新
リポジトリ

Subagent-Driven Literature Review について

Subagent-Driven Literature Reviewは、大量の論文をサブエージェントで並行して選別・分析し、メインエージェントが結果を統合して確認するスキルです。独立した論文の多い調査や引用探索、詳細な情報抽出に適しています。

主な機能

  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を入力して読み込まれたか確認します。

詳細

サブエージェント主導の文献レビュー

概要

基本原則: バッチごとに新しいサブエージェントを使い、バッチ間で統合することで、品質管理を保ちながら並列スクリーニングを迅速に進めます。

大規模な文献レビュー(論文が50件以上)の場合、サブエージェントを並列または順次に実行すると、統合チェックポイントで品質を保ちながらスクリーニングを大幅に効率化できます。

使用する場面

次のような場合は、サブエージェント主導のアプローチを使用します。

  • 大規模な検索: スクリーニング対象の論文が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!

サブエージェント用プロンプトのテンプレート:

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

サブエージェント用プロンプトのテンプレート:

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. 引用ネットワークの調査

シナリオ: 関連性の高い論文が1件見つかり、その被引用文献と引用文献を調べる必要があります。

パターン:

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

サブエージェント用プロンプトのテンプレート:

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:計画と分割

メインエージェントのタスク:

  1. 検索結果から PMID リストを読み込む
  2. バッチサイズを決める(通常、サブエージェント1つあたり論文15~25件)
  3. バッチごとに TodoWrite を作成する
  4. サブエージェント用のプロンプトを準備する

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:サブエージェントを実行する

重要:複数の Task 呼び出しを含む単一のメッセージを使用して、すべてのサブエージェントを並列に実行します。

例:

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

[Uses Task tool 5 times in single message]

並列に実行する理由: 順次実行と比べて処理速度が5倍向上します。

ステップ 3:結果を収集する

メインエージェント:

  1. すべてのサブエージェントが完了するまで待つ
  2. それぞれから JSON の結果を収集する
  3. 形式と完全性を検証する

確認事項:

  • すべての PMID がスクリーニングされた
  • スコアリング基準が一貫して適用された
  • 論文の漏れがない
ステップ 4:統合する

メインエージェント:

  1. すべてのサブエージェントの結果を統合する
  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:品質を確認する

メインエージェントが確認する項目:

  • バッチ間でスコアリングに一貫性がある
  • あるバッチだけヒット率が極端に異ならない(問題の可能性があります)
  • 特に関連性の高い論文の選定に妥当性がある
  • 手動で再確認すべき論文がない

問題の兆候:

  • あるバッチでは関連性の高い論文が10件見つかり、ほかのバッチでは0~1件しか見つからない(スコアリングに一貫性がない可能性)
  • 「関連性が非常に高い」と評価された論文がキーワードに合致しない
  • 想定される論文が不足している

問題が見つかった場合: 問題のあるバッチを手動、または新しいサブエージェントで再スクリーニングします。

ステップ 6:要約を作成する

メインエージェント:

  1. 関連性が非常に高い論文と高い論文をすべて含む SUMMARY.md を作成する
  2. スコア順に並べ替える
  3. 統計情報を追加する
  4. 詳細な調査が必要な論文を記録する
ステップ 7:任意の詳細調査

関連性スコアが8以上の論文の場合:

方法 A:サブエージェントを順次実行する

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:サブエージェントをバッチごとに並列実行する

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:引用文献調査のサブエージェントを実行する

各シード論文について、2 つのサブエージェントを並行して実行します:

  1. 前方引用(この論文を引用したのは誰か?)
  2. 後方引用(この論文は何を引用したか?)

各サブエージェントには、以下をプロンプトで指定します:

  • シード PMID
  • 関連性の基準
  • スコアが 7 以上の論文のみを返す
ステップ 3:引用文献を統合する

メインエージェント:

  1. すべての引用結果を収集します
  2. 重複を削除します
  3. papers-reviewed.json にすでに含まれている論文を削除します
  4. 新しいスクリーニングキューを作成します
ステップ 4:新しい論文をスクリーニングする

オプション A: 引用結果を対象に、新たな一括スクリーニングのサブエージェントを実行します オプション B: メインエージェントが少数のバッチを手動でスクリーニングします

ステップ 5:繰り返す

引用文献の調査で関連性の高い論文が多数見つかった場合:

  • それらの論文の引用文献も調査することを検討します
  • 指数関数的に増加する点に注意してください!
  • 停止条件を設定します(例:深さは最大 3 レベル、論文数は合計最大 200 件)

他のスキルとの連携

連携するスキル:
  • evaluating-paper-relevance:サブエージェントは個々の論文のスクリーニングにこれを使用します
  • traversing-citations:サブエージェントは引用文献の調査にこれを使用します
  • finding-open-access-papers:サブエージェントは、有料公開の論文について Unpaywall を確認します
  • checking-chembl:サブエージェントは、該当する場合、キュレーション済みデータベースを確認できます
組み合わせるスキル:
  • writing-plans:サブエージェントを実行する前にスクリーニング計画を作成します
  • TodoWrite:バッチと統合の進捗を追跡します

統合パターン

パターン 1:JSON の集約

サブエージェントが構造化 JSON を返し、メインエージェントが統合します:

# 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:段階的な統合

各サブエージェントの完了後に統合します(順次実行):

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

利点: 進捗を段階的に確認できます 欠点: 完全な並列実行よりも時間がかかります

パターン 3:バッチ統合

N 個のサブエージェントを並行して実行し、バッチを統合してから繰り返します:

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

利点: 速度と、管理しやすい統合とのバランスが取れます 欠点: 完全な並列実行や順次実行よりも複雑です

よくある間違い

並行して実行しない: Task 呼び出しを順次送信すると時間を無駄にします → 複数の Task 呼び出しを 1 つのメッセージで使用します サブエージェントが追跡ファイルを更新する: 競合が発生します → サブエージェントは JSON のみを返し、メインエージェントがファイルを更新します スコアリングに一貫性がない: サブエージェントごとに異なる評価基準を使用します → プロンプトで明確な評価基準を指定します 品質レビューを行わない: サブエージェントの結果を無条件に信頼します → 統合した結果は必ず確認します 並行実行するサブエージェントが多すぎる: 一度に 20 件以上を実行します → 並行実行は最大 5~10 件にします レート制限を忘れる: サブエージェントが API 制限に達します → プロンプトにレート制限を含めます(単一エージェントでは 500 ms、5 つの並列エージェントでは 2.5 秒) ソースを追跡しない: どのバッチでどの論文が見つかったか分かりません → batch_id または source フィールドを追加します 作業の重複: 複数のサブエージェントが同じ論文をスクリーニングします → PMID リストが重複しないよう、慎重に分割します

コストに関する考慮事項

サブエージェントの使用にはコストが伴います:

サブエージェントごとのトークン使用量:

  • 20 件の論文のスクリーニング:約 10~15K トークン
  • 1 件の論文の詳細な調査:約 5~10K トークン
  • 引用文献の調査:約 8~12K トークン

トレードオフ:

  • 並列スクリーニング:コストは高くなりますが、大幅に速くなります(速度 5 倍)
  • 順次スクリーニング:コストは低くなりますが、時間がかかります
  • 時間が重要な研究では、この点を考慮してください

コスト削減の方法:

  • 大規模なバッチ(50 件以上)にのみサブエージェントを使用します
  • 小規模な検索(20 件未満)は手動でスクリーニングします
  • 初期スクリーニングには並列実行を使用します(速度が重要です)
  • 詳細な調査には順次実行を使用します(段階的に確認できます)

例

例 1:80 件の論文を並行してスクリーニングする

初期状態: PubMed 検索から 80 件の PMID を取得済み

メインエージェント:

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...

サブエージェントの完了後:

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 件取得済み

メインエージェント:

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]
...

結果: 逐次処理では 1~2 時間かかるところ、約 10~15 分ですべての 12 件の論文を分析し、構造化データを取得できます

例 3:引用文献の探索

初期状態: 重要な論文 PMID 12345 が見つかりました

メインエージェント:

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...

クイックリファレンス

タスクサブエージェントのパターン並列処理?統合方法
100 件の論文をスクリーニングする20 件ずつの 5 バッチはい(5 並列)JSON を統合し、papers-reviewed.json を更新する
15 件の論文を詳しく調査する論文ごとに個別タスクを 1 件はい(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 件)
  • 収穫逓減(レベルごとに関連する論文が減少する)
  • 時間/コストの予算

サブエージェントによるレビュー後の次のステップ

  1. 統合結果をレビューして、品質と一貫性を確認する
  2. 不足を特定する - 想定していた論文で見つかっていないものはありますか?
  3. 関連性の高い論文を詳しく調査する(未実施の場合)
  4. 統計と主な調査結果を含む最終サマリーを作成する
  5. 次のアクションを計画する - 引用文献の探索?特定のデータ抽出?

関連項目

  • evaluating-paper-relevance:中核となるスクリーニング手法
  • traversing-citations:引用文献を探索する手法
  • finding-open-access-papers:有料論文向けの Unpaywall 連携

コメント