フロー
保存したリクエスト、MCPサーバ、Echolotのツールをキャンバス上でつないで小さなプログラムにし、手動、スケジュール、Webhook、またはエージェント用のツールとして実行します。
フローは、自分で描く小さなプログラムです。ブロックを接続でつないで作ります。各ブロックは1つのことを行います。保存したリクエストを送信する、レスポンスから値を取り出す、分岐する、繰り返す、あなたに確認する、変数を保存する、ファイルを書き出す、などです。普段は複数の手順で手作業していることにフローを使います。デバイスコードでサインインする、結果をページ送りで取得する、テストデータを投入して後片付けする、毎朝APIをチェックする、5つのリクエストを行う1つのツールをAIエージェントに渡す、といった作業です。
フローはワークスペースのflowsフォルダに、フロー1つにつき1ファイルで保存されます。リクエストと同じように、Gitでレビューや共有ができます。フローが送信するリクエストはどれも、リクエストページから送信する場合と同じ経路を通ります。変数、認証、スクリプト、チェック、プロキシ、履歴がすべて適用されます。
フローのページ
サイドバーの上部にあるモジュールの切り替えでフローを選ぶか、⌘5を押します。サイドバーにはワークスペースのフローが一覧表示されます。各フローの名前の下には、開始方法が表示されます。manual、agent tool、every hour、scheduled、webhookのいずれかです。フローの横に警告マークがある場合は、実行する前に修正が必要な問題があります。

ページは3つの部分でできています。
- ツールバーはキャンバスの上にあります。フローの名前(変更が未保存の間は編集済みと表示)、問題の数、整頓、全体表示、ズームのレベル、複製、実行、実行ログ、ブロック、メモ、実行が並びます。
- キャンバスは中央にあり、左下にフロー全体の小さなマップがあります。マップをクリックすると、その位置に表示が移動します。
- インスペクタは右側にあります。何も選択していないときは、フロー自体の名前、説明、入力が表示されます。ブロックを1つ選択しているときは、そのブロックの設定が表示されます。
フローを開いている間、サイドバーには、そのフローの実行((フロー名)の実行。このウインドウでの実行で、新しいものが先頭)と、キャンバスにドラッグできるワークスペースのリクエストも表示されます。
フローを作成する
- サイドバーで、フローの横にある+をクリックします。
- 開始ブロックを出力ブロックにつないだものから始めるには空のフローを選びます。テンプレートから始めるにはテンプレートからの下から選びます(テンプレートを参照)。
- 新しいフローがキャンバスに開きます。インスペクタの名前で名前を変更します。
ワークスペースにまだフローがない場合、ページには代わりに新規フローボタンが表示されます。
フローを削除するには、フローを選択してフローの横の−をクリックするか、Controlキーを押しながらクリックして削除…を選びます。Echolotは先に確認し、ファイルをゴミ箱に入れます。削除したフローを実行するフローは、動作しなくなります。
キャンバス上で組み立てる
ブロックを追加する
- ツールバーのブロックをクリックするか、⇧⌘Bを押します。ブロックピッカーが開きます。入力して検索し、ブロックの種類をクリックします。↩を押すと、最初に一致したものが追加されます。新しいブロックは表示の中央に置かれ、選択された状態になります。
- ピッカーには、ワークスペースの保存済みリクエストもリクエストの下に表示されます。1つ選ぶと、そのリクエストを送信するリクエストブロックが追加されます。
- サイドバーのリクエストからリクエストをキャンバスにドラッグします。離した場所にリクエストブロックができます。リクエストをControlキーを押しながらクリックしてフローに追加を選ぶと、そのブロックがフローの右側に置かれます。
ブロックの種類ごとの設定とポートは、すべてブロックにあります。

