> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qoder.com/llms.txt
> Use this file to discover all available pages before exploring further.

# WakerFlow ワークフローオーケストレーション

> WakerFlow のマルチエージェントオーケストレーションエンジンで複雑なタスクを複数の Phase に分解し、異なる Waker に割り当て、オーケストレーションプリミティブで実行順序を柔軟に制御します。

WakerFlow はマルチエージェントオーケストレーションエンジンで、複雑な AI 自動化タスクを複数の段階とステップに分解し、異なる Waker が協働して完了します。タスクに多視点・多ステップの処理が必要な場合、WakerFlow ではタスクを複数の段階(Phase)に分解し、各ステップに最適な Waker を割り当て、実行順序を柔軟に制御できます。

## WakerFlow 一覧ページ

左側ナビゲーションバーの「WakerFlow」をクリックして一覧ページに入ります。

* **一覧エリア**:作成済みのすべての WakerFlow を表示し、各レコードに名称、説明、最近の実行状態と時刻が示されます。
* **新規ボタン**:クリックすると作成フローに入ります。
* **検索とフィルター**:名称による検索と状態によるフィルターに対応しています。

## WakerFlow の作成

「新規 WakerFlow」をクリックして作成フローに入ります。QoderWake は自然言語による作成に対応しています。

<Steps>
  <Step title="新規をクリック">
    一覧ページの「新規」ボタンをクリックします。
  </Step>

  <Step title="フローを記述">
    表示された作成画面で、望むフローを自然言語で記述します。例:「毎朝 9 時にセキュリティ監査担当者が前日のコード変更を確認し、問題を見つけたら修正エンジニアに修正させ、最後にテストエンジニアに検証させる」。
  </Step>

  <Step title="スクリプトを生成">
    システムが複数の段階を含むオーケストレーションスクリプトを自動生成します。
  </Step>

  <Step title="Studio に入る">
    生成後は自動的に Studio 画面に入り、さらに調整・改善できます。
  </Step>
</Steps>

空白テンプレートから始めて、手動でスクリプトを記述することもできます。

**作成方法の比較:**

| 方法        | 操作                           | 適用シーン                |
| --------- | ---------------------------- | -------------------- |
| 自然言語で作成   | フローの記述を入力すると、システムがスクリプトを自動生成 | 迅速なプロトタイピング、シンプルなフロー |
| 空白テンプレート  | ゼロから JavaScript スクリプトを記述     | 複雑なロジック、精密な制御        |
| テンプレートベース | プリセットテンプレートを選択して修正           | 一般的なシーンへの迅速な適応       |

## WakerFlow Studio

WakerFlow Studio は上部 Tab バーを通じて、WakerFlow、実行記録、設定の 3 つの機能 Tab の切り替えを提供します。

### キャンバス Tab

WakerFlow 詳細ページのデフォルトビューは Studio キャンバスです。

* **左側キャンバスエリア**:ワークフローの構造をフローチャート形式で可視化し、各 Phase と Worker ノード、およびそれらの接続関係を表示します。ドラッグとズームでフロー全体を閲覧できます。
* **右側 Chat パネル**:WakerFlow とやり取りしてデバッグするための対話エリアで、自然言語の指示でフロー構造を変更できます。
* **上部 Tab バー**:WakerFlow、実行記録、設定の 3 つの機能 Tab の切り替えを提供します。

キャンバス内の任意のノードをクリックすると、右側パネルにそのノードの詳細な設定情報が表示されます。含まれる内容:

* ノードの種類(Phase / Worker / Parallel など)。
* 関連する Waker 情報。
* 入出力パラメーター。
* 実行設定(タイムアウト、リトライなど)。

### スクリプト Tab

スクリプト Tab はコードエディターを提供し、WakerFlow の JavaScript スクリプトを直接記述・修正できます。

* **コードエディター**:シンタックスハイライト、自動補完に対応しています。
* **保存ボタン**:編集が完了したらクリックして保存します。
* **右側 Chat パネル**:引き続き利用可能で、コードを編集しながら対話でヘルプを得られます。

### 実行記録 Tab

実行記録 Tab は、その WakerFlow のすべての実行履歴を表示します。

* **実行一覧**:時刻の降順で各実行を表示し、実行 ID、トリガー方法、開始時刻、所要時間、最終状態を含みます。
* **状態ラベル**:Pending / Running / Waiting / Completed / Failed / Cancelled。
* **詳細の展開**:実行記録をクリックすると、段階の進捗、各 Worker の状態、ログ出力、所要時間の統計を確認できます。
* **ヒューマンインタラクションのプロンプト**:実行中に `askUser` ノードに到達すると、ここに入力プロンプトが表示されます。

<Note>
  実行中の WakerFlow は各ノードの実行状態(進行中、完了、待機中など)をリアルタイムで表示し、色とアイコンで区別します。
</Note>

### 設定 Tab

設定 Tab は WakerFlow のグローバル設定を管理します。

* **基本情報**:名称と説明を編集します。
* **トリガー方法の設定**:トリガーを追加・管理します。各 WakerFlow につき最大 5 個のトリガーを設定できます。
* **自動実行の設定**:保存後に自動実行するか、タイムアウト時間などを設定します。
* **実行パラメーター**:実行時に渡せるパラメーターを定義します。

## オーケストレーションプリミティブ

WakerFlow は JavaScript で記述し、6 つのオーケストレーションプリミティブを提供します。

| プリミティブ                      | 説明            | 用途                                      |
| --------------------------- | ------------- | --------------------------------------- |
| `phase(title, detail?)`     | 現在の段階を宣言      | ワークフローの論理構造を整理                          |
| `log(message, level?)`      | 進捗メッセージを書き込み  | 実行モニタリング、level: info/warn/error/success |
| `worker(instruction, opts)` | 単一タスクをディスパッチ  | 指定した Waker にタスクを割り当てて実行                 |
| `parallel(tasks, opts?)`    | バリア並行         | すべてのタスクを並行実行し、全部完了後に返す                  |
| `pipeline(tasks, opts?)`    | パイプライン        | タスクを複数の段階へ順に流す                          |
| `askUser(question)`         | ヒューマンインタラクション | 実行を一時停止し、ユーザーの入力を待つ                     |

**worker の例:**

```javascript theme={null}
const result = await worker('この PR のセキュリティリスクを分析', {
  label: 'security-review',
  resolve: { kind: 'waker', wakerId: 'security-auditor-001' }
})
```

**parallel の例:**

```javascript theme={null}
const reviews = await parallel([
  () => worker('セキュリティの観点からレビュー', { resolve: { kind: 'waker', wakerId: 'security-expert' } }),
  () => worker('パフォーマンスの観点からレビュー', { resolve: { kind: 'waker', wakerId: 'perf-expert' } }),
])
```

## オーケストレーションのヒント

* Phase を適切に分割します。各 Phase は論理的に完結した段階を表し、3〜5 個の Phase が適切です。
* 各 worker には意味のある label を設定し、実行記録で追跡しやすくします。
* schema で worker の返却フォーマットを制約し、後続処理の安定性を確保します。
* 重要なステップには askUser を組み込み、失敗時に人手の介入を求めます。
* まずシンプルな worker でフローを通し、その後で徐々に複雑度を上げます。
