207 lines
13 KiB
YAML
207 lines
13 KiB
YAML
name: research
|
||
description: |
|
||
Web検索やファイル読み込みによる情報収集と、収集情報の分析・レポート作成。
|
||
複数ソースからの調査、比較分析、トレンド調査、文献サーベイに適する。
|
||
選ぶべき場合: タスクの主目的が「調べること」「情報を集めて整理すること」
|
||
選ぶべきでない場合: 既にデータがあり加工するだけ、Officeファイルの操作が主目的
|
||
triggers:
|
||
keywords: ["調べて", "調査", "リサーチ", "分析して", "比較して", "まとめて", "レポート"]
|
||
max_movements: 999
|
||
initial_movement: dig
|
||
|
||
movements:
|
||
- name: decompose
|
||
edit: false
|
||
persona: orchestrator
|
||
instruction: |
|
||
入力把握で決めた並列調査計画に従い、各テーマをサブタスクとして登録する。
|
||
|
||
手順:
|
||
1. 入力把握で立てた調査テーマを思い出す(ファイル読み込みは不要)
|
||
2. 各テーマに対して SpawnSubTask を呼び出す(2〜5 個程度、piece は "research-sub")
|
||
3. 全サブタスクの登録が完了したら WAIT_SUBTASKS に遷移する
|
||
|
||
instruction には「何を調べて output/result.md にどう書くか」を具体的に記述する
|
||
(概要・主要な特徴・数値や事例・まとめと考察 など、構成を明示)。
|
||
allowed_tools: [SpawnSubTask]
|
||
default_next: aggregate
|
||
rules:
|
||
- condition: 全サブタスクを SpawnSubTask で登録し終えた
|
||
next: WAIT_SUBTASKS
|
||
- condition: 全てのサブタスクを登録し終えた(SpawnSubTask不可の場合は自分で調査を完了した)
|
||
next: aggregate
|
||
|
||
- name: aggregate
|
||
edit: true
|
||
persona: analyst
|
||
instruction: |
|
||
各サブタスクの調査結果が subtasks/ ディレクトリに格納されている。
|
||
|
||
手順:
|
||
1. Glob で subtasks/*/result.md と subtasks/*/output/ を確認する
|
||
2. 各 result.md と追加成果物を Read で読み込む
|
||
3. 全結果を統合して output/report.md に最終レポートを作成する
|
||
- 各テーマの主要な知見を統合(矛盾・重複は整理)
|
||
- 比較・対照が必要なら表形式で整理
|
||
- 全体のまとめと考察を付ける
|
||
4. output/report.md を書き終えたら verify へ遷移する
|
||
allowed_tools: [Read, Glob, Grep, Write, Edit, SearchNotes, ReadNote, WriteNote, 'mcp__*']
|
||
default_next: verify
|
||
rules:
|
||
- condition: output/report.md に統合レポートを作成した
|
||
next: verify
|
||
|
||
- name: dig
|
||
edit: true
|
||
persona: researcher
|
||
instruction: |
|
||
## 最初のステップ: 入力把握と調査計画
|
||
|
||
情報収集に着手する前に、調査対象と目的を整理する:
|
||
1. Glob でワークスペース全体のファイル一覧を確認する(input/ だけでなくルート直下も含む)
|
||
2. 指示で言及されているファイルがあれば適切なツールで内容を把握する(カタログ参照、詳細は ReadToolDoc)
|
||
3. 調査対象と目的を整理し、どこから情報を集めるか、何を分析するかを明確にする
|
||
4. 「今日のニュース」「最新動向」「直近」など時刻依存の調査依頼では、必ず最初のアクションを WebSearch にする
|
||
|
||
## 並列分解の判断
|
||
|
||
decompose を積極的に検討するケース:
|
||
- 複数の独立した調査対象がある(例: 3社の比較、複数技術の比較)
|
||
- 各調査が互いに依存せず、結果を最後に統合すればよい
|
||
- 全体を 1 回の dig → analyze で処理すると context が溢れるリスクがある
|
||
|
||
decompose を使わないケース:
|
||
- 単一テーマの調査
|
||
- 各ステップが前のステップの結果に依存する逐次的な調査
|
||
|
||
## 計画に従って情報を収集する
|
||
|
||
WebSearch、WebFetch、ファイル読み込み等で情報を集め、必ず Write で output/ にファイルとして書き出すこと。
|
||
テキストで回答するだけでは不十分。
|
||
|
||
## 検索の原則(必須)
|
||
|
||
- モデルの内部知識だけで情報を書かないこと。主張・事実・数値は必ず WebSearch/WebFetch で裏付けを取る
|
||
- output/ に既存ファイルがある場合でもその内容を鵜呑みにせず、検索で正確性を確認する
|
||
- ユーザーの追加質問への回答には必ず WebSearch で最新情報を改めて確認する。前回の調査結果に依存して検索を省略しない
|
||
|
||
## 一次情報へのアクセスと捏造禁止(厳守)
|
||
|
||
- YouTube 動画の内容を調査する場合は、必ず GetYouTubeTranscript で字幕を取得してから作業する
|
||
- 一次情報(動画字幕、論文本文、ページ本文等)に直接アクセスできなかった場合:
|
||
- Web 検索の断片的な情報から内容を推測・捏造してはならない
|
||
- アクセスできなかった旨を明記し、取得できた範囲の情報のみで成果物を作成する
|
||
- 推測部分は「推測」と明示する
|
||
- 二次情報(ブログ記事、要約サイト等)から得た情報は、一次情報ではないことを明記する
|
||
|
||
## 画像・ビジュアル素材の収集(必須)
|
||
|
||
調査中は画像・グラフ・図表を積極的に収集し、output/images/ に保存すること。
|
||
テキストだけの調査で終わらせない。ビジュアル素材がレポートの品質を大きく左右する。
|
||
|
||
収集すべきもの:
|
||
- 記事・ページ内のグラフ・チャート・比較表の画像
|
||
- 製品・サービスのスクリーンショットや公式画像
|
||
- データの可視化(統計グラフ、トレンド図等)
|
||
- 関連する図解・インフォグラフィック
|
||
|
||
収集した画像はレポートの Markdown から相対パスで参照する: ``
|
||
|
||
## 終了 / 遷移方法
|
||
- **次の analyze へ**: `transition({next_step: "analyze"})`
|
||
- **並列分解 → decompose へ**: `transition({next_step: "decompose"})`
|
||
- **追加調査のため同じ dig を続行**: `transition({next_step: "dig"})`
|
||
- **対象が曖昧で確認が必要**: `complete({status: "needs_user_input", missing_info: "...", why_no_default: "..."})`
|
||
- **技術的失敗で打ち切り**: `complete({status: "aborted", abort_reason: "..."})`
|
||
allowed_tools: [Read, Write, Bash, Glob, Grep, WebSearch, WebFetch, BrowseWeb, DownloadFile, ReadImage, AnnotateImage, ReadPdf, PdfToImages, BatchReviewTextWithLLM, MergeReviewedResults, SearchPlaces, GetDirections, ReverseGeocode, GetYouTubeTranscript, SearchYouTube, SearchAmazon, TranscribeAudio, SearchKnowledge, ListNamespaces, ListDocuments, XSearch, XUserPosts, XPostDetail, XTimeline, XFetchCardMedia, SearchNotes, ReadNote, WriteNote, SearchMicrosoftLearn, FetchMicrosoftLearn, SearchMicrosoftLearnCache, RefreshMicrosoftLearnCache, 'mcp__*']
|
||
default_next: analyze
|
||
rules:
|
||
- condition: 2つ以上の独立した調査テーマがあり、並列分解が効率的と判断した
|
||
next: decompose
|
||
- condition: output/ に情報を書き出した
|
||
next: analyze
|
||
- condition: 追加調査が必要
|
||
next: dig
|
||
|
||
- name: analyze
|
||
edit: true
|
||
persona: analyst
|
||
instruction: |
|
||
収集した情報を分析し、調査レポートを output/ に作成する。
|
||
重要なポイント、トレンド、結論をまとめる。
|
||
必ず Write ツールで output/ にレポートファイルを書き出すこと。
|
||
前のステップから指摘事項がある場合は、それに対応すること。
|
||
|
||
## 検索の原則(必須)
|
||
|
||
- レポートに記載する事実・数値・主張は、dig で収集した検索結果に基づくこと
|
||
- 情報が不足している場合は、ここでも追加の WebSearch/WebFetch を行い裏付けを取る。モデルの内部知識だけで補完しない
|
||
- ユーザーの追加質問への回答には必ず WebSearch で最新情報を改めて確認する。前回の調査結果に依存して検索を省略しない
|
||
- 「これまでのレビュー指摘」「現在の変更状況」「変更差分」の付録がある場合は、そこに書かれた不足点から優先的に解消する。指摘事項は「問題点」「期待する修正」「合格基準」まで含めて渡されるので、各項目を漏れなく解消すること
|
||
|
||
## 画像の活用(必須)
|
||
|
||
output/images/ に画像が保存されている場合は、必ずレポートの該当箇所に埋め込む:
|
||
``
|
||
画像があるのにテキストだけのレポートにしないこと。
|
||
レポート作成中に追加で必要な図・グラフを見つけた場合も DownloadFile で収集して埋め込む。
|
||
|
||
allowed_tools: [Read, Write, Bash, Glob, Grep, WebSearch, WebFetch, BrowseWeb, DownloadFile, ReadImage, AnnotateImage, ReadPdf, PdfToImages, BatchReviewTextWithLLM, MergeReviewedResults, SearchPlaces, GetDirections, ReverseGeocode, GetYouTubeTranscript, SearchYouTube, SearchAmazon, TranscribeAudio, SearchKnowledge, ListNamespaces, ListDocuments, XSearch, XUserPosts, XPostDetail, XTimeline, XFetchCardMedia, SearchNotes, ReadNote, WriteNote, SearchMicrosoftLearn, FetchMicrosoftLearn, SearchMicrosoftLearnCache, RefreshMicrosoftLearnCache, 'mcp__*']
|
||
default_next: verify
|
||
rules:
|
||
- condition: output/ にレポートを書き出した
|
||
next: verify
|
||
- condition: 追加調査が必要
|
||
next: dig
|
||
|
||
- name: verify
|
||
edit: false
|
||
persona: reviewer
|
||
instruction: |
|
||
output/ のレポートを確認する。
|
||
|
||
確認手順:
|
||
1. まず Glob で output/ 内のファイル一覧を確認する
|
||
2. output/ にファイルが1つもなければ「不足がある」と判断し analyze に差し戻す
|
||
3. ファイルがあれば Read で内容を確認し、網羅性・正確性・分かりやすさをチェックする
|
||
4. 不足があれば、`transition({next_step: "analyze", summary: ...})` で差し戻す。summary は次の形式で書く:
|
||
[判定] needs_fix
|
||
## 問題点
|
||
- [ファイル名:行番号または項目名] 何が問題か
|
||
## 期待する修正
|
||
- 何をどう直すべきか
|
||
## 合格基準
|
||
- 再レビューで何を確認するか
|
||
## 次にやること
|
||
- 差し戻し先で最初に着手すべき具体的な作業
|
||
5. summary は抽象論で終えず、変更ファイル・不足点・期待する修正内容を必ず含める
|
||
6. 技術的正確性の再確認が必要な場合は、まず自分で WebSearch / WebFetch で簡易チェックする。深い追加調査が必要な場合は、確認すべき URL・検索語・論点を summary に具体的に書いて analyze に差し戻す
|
||
|
||
追加チェック(追加質問への回答):
|
||
- ユーザーの追加質問(前回タスクへの補足・深掘り)への回答が含まれる場合、その内容に WebSearch/WebFetch による検索の裏付けがあるか確認する。内部知識だけで回答している形跡がある場合は「追加質問への回答に検索根拠が不足」として analyze に差し戻す
|
||
|
||
追加チェック(画像):
|
||
- output/images/ に画像があるのにレポートに `![` が一つもない場合、
|
||
画像埋め込み漏れとして analyze に差し戻す
|
||
|
||
## 合格時のユーザーへの返答(complete ツール)
|
||
|
||
合格と判断したら、`complete({status: "success", result: ...})` を呼ぶ。
|
||
result はそのままユーザーに表示される最終回答。output/ のレポートを Read で読み、その内容をベースに整形する。
|
||
- 「output/xxx.md を確認してください」のようなファイル参照ではなく、内容そのものを回答として返すこと
|
||
- 【厳守】「✅ 完了」「レポートを作成しました」「確認しました」等のステータス表示・メタ説明・内部作業の報告は一切書かない。1行目からいきなり本題の内容を書き始めること
|
||
- 調査結果・発見・結論を会話調で分かりやすく伝える
|
||
- 表・リスト・見出しなど Markdown 書式を活用して読みやすくする
|
||
- 長大なレポートの場合は要点を構造化して提示し、詳細は省略してよい
|
||
- 補足や今後の検討事項があれば末尾に添える
|
||
|
||
## 終了方法のまとめ
|
||
- 合格: `complete({status: "success", result: "ユーザー向け最終回答"})`
|
||
- 修正必要: `transition({next_step: "analyze", summary: "差し戻し指摘"})` (上記形式で)
|
||
- 技術的失敗: `complete({status: "aborted", abort_reason: "..."})`
|
||
allowed_tools: [Read, Glob, Grep, WebSearch, WebFetch, ReadImage, AnnotateImage, ReadPdf, ReadExcel, ReadDocx, ReadPPTX, SearchNotes, ReadNote, SearchMicrosoftLearn, FetchMicrosoftLearn, SearchMicrosoftLearnCache, RefreshMicrosoftLearnCache]
|
||
default_next: COMPLETE
|
||
rules:
|
||
- condition: output/ にファイルがない、または内容に不足がある(追加質問への回答に検索根拠が不足している場合も含む)
|
||
next: analyze
|