ポートを接続する
入力はブロックの左端、出力は右端にあります。値は出力から出て、接続をたどり、入力に届きます。ブロックは、接続されたすべての入力に値が届くと実行されます。
- 出力から入力へドラッグすると、2つが接続されます。接続できる場合は、ポインタの下のポートが光ります。入力から出力へドラッグして始めることもできます。
- 入力に接続できるのは1つだけです。別の出力をつなぐと、古い接続は置き換わります。1つの出力は複数の入力につなげます。
- 新しい接続を何もないキャンバスの上で離すと、その場所にブロックピッカーが開きます。ピッカーにはその接続を受け取れるブロックだけが表示され、選んだブロックは接続済みの状態で配置されます。
- 接続を移すには、接続の終点になっている入力からドラッグして離し、別の入力にドロップします。何もないキャンバスの上にドロップすると、接続が切れます。
- 接続にポインタを合わせると、中央に接続を切るボタンが表示されます。
選択、移動、整列
- ブロックをクリックすると選択されます。⇧キーまたは⌘キーを押しながらクリックすると、ブロックを選択に追加したり、選択から外したりできます。
- ⇧キーまたは⌘キーを押しながら何もないキャンバスをドラッグすると、選択ボックスを描けます。ボックスに触れたブロックが選択に加わります。
- ブロックをドラッグすると移動します。Escキーを押すと、選択が解除されます。
- 矢印キーを押すと、その方向にいちばん近いブロックが選択され、表示もそれに追従します。何も選択していないときは、開始ブロックから始まります。
- 整頓は、ブロックを実行される順に列に並べます。
- 複製(⌘D)は、選択したブロックを、それらの間の接続ごとコピーします。
- ⌫は、選択したブロックを接続ごと削除するか、選択した接続を削除します。
ブロックを選択したときのインスペクタには、ブロックを削除があります。複数のブロックを選択している場合は、その数とブロックを削除が表示されます。フローにある開始ブロックはちょうど1つです。開始ブロックはコピーも複製もされず、一時停止できず、インスペクタにもブロックを削除はありません。
パンとズーム
- 何もないキャンバスをドラッグするか、2本指またはマウスホイールでスクロールすると、表示が移動します。
- ピンチするか、⌘キーを押しながらスクロールすると、ズームします。ズームは20 %から250 %までで、ツールバーにレベルが表示されます。
- 全体表示(⌥⌘0)は、フロー全体を表示します。文字が読めるよう、50 %より小さくはなりません。それより大きなフローは、左端から表示されます。
コピーとペースト
編集 › コピー(⌘C)、カット(⌘X)、ペースト(⌘V)は、選択したブロックとそれらの間の接続に対して働きます。ペーストしたブロックには新しいIDが付き、選択された状態になります。同じフローでは元のブロックの隣に、別のフローでは表示の中央に置かれます。別のワークスペースのフローにもペーストできます。コピーしたブロックはJSONテキストなので、メッセージやIssueにペーストすることもできます。
メモ
ツールバーのメモをクリックすると付箋のメモが追加され、そのまま入力できます。メモはブロックの背面に置かれ、実行されません。
- メモをドラッグすると移動し、右下のグリップをドラッグするとサイズを変更できます。
- メモをダブルクリックするか、Controlキーを押しながらクリックしてメモを編集…を選ぶと、テキストを変更できます。
- Controlキーを押しながらクリックしてメモを削除を選ぶと、メモが削除されます。
テンプレートでは、どのリクエストを選ぶかをメモで案内しています。
取り消しと保存
キャンバスとインスペクタでの変更は、すべて編集 › 取り消す(⌘Z)とやり直す(⇧⌘Z)で取り消せます。対象は、追加、移動、接続、削除、設定、メモ、整頓です。
フローを自分で保存する必要はありません。Echolotは最後の変更の少し後にファイルを書き込みます。それまでは名前の横に編集済みと表示されます。保存に失敗した場合、Echolotは理由を表示し、再試行、変更内容を破棄(ディスク上のファイルの状態に戻す)、編集を続けるを提示します。保存されるまで、編集内容はキャンバス上に残ります。
問題
Echolotは、編集中のフローをチェックします。ツールバーに問題の数が表示されます。クリックすると一覧が開き、問題をクリックするとそのブロックが選択されます。問題のあるブロックには警告マークが付き、そのインスペクタに問題が一覧表示されます。
エラーがあるとフローは実行できません。開始ブロックがない、必須の設定が空(リクエストのないリクエストブロックなど)、存在しないリクエストやフローを指している、接続が循環している、といったものです。警告があっても実行できます。たとえば、何も接続されておらず実行されないブロックなどです。何かをやり直したいときは、接続を循環させず、繰り返す、各項目を繰り返す、ポーリングを使ってください。
入力と出力
入力は、実行を開始するときの値です。何も選択していない状態でインスペクタに追加します。入力の横の+をクリックし、名前を入力して型(any、text、number、bool、object、list、secret)を選びます。開始ブロックには、入力ごとに1つの出力と、すべての入力を1つのオブジェクトとして送るrunが追加されます。
入力は、実行シート、echolot flow runの--inputオプション、エージェントのツール呼び出し、Webhookのクエリ文字列とJSONボディから渡されます。テキストは入力の型に変換されます。3は数値に、trueとyesは真偽値に、JSONテキストはオブジェクトまたはリストになります。secret型の入力は、実行ログとエージェントに見える内容では隠されます。
デフォルト値、説明、入力が必須かどうかは、フローのファイルで設定します([[inputs]]テーブルのdefault、description、required。ワークスペースのファイルを参照)。実行シートでは、説明がフィールドのプレースホルダとして表示され、デフォルト値が入力済みになります。
出力ブロックは、実行が返す内容を保持します。返す先は、フローを呼び出したエージェント、echolot flow run、Webhookの呼び出し元、または親フローのフローブロックです。出力ブロックは、1つのフローに最大1つです。
フローを実行して様子を見る
実行をクリックするか、⌘Rを押します。入力があるフローでは、最初にシートが開いて入力を埋めます。空のフィールドには、その入力のデフォルト値が使われます。フローが保存され、ウインドウのアクティブな環境で実行されます。フローにエラーがある間は、実行は使えません。
実行中は、次のようになります。
- 各ブロックの枠線が状態を示します。実行中またはあなたの操作待ち、成功(緑)、失敗(赤)です。
- 実行ログがキャンバスの下に開きます。各ブロックが終了するたびに、その時間、ログ行、テスト結果(ヘッダーのテスト 3/3)、実行の終わり方が一覧表示されます。行をクリックすると、そのブロックが選択されます。
- あなたに確認するブロック(確認、表示して待機、承認)は、シートを開きます。人の操作のブロックを参照してください。
- 停止(⌘.)が実行の代わりに表示され、実行を終了します。画面に出ている質問は消えます。
実行が終わったら、ブロックを選択すると、インスペクタに前回の実行が表示されます。かかった時間と、表示の下にポートごとの入力値と出力値が出ます。抽出ブロックやテンプレートに使う値のパスを調べるのに役立ちます。

