analyze-data について
analyze-data は、DataVoyager を通じてデータサイエンス分析を実行するスキルです。依頼を具体的な問いに整え、ローカルデータを送信してタスクを追跡し、成果物の書き出しを案内します。
主な機能
- 01依頼を分析可能な問いに整形
- 02データを送信して分析を開始
- 03セッションを再利用した追加分析
- 04タスクのポーリングと状態処理
- 05分析成果物の書き出しと索引化
活用シーン
- 01CSV から目標指標に関連する要因を探す
- 02同じデータセットに追加の問いを尋ねる
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ allenai/ asta-plugins --skill analyze-dataインストール後、Claude Code で/analyze-dataを入力して読み込まれたか確認します。
詳細
データ分析
DataVoyager エージェント(Cloud Run 上でホストされ、asta-gateway 経由でアクセス)を使用して、マルチエージェントのデータサイエンスパイプラインを実行します。エージェントはサンドボックス化されたノートブックで呼び出し元のデータセットに対するコードを記述・実行し、調査上の質問に回答します。認証には asta auth login を使用します。
ステップ 1 — 質問を具体化する
ユーザーに何かを尋ねる前に、リクエストと周辺のコンテキスト(現在のプロジェクト、会話履歴、作業中のファイル)を分析し、具体化した分析上の質問を作成します。その質問は次の条件を満たす必要があります。
- 分析対象となる具体的なデータセットを明記する
- 単に「X を分析する」ではなく、ユーザーが求める判断や知見を示す
- DataVoyager が実際にコードで回答できる質問にする
例:
- ユーザーが「この CSV を見て」と言った場合 → ファイルパスを確認し、可能であれば先頭の数行を調べ、次のような具体的な質問を作成します:「
sales_q3.csvのどの列が、地域を調整したうえで、四半期売上と最も強く相関していますか?」 - ユーザーが「タイタニックのデータには何がある?」と言った場合 → 「
titanic.csvでは、生存を予測するうえで最も有効な特徴量は何ですか? また、乗客クラスと性別によって生存率はどう異なりますか?」 - ユーザーが具体的なデータセットについて具体的な質問をした場合 → その質問をそのまま繰り返します
ステップ 2 — チャットで質問を 1 つ提示して確認する
チャットで(AskUserQuestion ではなく)次のように提示します。
提案する分析:
- データセット:
<path>(DataVoyager ワークスペースにアップロードされます)- 質問:
<tightened>次のように返信できます:
- yes / go と返信して、そのまま実行する
- 修正内容を返信する(例:「Q3 だけに注目して」、「欠損値は無視して」)。質問を修正します
- (
AskUserQuestionが利用可能な場合のみ) interview と返信して、フォームで質問を掘り下げる
AskUserQuestion ツールが利用可能な場合に限り、interview の項目を含めます。
ユーザーの返信を待ちます。返信に応じた進め方は次のとおりです。
- 肯定(「yes」、「go」、「proceed」、「looks good」)→ ステップ 4。
- 自然言語での修正 → 質問を更新し、同じプロンプトを再表示します。
- 「Interview」/「refine」 → ステップ 3(
AskUserQuestionが必要です。利用できない場合は、代わりにチャットで尋ねます)。
決して、データセットを事前にアップロードするようユーザーに求めないでください。アップロードはスキルが処理します(ステップ 4 を参照)。ユーザーが指定するのはローカルファイルパスだけです。
ステップ 3 — 任意のインタビュー(ユーザーから求められた場合のみ)
次の内容を含む AskUserQuestion を 1 回実行します。
- 質問 —
<tightened>と<alternative reframe>を比較します(代替の言い換えがある場合) - 範囲 — 「焦点を絞る(単一の仮説)」/「探索的(複数の観点)」
- 追加のコンテキスト — フリーテキストで「DataVoyager がデータについて把握しておくべきことはありますか?」と尋ねます(フィールドの意味、既知の注意点など)
回答を質問文に反映します。
ステップ 4 — 送信する
submit を 1 回呼び出すと、セッション UUID が生成され、ファイルが context/<uuid>/ にアップロードされて、分析が開始されます。レスポンスにはタスク ID(id)とセッション UUID(contextId)が含まれます。ポーリングや追加の質問に備えて、両方を記録してください。
asta analyze-data submit \
--output "/tmp/analyze-data-$$.json" \
"<confirmed question>" ./sales.csv ./regions.csv
TID=$(jq -r .id /tmp/analyze-data-$$.json)
CTX=$(jq -r .contextId /tmp/analyze-data-$$.json)
再開可能性。 $CTX は DataVoyager セッションを識別します。同じワークスペースに対して追加の質問をするには、asta analyze-data submit --context-id "$CTX" '<follow-up question>' [<new-files>...] を実行します。新しいファイルがある場合は既存のコンテキストに追加され、ファイルを渡さない場合はエージェントが既存のファイルを再利用します。同じデータセットを使って新しいセッションを開始するには、--context-id を省略し、ファイルを再度渡します。
ステップ 5 — ポーリング
フォアグラウンドでポーリングをループ実行しないでください(セッションがブロックされます)。また、個別に sleep 60 してから確認する処理も開始しないでください(ハーネスが長い待機時間をブロックします)。代わりに、poll サブコマンドをバックグラウンドで実行してください。終端状態になると終了し、完了時にはハーネスから通知が届きます。
asta analyze-data poll "$TID" --output "/tmp/analyze-data-$TID.json"
run_in_background: true を指定して実行します。ステータスの更新は stderr に出力され、最終的な Task JSON は --output に書き込まれます。完了通知が届いたら、最終ペイロードを確認するため /tmp/analyze-data-$TID.json を読み取ってください。
実行中は、自分から状態を確認しないでください。ほかの作業をするか、待機してください。通知が正式な完了の合図です。通知が届く前にユーザーから状態確認を求められた場合に限り、バックグラウンドタスクの stderr を末尾から確認してください。
終端状態:
completed→ ステップ 6failed→status.messageを報告して終了input-required→ ユーザーに伝えた後、asta analyze-data send-message --task-id <ID> --context-id "$CTX" '<reply>'を実行し、ポーリングループを再開
実行時間:大きく変動します(単純な EDA は数分で完了しますが、複数ステップのモデリングでは 20~40 分かかることがあります)。約 2 時間が経過する前に、失敗と判断しないでください。
ステップ 6 — エクスポートとインデックス登録
Asta Artifacts スキルにタスク出力(テーブル、プロット、ノートブック、作成した分析文書など)のエクスポートと、各アーティファクトの asta-documents への登録を依頼します。呼び出し元のスキルとして analyze-data を渡し、分析上の問いに基づくスラッグを指定してください。パスの規則、マニフェスト、index.yaml の処理は Asta Artifacts が担当します。
ステップ 7 — ユーザー向けの要約
次の順に提示します。
-
インデックス登録と探索用パス — 2 通りの閲覧方法を示す短いブロックを 1 つ記載します。必ず両方を含めてください(セマンティック検索用のスキルパスと、直接確認用のファイルシステムパス)。
.asta/analyze-data/<slug>/index.yamlに N 件のアーティファクトをインデックス登録しました。asta documents search --summary='<concept>' --root=.asta/analyze-data/<slug>で探索するか、ディレクトリを直接開いてください:open <absolute-path-to-slug-dir>絶対パスを使用します(例:
/Users/.../project/.asta/analyze-data/2026-04-23-…/)。<concept>には分析の中心となる具体的な用語(列名やモデルの種類など。一般的すぎる語は避けます)を選んでください。 -
1 段落の統合的な要約 — 今回の実行内容に合わせて、2~4 文で新たに作成します。主な発見は何か、データが示した結果はユーザーの予想とどう異なるか、意外な点や留意事項は何か、分析で当初の問いに答えられたかを伝えます。ここは裁量に任されます。定型文を使わず、出力を確認して要約してください。
-
主な発見/チャートの表 — 注目すべき知見または図ごとに 1 行を設けます。発見、1~2 文の詳細、該当する場合は チャートのファイル名を記載します。
生の JSON をそのまま出力しないでください。エージェントが実行したすべての手順を繰り返さないでください。最後に「ご希望であれば……」といった要約を付け加えないでください。探索用ブロックで、ユーザーが次に進む方法はすでに案内しています。