| name | deep-research |
| description | Comprehensive deep research that produces structured, multi-section reports with source citations. Only use when user explicitly requests deep/thorough research via '/deep-research' command or says '徹底調査', 'deep research', '調査レポート作成', '包括的なレポート'. Do NOT trigger for simple lookups like '調べて' or 'リサーチして' — use WebSearch or gemini-collab for those. |
| version | 2.1.0 |
Deep Research — 自律型深層調査
反復ループ(計画→並列検索→振り返り分析→改善→再検索)で体系的な調査レポートを自律生成する。
前提条件
- WebSearch / WebFetch ツールが利用可能であること
- 外部依存なし(tmux 不要、CLI 不要)
gemini-collab との使い分け
| 調査の規模 | 手段 |
|---|
| ピンポイント(「〜について調べて」) | WebSearch/WebFetch 直接 |
| 対話型調査(「Gemini と相談」) | gemini-collab |
体系的な深い調査(/deep-research) | このスキル |
出力ファイル
- Obsidian(デフォルト):
~/Library/Mobile Documents/iCloud~md~obsidian/Documents/Obsidian/note/YYYY-MM-DD-research-{slug}.md
- CWD:
./deep-research-{slug}-YYYYMMDD.md
slug はテーマから英語キーワードを抽出して短くしたもの。
ワークフロー
Phase 0: Configuration(ユーザー対話)
↓
Phase 1: Planning(メインエージェントが直接実行)
↓
Phase 2: Research Loop(反復)
├─ 2a. Search(Researcher サブエージェント × N 並列)
├─ 2b. Reflect(メインエージェントが分析)
└─ 2c. 収束判定 → 不十分なら 2a に戻る
↓
Phase 3: Synthesis(Writer サブエージェント × 1)
↓
Phase 4: Output(保存・要約表示)
Phase 0: Configuration
- テーマ確定: 引数があればテーマとして使用。なければ AskUserQuestion で確認
- 深さ決定: 以下から選択(デフォルト: standard)
| 深さ | queriesPerSection | maxIterations | 想定所要時間 |
|---|
| quick | 2 | 1 | 2-3分 |
| standard | 3 | 3 | 5-10分 |
| deep | 5 | 5 | 10-20分 |
- スコープ確認(任意): 調査対象の範囲と除外事項
進捗表示: 「テーマ: 〇〇 / 深さ: standard / スコープ: 〇〇」を表示
Phase 1: Planning(メインエージェント)
メインエージェントが直接実行する。サブエージェントは使わない。
- 予備調査: WebSearch でテーマの概観を 2-3 クエリで把握
- 情報プロファイル決定: テーマの性質に応じて、レポートが主に伝えるべき知識の種類を決める
| テーマの性質 | 主軸となる知識 | 補足にとどめる知識 |
|---|
| 技術ツール・プラットフォーム | architecture, comparison, fact, warning | procedure, example(必要最小限) |
| 市場動向・ビジネス | data, timeline, framework, fact | procedure は原則不要 |
| 新技術トレンド | timeline, comparison, data, architecture | example(代表的なもの1-2個のみ) |
| 戦略・方法論 | framework, comparison, warning, fact | checklist(実行時の参考として) |
| 制度・政策 | fact, timeline, data, taxonomy | procedure(申請手順等は補足) |
重要: deep-research の出力は調査レポートであり、チュートリアルやハウツーガイドではない。読者が状況を理解し判断できることが目的であり、手順を逐一案内することが目的ではない。
- セクション分割: テーマを 3-7 セクション(調査軸)に分解
- クエリ生成: 各セクションに
queriesPerSection 個の検索クエリを生成
- 日本語テーマでも英語クエリを 1 つ含める
- 同義語・別の切り口を含める
- クエリはセクションの調査軸に沿った分析的な問いを優先する(「〇〇の現状」「〇〇 vs △△」「〇〇の課題」など)
進捗表示: 情報プロファイル + セクション一覧と各クエリをユーザーに表示
例:
情報プロファイル: 技術ツール調査
→ 主軸: architecture, comparison, fact, warning
→ 補足: procedure, example
調査計画:
1. [基本概念と設計思想] クエリ: "〇〇 architecture", "〇〇 design principles"
2. [エコシステムと選択肢] クエリ: "〇〇 vs △△ comparison", "〇〇 alternatives 2026"
3. [課題と制約] クエリ: "〇〇 limitations", "〇〇 security concerns"
...
Phase 2: Research Loop
iteration = 1 から maxIterations まで繰り返す。
2a. Search(Researcher サブエージェント × N 並列)
各セクションに対して deep-research-searcher サブエージェントを 並列起動 する。
Agent tool 呼び出しパターン:
# 各セクションを並列で起動(1つの応答で複数の Agent tool を呼び出す)
Agent(
subagent_type: "deep-research-searcher",
description: "Research: セクション名",
prompt: "## 割り当て\n- セクション: {section_name}\n- クエリ: {queries}\n- イテレーション: {iteration}/{maxIterations}\n\n## 情報プロファイル\n- 主軸: {primary_types}\n- 補足: {supplementary_types}\n- レポートの目的: 調査レポート(チュートリアルではない)"
)
deep-research-searcher は agents/researcher.md で定義(tools: WebSearch, WebFetch のみ、model: sonnet)
- 依存関係のないセクションは全て並列起動する
- 各 Researcher は Knowledge Blocks を構造化して返す(11 種の typed blocks)
- 情報プロファイルを渡すことで、テーマに適した知識収集を誘導する
- 主軸の block types を優先的に収集し、補足の types は代表的なものだけに絞る
2b. Reflect(メインエージェント)
全 Researcher の結果を統合し、メインエージェントが直接分析する:
- カバレッジ評価: 各セクションが sufficient / insufficient かを判定
- 判定基準: Knowledge Blocks の数と、情報プロファイルの主軸 types が収集できているか
- 矛盾検出: セクション間で矛盾する情報がないか確認
- ギャップ分析: Researcher が報告した Gaps を統合
- プロファイル適合度チェック: 主軸 types が不足していれば追加クエリを提案。補足 types が過剰(セクションの半分以上を占める)なら分析的なクエリに修正
- 改善クエリ提案: insufficient なセクションに新しいクエリを提案
- カバレッジスコア算出: 0-100%(全セクションの充足度の加重平均)
進捗表示: 「イテレーション {N}/{max}: カバレッジ {score}%」 を表示
2c. 収束判定(メインエージェント)
以下のいずれかで収束:
coverage_score >= 80 かつ全セクション sufficient → 収束
maxIterations 到達 → 強制終了
- カバレッジ増分 < 5% が 2 回連続 → 早期終了
収束しない場合: insufficient なセクションのみ、改善クエリで 2a に戻る。
Phase 3: Synthesis(Writer サブエージェント)
deep-research-writer サブエージェントを起動する。
Agent tool 呼び出しパターン:
report_template = Read("skills/deep-research/references/report_template.md")
Agent(
subagent_type: "deep-research-writer",
description: "Write research report",
prompt: "## レポートテンプレート\n{report_template}\n\n## メタデータ\n- テーマ: {topic}\n- Date: {date}\n- Depth: {depth}\n- Iterations: {iterations}\n- Coverage: {coverage_score}%\n- Scope (In): {scope_in}\n- Scope (Out): {scope_out}\n\n## 全セクションの Knowledge Blocks\n{all_knowledge_blocks}\n\n## 分析結果\n{analysis}"
)
deep-research-writer は agents/writer.md で定義(tools: なし、model: sonnet)
- Writer は Knowledge Blocks の type に応じて適切な Markdown 形式(表・コードブロック・手順リスト等)でレポートを生成する
- Writer はレポートのマークダウンテキストを返す
Phase 4: Output
- 保存: Writer が返したレポートを Write ツールで保存
- Obsidian:
{vault}/note/YYYY-MM-DD-research-{slug}.md
- frontmatter:
date, tags: [research, deep-research]
- 要約表示: TL;DR セクションをユーザーに表示
- パス案内: 保存先のファイルパスを表示
エラーハンドリング
| エラー | 対応 |
|---|
| WebSearch 失敗 | 1回リトライ → 失敗なら該当クエリをスキップ |
| WebFetch 失敗 | スキップして次の結果へ |
| Researcher タイムアウト | 部分結果で続行、該当セクションを insufficient としてマーク |
| 全セクション insufficient | ユーザーにスコープ絞り込みを提案(AskUserQuestion) |
| coverage 収束せず | maxIterations で強制終了、現状スコアを明記してレポート生成 |
| Writer 失敗 | メインエージェントが直接レポートを生成(フォールバック) |