generate-theories について
generate-theories は Theorizer エージェントを使い、文献検索、証拠抽出、理論形成、新規性評価を行う研究向けスキルです。公刊論文に基づく証拠や研究上の空白を調べたい場合に適しています。
主な機能
- 01論文検索と構造化された証拠の抽出
- 02支持・反証の根拠を伴う理論形成
- 03理論の主張の新規性評価
- 04段階別または一括での実行
- 05抽出スキーマの作成と論文の追加
活用シーン
- 01研究課題について文献に基づく理論を生成
- 02仮説を支持・反証する論文の証拠を探す
- 03理論の主張が既に確立されているか評価
MCP 対応
README には MCP との関係は記載されていません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ allenai/ asta-plugins --skill generate-theoriesインストール後、Claude Code で/generate-theoriesを入力して読み込まれたか確認します。
詳細
理論の生成
asta-gateway 経由で Theorizer エージェントを使用し、論文を検索してエビデンスを抽出し、理論を記述して新規性を評価します。認証:asta auth login。
CLI はエージェントカードから生成されます。すべてのサブコマンド、フラグ、デフォルト値を確認できます。利用可能な機能を自分で確認してください。
asta generate-theories --help— サブコマンドの一覧。asta generate-theories card— エージェントカード全体。asta generate-theories describe <skill-id>— 1 つのスキルの入力スキーマ。
このスキルは 2 つの部分に分かれています。前半では、Theorizer の概要を説明します。3 つの組み合わせ可能なステージ、組み込みのエンドツーエンド版、単独で実行できるサブコマンドを取り上げます。後半では、理論生成のリクエストにエンドツーエンドで対応する方法を説明します。モードの選択、質問の組み立て、処理の実行、チェックポイント、引き継ぎ、エラー処理を取り上げます。
このスキルが役立つ用途
- 研究上の問い(「X は Y にどのような影響を与えるか。どのようなメカニズムを通じて、どの領域で影響するか」)について、文献に基づいた科学理論を生成する。
- 仮説を裏付ける、または反証するエビデンスを出版済み論文から見つける。
- 既存の文献に照らして理論の新規性を評価する。
- 抽出した変数や知見を通じて、研究領域で判明していることと未知のことを調査する。
パイプライン
Theorizer の文献主導型理論生成は、組み合わせ可能な 3 つのステージで構成されます。
literature-theory-generation = find-and-extract → form-theory → evaluate-novelty
find-and-extract— 研究上の問いに関連する論文を検索し、抽出スキーマを使って各論文から理論に関係する知見(エンティティ、変数、結果)を構造化テーブルに抽出します。出力:論文リストと抽出した知見。理論はまだ生成されません。form-theory— 抽出結果から少数の理論を記述します。各理論は、裏付けとなる論文のエビデンスと矛盾する論文のエビデンスが付された、いくつかの短い法則(例:「X は Y を引き起こす」)で構成されます。前回の実行時のtask_idまたはユーザー提供の抽出結果を受け付けます。evaluate-novelty— 取得した文献に照らして各理論の記述を評価し、各主張を「すでに確立されている」「既知の研究から導き出せる」「真に新規」のいずれかに分類します。前回の実行時のtask_idまたはユーザー提供の理論を受け付けます。
literature-theory-generation は、3 つのステージすべてを中断せず連続して実行する、エンドツーエンドの一括版です。ユーザーが一度に結果を得たい場合には便利ですが、ステージ間で結果を確認したり調整したりしたい場合にはあまり適していません。
機能を補完する、単独で実行できるサブコマンドが 2 つあります。
build-extraction-schema— 研究上の問いを正規化し、論文検索クエリを作成して、find-and-extractが使用する抽出スキーマを生成します。パイプラインの実行前にスキーマを確認または調整したい場合に便利です。生成したスキーマは、find-and-extractまたはliterature-theory-generationのextraction_schemaパラメーターに渡します。resume-extraction— 前回の実行に論文を追加し、そこから知見を抽出します。論文のダウンロードに失敗した後や、最初からやり直さずに前回の実行のエビデンスベースを拡充する場合に便利です。
実行方法
以下のセクションでは、理論生成のリクエストに対応するための手順を説明します。何を尋ね、何を提示し、いつ実行するかを取り上げます。
2 つのモード:自動実行と段階実行
パイプラインは組み合わせ可能なため、ユーザーは一気に実行するか、段階ごとに進めるかを選べます。
- 自動実行 —
literature-theory-generationを 1 回呼び出します。送信して、完了を待ち、結果を表示します。最速の方法ですが、実行中にユーザーが介入することはできません。 - 段階実行 — 3 つの段階を個別に呼び出します。各段階の後に、結果をユーザーに見せて、続行、停止、編集のどれにするかを尋ねます。時間はかかりますが、論文を除外したり、クエリを調整したり、必要な結果が得られた時点で停止したりできます。
セッション中、ユーザーが理論生成を初めてリクエストしたときは、質問を整えた後、送信する前に、AskUserQuestion を使って 2 つの選択肢を提示し、どちらのモードを希望するか尋ねます。それぞれの選択肢の説明では、トレードオフを簡潔に説明します。
回答を得たら、セッション中はその選択を記憶しておきます。後から別のモードにしたい意向が示された場合(「やはり、そのまま実行してください」「待って、先に論文を見せてください」など)は、再確認せずにその意向を尊重します。
例外:ユーザーの最初の表現ですでに希望が明らかな場合(「そのまま実行してください」「デフォルトを使ってください」「抽出の前に論文を確認します」など)は、質問を省略し、示された希望に従います。
段階の間
段階実行の場合、各段階の完了後に、ユーザーが次に判断する内容に沿った明確な要約をチャットに表示してから、次の 3 つの選択肢を提示します。
| 選択肢 | 実行内容 |
|---|---|
| 続行 | この実行の出力を使って次の段階を実行します |
| 停止 | ここで終了します。Asta Artifacts への引き渡しを通じて、存在する結果をすべて表示します |
| 編集 | 続行する前に変更します(下記参照) |
要約は簡潔で、判断に役立つ内容にしてください。すべてを羅列する必要はありません。
find-and-extract の後:
- 論文の一覧(タイトルと、各論文から抽出した内容の 1 行要約)を表示します。
- 編集 の場合:特定の論文を追加または削除する、エビデンス収集に使う抽出スキーマを編集する、またはクエリを改良して最初からやり直すことができます。
form-theory の後:
- 理論を表示します。各理論について、名前、核心的な考えの 2~3 文の説明、支持する論文数と反証する論文数を示します。
- 編集 の場合:
generation_objective(精度重視か新規性重視か)を変えてform-theoryを再実行するか、抽出結果の一部だけを対象に再実行できます。
evaluate-novelty の後:
- これが最終段階です。「続行」はありません。
- 各理論の新規性ラベルを平易な言葉で表示します。
- 編集 の場合:理論を絞り込んで新規性評価を再実行するか、特定の主張を検証するために
find-literatureに分岐できます。
どの段階でもユーザーが 停止 を選んだ場合は、通常どおり Asta Artifacts に引き渡し、生成された内容をエクスポートしてインデックス化します。部分的な抽出結果や理論も有効なアーティファクトです。
質問を整える
これは、次の呼び出しで理論を生成または構築する場合に限り適用されます。具体的には、literature-theory-generation(全パイプライン)または form-theory(単独実行または続行)の場合です。次の呼び出しで find-and-extract、evaluate-novelty、resume-extraction が実行される場合は、クエリを整えないでください。
Theorizer は、幅広い質問にも具体的な質問にも対応できます。 その価値の多くは、幅広い、または探索的な質問を受けて文献を幅広く調べ、ユーザーが名前を挙げようと思わなかった変数、メカニズム、適用範囲を見つけ出すことにあります。ユーザーがすでに求める内容を把握している場合は、条件を絞った質問も有用ですが、実行に必須ではありません。質問の具体性が足りないことを、実行前に解決すべき問題として扱わないでください。
Theorizer への理論に関する質問では、以下の4つの側面の一部または全部を挙げることができます。ユーザーがすでに意見を持っている場合、これらを示すとエージェントがより的確に焦点を定められます。
- 介入 — 変化させる独立変数(例:出典の引用、応答の遅延、擬人化表現)。
- 結果 — 具体的な従属変数(例:信頼、記憶の保持、タスクの完了)。
- 媒介メカニズム(任意)— 効果をもたらすと仮定される要因(例:透明性の認知、認知負荷、アンカリング)。Theorizer はこれがなくても実行できます。ユーザーが提示した場合にのみ含めてください。
- 適用範囲 — 理論を適用する領域(例:消費者向けチャットボット、エンタープライズ検索、コーディングエージェント)。
以下は、具体的に指定された質問の例です(2つ目には任意のメカニズムが含まれています)。これらは Theorizer が受け付ける質問の一例であり、すべての質問が従うべきテンプレートではありません。
- 学部のSTEM課程において、間隔を空けた検索練習が長期的な記憶の保持にどう影響するかについて、理論を構築してください。
- メタボリックシンドロームの成人において、オートファジーの促進を介して、断続的な断食がインスリン感受性にどう影響するかについて、理論を構築してください。
- 北米の温帯草原において、計画的な野焼きが草原の生物多様性にどう影響するかについて、理論を構築してください。
「人々がAIを信頼するようになる要因は何か?」のような幅広い質問も、それだけで完全に有効な入力です。質問を絞り込む提案は親切心からのものであり、実行の条件ではありません。
セッション中は、ユーザーが質問を実質的に変更しない限り、2回目以降の実行で質問を再度整えないでください。同じやり取りを繰り返すのは、ユーザーの負担になります。
ユーザーの質問への対応方法 — 監査してから振り分ける:
推測しないでください。 ユーザーに代わって介入、結果、範囲の各次元を推測し、質問の範囲を黙って狭めてはいけません。そうすると、ユーザーが選んでいない観点に基づいて、実行全体を進めることになります。質問を何らかの形で絞り込んだり変更したりする場合は、推測せずに尋ねてください。
まず監査してください: ユーザーの質問に、介入、結果、範囲がすでに明記されているか、あるいは広範・探索的な質問なのか(これらのうち1つ以上が未指定か)を判断します。
次に振り分けます:
- 各次元がすでに明記されている場合、またはユーザーが(今回あるいは以前に)提示された内容のまま進めたいと示している場合は、何も言わずに進めてください。監査結果を告げたり、質問が「適切に設定されている」と伝えたりせず、次のディスパッチ手順に直接進みます。質問に理論を構築するための要素がすでに含まれている場合は、「〜の仕組みについて理論を構築する」という枠組みをこちらで加えてください。そうでない場合は、提示された質問をそのまま送信します。
- 質問が広範である場合、または必要な次元が未指定で、まだ提案していない場合は、選択肢を示しますが、実行の条件にはしないでください。1つのメッセージで、質問が広範・探索的に見えること、Theorizer はそのままでも適切に対応できることを伝え、広範なままにするか、特定の次元について詳細を加えるかを尋ねます。時間をかけたくない場合は、そのまま実行するのが既定であることを明確にしてください。回答があるまで実行が保留されるかのように示してはいけません。まず広い範囲で探索し、その後、さらに調査または精緻化したい理論が見つかった段階で焦点を絞る方法も役立つと伝えてもよいでしょう。
- 科学文献に基づいて回答できない質問(例:「スタートアップの名前を何にすべきか」「この論文を要約してください」)の場合に限り、拒否します。Theorizer の領域は、公開されたエビデンスに基づく科学理論の生成であることを明確に伝え、その形式への質問の修正を提案するか、別のスキルに引き継いでください。実行を保留するのは、この場合のみです。
ルート2(絞り込みを提案):
**Your question:** What makes people trust AI?
That reads as a broad, exploratory question — Theorizer can work well with that; it'll dig through the literature and surface the variables and mechanisms that seem to matter. If you'd rather narrow it yourself first, I can factor in specifics like:
- **Intervention** — a variable you want to vary (e.g., source citations, response latency, anthropomorphic phrasing)
- **Scope** — a domain to focus on (e.g., consumer chatbots, medical AI, search assistants)
Want to keep it broad, or add some detail? You can also start broad, then narrow later based on what Theorizer finds.
詳細が追加された場合は、質問を言い換えて確認します:
**Reshaped:**
Build a theory of how source citations affect user trust in consumer AI chatbots.
_Approve, edit, or keep the original broad question?_
広範なままにしたいと言われた場合、または提案に反応がない場合は、元の質問を一字一句そのまま使って進めます。
ルート3(拒否):
**Your question:** What should I name my startup?
Theorizer generates scientific theories grounded in the published literature — questions like "how does X affect Y" that can be tested against evidence. Naming a startup isn't a testable hypothesis I can ground in papers.
追加のコンテキストと方向付け
ユーザーは、中心となる研究上の質問に加えて、追加の方向付けとなるコンテキストを含めることがあります。たとえば、「X について理論を構築してください。特に Y または Z に関心があります。追加のコンテキストとして、A、B、C に関心があります。」のような場合です。
この追加情報は、理論生成の方向付けに役立ちます。中心となる質問だけに切り詰めず、送信するクエリにすべてそのまま含めてください。 例外は、質問がすでに理論構築の形式になっていない場合のみです。その場合は、クエリを「〜について理論を構築してください」で始まる形式に言い換えてもかまいませんが、変更は最小限にとどめ、提示された内容や追加のコンテキストを変えないでください。
ディスパッチ方法
-
分類 — ユーザーのリクエストを分類します。
- 研究課題から理論を求める明確なリクエスト → モードを選択し、
literature-theory-generation(自動)または3段階のパイプライン(段階ごとに実行)を使用します。 - 特定の段階を明示的に指定するリクエスト(例:「論文だけを探す」「前回の実行結果から理論を再構築する」「これらの理論の新規性を確認する」)→ 対応する単一のサブコマンドを使用し、モード選択は省略します。
- 前回の実行の続き →
resume-extraction、または前回の実行のtask_idを指定したform-theory/evaluate-noveltyを使用します。
- 研究課題から理論を求める明確なリクエスト → モードを選択し、
-
研究課題を確認します。 ユーザーがまだ提示していない場合は、尋ねてください。これは常に必須となる唯一の入力です。
-
課題を整えます — ただし、次の呼び出しで理論を生成する場合(
literature-theory-generationまたはform-theory)に限ります。以下では省略します。find-and-extract単独 — 文献のトピックをそのまま渡します。evaluate-novelty、resume-extraction— クエリ入力は不要です。
基準と整えない課題の一覧については、課題を整える を参照してください。
-
モードを決定します(初回実行時のみ)。ユーザーがリクエストの表現でモードを指定している場合は省略します。
-
その他の入力を確認します。
asta generate-theories describe <skill-id>を実行して、必須フィールドと主要な任意フィールドを確認します。不足している必須フィールドと、影響の大きい任意フィールド(論文、目的、新規性)のうち2~3項目について、ユーザーが「デフォルトを使用して」と言っていない限り、AskUserQuestionで一度に尋ねます。 -
送信内容を明示します。 1行で示します。例:"論文 N 件を使用し、新規性評価を有効にして、精度重視で実行します。送信します — 変更があれば「調整」と言ってください。" これは、デフォルト設定をユーザーに見える形にするパターンのユーザー側にあたります。
-
送信します。
- 自動モード:
asta generate-theories literature-theory-generationを1回呼び出します。 - 段階ごとに実行するモード:最初に
asta generate-theories find-and-extractを実行し、結果を提示して続行/停止/編集を選べるようにしてから、同じチェックポイントのパターンでform-theoryとevaluate-noveltyを順に実行します。
各サブコマンドには、単一の JSON
PAYLOAD引数を渡します。短いペイロードではインライン JSON を使用できます。長いクエリではファイルに書き込み、@path/to.jsonを使用します。オブジェクト型の入力には URI(file://、s3://、https://)も使用できます。CLI は進捗を stderr にストリーミングし、タスク終了時に最終的な Task JSON を stdout に出力します。ポーリング(5 秒/15 秒/60 秒のバックオフ)は CLI が処理するため、独自のループは作成しないでください。ユーザーが明示的に fire-and-forget を求めた場合のみ、
--no-waitを使用してください。対話セッションでは、Bash(..., run_in_background=true)で送信を実行し、完了通知を待ちます。 - 自動モード:
デフォルト設定
スキーマのデフォルト値です。ディスパッチ手順6の実行時の「Using: ...」行には、実際に解決された設定が表示されるため、送信前にユーザーが変更を依頼できます。
| 設定 | デフォルト | 効果 | 調整する場合 |
|---|---|---|---|
max_papers_to_retrieve | 10 | 実行時間は約3~8分 | 中規模の実行では30、網羅的な検索では100に増やします(15~25分) |
generation_objective | accuracy-focused | 十分な裏付けがある理論を優先します | ユーザーが新規性や新しい理論を重視している場合は novelty-focused に設定します |
do_qualified_novelty_evaluation | true | 30~60分と約5~10ドルが追加されます | すばやく反復する場合は省略します。段階ごとに実行するモードでは影響しません(評価は別の evaluate-novelty 段階で実行されます) |
タスク完了後
結果をエクスポートしてインデックス化するため、Asta Artifacts スキル(asta-tools:artifacts)に引き継ぎます。パスの規約、マニフェスト、asta-documents への登録はこのスキルが担います。呼び出し元のスキルとして generate-theories を渡し、理論のクエリから作成した YYYY-MM-DD-<short-query-slug> 形式のスラッグを指定してください。
段階的実行モードでは、ユーザーが各段階で停止または完了するたびにエクスポートします。パイプライン全体が完了するまで待たないでください。
続いて、チャットで次の順に記載します。
- 保存場所 — インデックス化されたパス、
asta documents searchコマンド、open <absolute path>。絶対パスを使用してください。 - 総合的な要約 — 新たに作成した2〜4文。理論全体として何を主張していますか? どこで一致し、どこで異なりますか? 要点となる「それで何が言えるのか」は何ですか? 理論を読み、定型文に当てはめないでください。
- 理論の表 — 理論ごとに1行で、名前と要点を2〜3文で記載します。新規性がスコア化されている場合は、新規性 列を追加してください。
最後に「ご希望であれば……」のような文を付けないでください。検索とオープンのリンクで十分です。
再開/エラー
state=input-required→ CLI がContinue with: …のヒントを出力します。ユーザーにその内容を伝え、asta generate-theories send-message --task-id <id> --context-id <ctx> '<reply>'を使って再送信し、待機処理を再実行します。state=failed→status.messageを報告し、処理を停止します。- ネットワーク/プロトコルエラーが発生すると、標準エラー出力に JSON
{error: …}が出力され、ゼロ以外の終了コードで終了します。 - パイプラインが部分的に完了した場合(段階的実行)→ 以前の実行の
task_idをform-theoryまたはevaluate-noveltyに渡すことで、ユーザーはいつでも後から続行できます。
参考資料
- Theorizer:https://github.com/allenai/asta-theorizer-internal
- エージェントカード/スキーマ:
asta generate-theories card/asta generate-theories describe <skill-id> - A2A 仕様:https://a2a-protocol.org/latest/specification/