Google Deep Research のような深いリサーチを AI に任せたいとき、通常は専用サービスか外部 API が必要です。コミュニティスキル deep-dive は、Claude Code のサブエージェント機能だけでこれを実装します。
アーキテクチャの概要
問いを小さな問いの有向非巡回グラフ(DAG)に分解し、依存関係のない問いを並列で調査し、ギャップを埋めてから統合する、という 4 ステップです。
問いの入力
↓
DAG 分解(4〜8 ノード)
↓
Wave 1:依存なしノードを並列サブエージェントで調査
↓
Wave 2+:依存が解消されたノードを順次実行
↓
ギャップ分析(1 ラウンドのみ)
↓
統合レポートを docs/deep-dive/ に保存
DAG 分解:なぜ直列でなく有向グラフか
単純に「まず A を調べ、次に B を調べる」と直列にすると、独立した問いを待つ無駄が生まれます。DAG にすることで「依存関係のある問いはその前提が揃ってから処理し、独立した問いは同時に走らせる」を実現します。
各ノードはこの形で定義されます。
id: q3
question: 競合他社はどのような価格体系を採用しているか
depends_on: [q1, q2]
depends_on が空のノードが Wave 1 として一斉に走ります。Wave 1 の結果が揃ったあと、依存が解消されたノードが Wave 2 として走ります。
ノードは 4〜8 個が目安です。12 が上限で、それ以上は深みより発散になります。
サブエージェントに渡すプロンプトの設計
各サブエージェントには 1 つの問いだけを渡します。返答は決まったフォーマットです。
## Findings
[具体的な事実、日付、数値。出典をインラインで引用]
## Gaps
[答えられなかったこと、矛盾、補強に必要な追加調査]
## Sources
[Title — URL 形式のリスト]
Wave 2 以降では、依存ノードの Findings をコンテキストとして含めて渡します。「前提調査の結果を踏まえた上で、この問いに答えよ」という形になります。
引用の永続化:コンテキスト圧縮への対策
深いリサーチはセッションが長くなり、コンテキスト圧縮が発生します。サブエージェントの出力が要約で押しつぶされると、出典リストが失われる問題があります。
deep-dive はこれを /tmp/deep-dive-sources-<topic-slug>.json に逐次書き出すことで対策します。
[
{"node_id": "q1", "title": "記事タイトル", "url": "https://..."},
{"node_id": "q2", "title": "記事タイトル", "url": "https://..."}
]
ファイルはセッション中ずっと残るため、圧縮後も統合フェーズで読み直せます。
ギャップ分析は 1 ラウンドのみ
全ノード完了後、各サブエージェントが返した Gaps を横断してレビューします。軽微なギャップはスキップ、重大なギャップは追加サブエージェント(最大 3 問)を走らせます。
ただし繰り返しは 1 ラウンドで打ち切ります。「ギャップが見つかったのでさらに調査、そこでもギャップが……」という無限ループを防ぐ設計です。
Task ツールによる進捗の可視化
各 DAG ノードに対して TaskCreate を使い、pending → in_progress → completed とステータスを更新します。これによりメインの会話からリサーチ状況をリアルタイムで把握できます。
| ID | Question | Status |
|----|-------------------|-----------|
| q1 | 市場規模は? | completed |
| q2 | 競合の動向は? | in_progress |
| q3 | 規制リスクは? | pending |
統合レポートの構造
すべてのノードが完了したら、バラバラな Findings を 1 つのドキュメントに統合します。単なる連結ではなく、テーマ別に再構成します。
## Deep Dive: [トピック]
### Executive Summary
(3〜5 文で核心を伝える)
### Findings
#### [テーマ 1]
#### [テーマ 2]
### Open Questions
(解消できなかった不確実性を正直に書く)
### Sources
(全ノードの出典を重複排除してリスト)
レポートは /tmp ではなく docs/deep-dive/<date>-<topic>.md に保存されます。セッション終了後も読めるようにするためです。
通常のリサーチと何が違うか
「複数のことを順番に調べて」と Claude に頼む場合との違いは 2 点です。まず、並列実行によるスピード。依存のない問いを同時に処理するため、直列の数倍速くなります。次に、ギャップ駆動の反復。「何が分からないか」を明示的に追跡し、1 ラウンドだけ穴埋めをします。場当たり的な追加調査より網羅性が高まります。
外部 API 不要で Claude Code さえあれば動く、という点もポイントです。
まとめ
- deep-dive は問いを DAG に分解し、並列サブエージェントで調査する Google Deep Research 相当のスキル
- 依存関係のないノードは Wave として同時実行。依存が解消されたノードを順次処理する
- 出典は JSON ファイルに逐次書き出してコンテキスト圧縮に備える
- ギャップ分析は 1 ラウンドのみ。無限ループを設計で防ぐ
- Task ツールで進捗を可視化。レポートは
docs/deep-dive/に永続保存