メインコンテンツまでスキップ

リクエスト種別

Workflow は request.kind を宣言することで、どの Provider(実行エンジン)がリクエストを処理するかを決定する。システムには複数のビルトインリクエスト種別があり、それぞれ異なるバックエンドと実行モードに対応する。

リクエスト種別一覧

kind対応 Provider説明
pass-through.run.v1pass-through純粋なローカル実行。リモートバックエンド関与なし
skillrunner.job.v1skillrunner / acp単一ステップの SkillRunner Skill 実行
skillrunner.sequence.v1acp複数ステップの連鎖 Skill 実行
acp.prompt.v1acpACP バックエンドに直接プロンプトを送信
acp.skill.run.v1acpACP バックエンドに Skill 実行を直接送信
generic-http.request.v1generic-http単一ステップの HTTP API 呼び出し
generic-http.steps.v1generic-http複数ステップの HTTP API 呼び出し

pass-through.run.v1 — 純粋なローカル実行

リモートバックエンドは不要。プラグイン内で直接実行される。ファイル操作やデータエクスポートなど、純粋なローカルシナリオに適する。

{
"provider": "pass-through",
"request": {
"kind": "pass-through.run.v1"
}
}

buildRequest フックでリクエストを構築する際、通常は selectionContextparameter を渡す。

export function buildRequest({ selectionContext, executionOptions }) {
return {
kind: "pass-through.run.v1",
selectionContext,
parameter: executionOptions?.workflowParams || {},
};
}

skillrunner.job.v1 — 単一ステップ Skill 実行

単一の Skill 実行リクエストを Skill-Runner バックエンドに送信する。送信後に結果をポーリングする。

{
"provider": "skillrunner",
"request": {
"kind": "skillrunner.job.v1",
"create": {
"skill_id": "literature-analysis",
"skill_source": "local-package"
},
"input": {
"upload": {
"files": [
{ "key": "source", "from": "selected.markdown" }
]
}
},
"poll": {
"interval_ms": 2000,
"timeout_ms": 600000
}
}
}
フィールド説明
create.skill_id実行する Skill の識別子
create.skill_sourceSkill のソース。"local-package"(パッケージに同梱)、"installed"(インストール済み)
input.upload.filesアップロードするファイルのリスト。from"selected.markdown""selected.pdf""selected.source" のいずれか
poll.interval_msポーリング間隔(ミリ秒)
poll.timeout_ms合計タイムアウト(ミリ秒)

Workflow が ACP バックエンドを選択した場合、skillrunner.job.v1 は自動的に acp.skill.run.v1 に適応するため、skillrunner.job.v1 として宣言された Workflow も ACP バックエンドと互換性がある。

skillrunner.sequence.v1 — 複数ステップ Skill 連鎖

複数の Skill を連鎖的に実行する必要がある場合(あるステップの出力が次のステップの入力になる場合)、シーケンス実行を使用する。代表的なシナリオは多段階パイプラインである(例:トピック合成の3ステップフロー:prepare → core enrichment → finalize)。各ステップは異なる Skill が処理し、handoff メカニズムを通じて中間結果を渡す。

複数の Skill をシーケンスで連鎖させ、あるステップの出力を次のステップの入力として使用できる(handoff)。

{
"provider": "acp",
"request": {
"kind": "skillrunner.sequence.v1",
"sequence": {
"steps": [
{
"id": "prepare",
"skill_id": "create-topic-synthesis-prepare",
"workspace": "new",
"parameter": { "language": "en-US" }
},
{
"id": "core",
"skill_id": "topic-synthesis-core-enrichment",
"workspace": "reuse-workflow",
"handoff": {
"from_step": "prepare",
"pass_through": true
}
},
{
"id": "finalize",
"skill_id": "topic-synthesis-finalize",
"workspace": "reuse-workflow"
}
]
}
}
}

ステップの設定