以前の実行はウインドウ内に残ります。サイドバーの(フロー名)の実行で実行をクリックするか、ツールバーの実行から選ぶと、キャンバスに再び表示されます。そのメニューのキャンバスを消去、または実行ログの消去で、実行状態が消えます。実行が失敗し、Macのオンデバイスモデルが利用できる場合は、実行ログのヘッダーにあるボタンで失敗の理由を説明してもらえます。
保護された環境がアクティブなときは、ボタンがProductionで実行…と表示され、Echolotは実行を開始する前に1回確認します。
実行、スケジュール、Webhook、エージェント、コマンドラインについては、実行とトリガーを参照してください。 手順に沿った例は、フローで自動化するにあります。
キーボードショートカット
| ショートカット | 操作 |
|---|---|
| ⌘5 | フローモジュールを表示する |
| ⌘R | フローを実行する |
| ⌘. | 実行を停止する |
| ⇧⌘B | ブロックを追加する |
| ⌘D | 選択したブロックを複製する |
| ⌥⌘0 | フロー全体を表示する |
| ⌘C、⌘X、⌘V | ブロックをコピー、カット、ペーストする |
| ⌫ | 選択したものを削除する |
| ⌘Z、⇧⌘Z | 取り消す、やり直す |
| 矢印キー | その方向にいちばん近いブロックを選択する |
| Esc | 選択を解除する |