フィールド説明
idステップの一意の識別子。handoff から参照される
skill_id実行する Skill の識別子
mode必須。 実行モード。"auto"(非インタラクティブ)または "interactive"(ユーザー入力が必要)
workspaceワークスペースポリシー。"new"(新しいワークスペースを作成)、"reuse-workflow"(親ワークスペースを再利用)
parameterSkill に渡されるパラメータ
inputSkill に渡される入力データ
short_circuit早期終了ルール。以下を参照
fetch_typeステップごとに fetch タイプを指定する。"bundle"(zip アーティファクトバンドルをダウンロード)。未指定の場合は Workflow レベルの result.fetch.type を使用
apply_resultステップレベルの結果適用。workflow_id はどのサブ Workflow の applyResult を呼び出すかを指定する。on_failure は失敗時の動作を制御する("continue" または "fail_sequence"
include_if条件付きステップ実行。{ kind: "parameter", parameter: "...", equals: ... } で Workflow パラメータをチェックするか、{ kind: "runtime", condition: "..." } でランタイム条件を指定する

早期終了(short_circuit)

ステップの戻り値が条件を満たした場合、後続のステップをスキップし、現在のステップの出力を最終結果として使用する。

{
"id": "prepare",
"skill_id": "create-topic-synthesis-prepare",
"workspace": "new",
"short_circuit": {
"when": {
"path": "status",
"equals": "canceled"
},
"result": "step_output"
}
}
フィールド説明
when.pathステップ出力 JSON のどのフィールドをチェックするか
when.equalsフィールドの値がこの値と等しい場合に終了をトリガーする
result終了後の結果。"step_output"(現在のステップの完全な出力)

Handoff の設定

handoff は bindings 配列を通じて、あるステップから後続のステップにデータを渡す。各 binding は1つの値またはファイルの転送を記述する。

全パススルー(前のステップの全出力フィールド):

{
"handoff": {
"bindings": [
{
"kind": "value",
"target": "/input/handoff"
}
]
}
}

選択的フィールドマッピング:

{
"handoff": {
"bindings": [
{
"kind": "value",
"step": "step1",
"source": "output_field_name",
"target": "/input/field_name",
"required": false
},
{
"kind": "value",
"step": "step1",
"source": "status",
"target": "/input/step1_status",
"required": false
}
]
}
}
Binding フィールド説明
kindデータ値には "value"、ファイル参照には "file"
stepソースステップ ID(どのステップの出力から読み取るか)。省略した場合は直前のステップから読み取る
sourceソースステップの出力 JSON 内のフィールド名
target現在のステップの入力に値を書き込む JSON パス(例:"/input/field_name"
requiredtrue の場合、ソース値が欠落しているときにステップが失敗する。デフォルトは false
valuekind: "value" 用。渡すリテラル値(step/source が省略された場合に使用)

generic-http.request.v1 — HTTP API 呼び出し

Generic HTTP バックエンドに単一の HTTP リクエストを送信する。

{
"provider": "generic-http",
"request": {
"kind": "generic-http.request.v1"
}
}

外部 REST API(例:MinerU PDF 解析サービス)の呼び出しに一般的に使用される。

generic-http.steps.v1 — 複数ステップ HTTP 呼び出し

複数の HTTP リクエストステップをシーケンスで実行する。

{
"provider": "generic-http",
"request": {
"kind": "generic-http.steps.v1"
}
}

Provider の選び方

Workflow が必要な動作選択する Providerリクエスト種別
純粋なローカル操作。リモート呼び出しなしpass-throughpass-through.run.v1
単一の Skill を SkillRunner に送信skillrunnerskillrunner.job.v1
複数の Skill を連鎖的に実行acpskillrunner.sequence.v1
HTTP API を呼び出すgeneric-httpgeneric-http.request.v1

注:provider は Workflow が対応するバックエンドを決定する唯一のフィールドである。request.kind は正しい実行エンジンへのルーティングにのみ使用され、バックエンド互換性の推論には関与しない。

次のステップ