Echolot
フロー

実行とトリガー

フローを手動、スケジュール、Webhook、AIエージェント用のツール、コマンドラインから実行する方法と、あなたの操作なしでフローを開始するトリガーを許可する方法を説明します。

フローは、何かが開始したときに実行されます。あなたが実行ボタンで開始するほか、フローをツールとして提供したときはAIエージェント、スケジュール、Webhook、ターミナルやCIでのecholot flow runが開始します。何が開始しても、すべてのリクエストはリクエストページから送信する場合と同じ経路を通ります。

手動で実行する

  1. フローのページでフローを開きます。
  2. ツールバーの実行をクリックするか、⌘Rを押します。
  3. フローに入力がある場合は、フローの名前が付いた実行シートで入力を求められます。各フィールドには入力の名前、型、必須かどうかが表示され、最初からデフォルト値が入っています。デフォルト値を使うフィールドは空のままにして、実行をクリックします。

フローが最初に保存されるので、実行にはキャンバス上の内容が使われます。ウインドウのアクティブな環境で実行されます。フローにエラーがある間は、実行は使えません。ツールチップには「先にフローの問題を修正してください」と表示されます。

保護された環境がアクティブなときは、ボタンがProductionで実行…(その環境の名前が入ります)と表示され、Echolotは実行を開始する前に1回確認します。実行の中のリクエストでは、再度確認されません。

実行ビュー

フローの実行中は、ブロックの状態がキャンバスに表示され、その下に実行ログが開きます。

キャンバス上の表示意味
アクセントカラーの枠線ブロックが実行中、またはあなたの操作を待っています。
緑の枠線ブロックが完了しました。
赤の枠線ブロックが失敗しました。

実行ログには、次の内容が順に一覧表示されます。

  • 終了した各ブロックと、その時間
  • ログブロックの行と、評価ブロック内のconsole.log
  • アサートブロックとpm.testのテスト結果(ヘッダーにテストの成功数/総数)
  • エラー(赤)
  • 実行の終わり方: Finished in 1.2 s、Stopped in …、理由付きのFailed in …に当たる表示(アプリでは日本語で表示されます)

行をクリックすると、そのブロックが選択されます。任意のブロックを選択すると、インスペクタにそのブロックの前回の実行が表示され、ポートごとの入力値と出力値を確認できます。消去はログとキャンバスの状態を空にします。閉じるボタンでログが隠れ、ツールバーの実行ログでもう一度表示できます。

実行中は、実行の代わりに停止(⌘.)が表示されます。これで実行を終了し、送信中のリクエストを閉じ、画面に出ている質問を取り除きます。

実行が失敗し、Macのオンデバイスモデルが利用できる場合は、ログのヘッダーにあるボタンで、ログをもとに失敗の理由を説明してもらえます。

以前の実行

ウインドウには、開いているフローの直近20回の実行が保持されます。スケジュールやWebhookが開始した実行も含まれます。サイドバーの(フロー名)の実行(終わり方、開始時刻、かかった時間が付きます)と、ツールバーの実行メニューに一覧表示されます。1つクリックすると、ブロックの状態と各ブロックの前回の実行がキャンバスに再び表示されます。実行メニューのキャンバスを消去で、キャンバスから消えます。

実行の記録はウインドウ内にだけ残ります。フローが送信したリクエストは、ほかの送信と同じように、ワークスペースの履歴に残ります。

トリガー

開始ブロックを選択すると、インスペクタにフローのトリガーが表示されます。「実行」ボタンとecholot flow runは常にオンです。ほかのトリガーは、チェックを入れて追加します。

  • エージェント(MCPツール)
  • スケジュール
  • Webhook

開始ブロックには、オンになっているトリガーごとに小さなアイコンが表示され、サイドバーではフローの名前の下に表示されます。

Order status on webhookの開始ブロックのインスペクタ。トリガーのセクションでWebhookにチェックが入り、メソッドPOSTとパス/order-status、URLをコピーとトークンをコピーが付いたローカルアドレス、許可済みと許可を取り消すが表示されている

トリガーを許可する

エージェント、スケジュール、Webhookは、あなたがキャンバスの前にいないときにフローを開始します。そのため、それぞれについて、このフローに対するあなたの許可も必要です。チェックを入れた各トリガーの下で、許可をクリックします。トリガーに許可済みと許可を取り消すボタンが表示されます。

許可の対象は、現在の状態のフローです。フロー自体、フローが送信するリクエストとその上位のフォルダ、ワークスペースの変数、認証、プロキシ、証明書、フローが実行するフローが含まれます。キャンバス上でも、Gitでも、エージェントによっても、これらのどれかを変更すると、再び許可するまでトリガーは止まります。このとき「許可した後にフローが変更されました。」と表示され、再び許可が提示されます。フローが自分自身を許可することはできません。許可は、ワークスペースではなく、あなたのMac上のEcholotに保存されます。エラーのあるフローは、トリガーから開始されることはありません。

環境の値の変更(たとえば新しいトークン)では、許可は取り消されません。

エージェント: フローをMCPツールにする

フローをAIエージェントに提供すると、EcholotのMCPサーバのツールの1つになります。エージェントは1つのツールを呼び出し、フローがリクエストを行い、シークレットはEcholotの中にとどまります。

  1. 開始ブロックを選択し、エージェント(MCPツール)にチェックを入れます。
  2. ツール名は、別の名前を入力しない限り、flow_にフローのファイル名をアンダースコアでつないだもの(flow_place_test_order)になります。英字、数字、_、-で64文字以内です。
  3. モデルに向けてツールの機能を書きます。最初はフローの説明が入っています。
  4. 許可をクリックします。
  5. 設定 › エージェントをオンにして、クライアントを接続します。AIエージェントを参照してください。

ツールの引数はフローの入力で、結果は出力ブロックが受け取った内容です。Place a test orderはplace_test_orderとして提供されます。フローは、フローツールセットがオンの間(デフォルトでオン)ツール一覧に表示されます。エージェントが開始できるのは、提供され、許可されたフローだけです。

エージェントがフローを開始するとき、Echolotは実行の前に1回、フローが行う内容をあなたに示して確認します。どのアドレスにどのリクエストを送信するか、どの変数とシークレットを保存するか、どのファイルを書き込むか、どのツールとフローを実行するか、どこで人に確認するか、です。実行の中では、承認した内容は再度確認されずに実行されます。ただし、保護された環境、新しいホスト、削除は引き続き確認され、エージェント自身のルールが拒否するものも同様です。

エージェントが開始したフローの人の操作のブロックは、エージェントのクライアントに届きます。クライアントがメッセージ、コード、リンクを表示するか、値を尋ねます。承認ブロックは常にあなたのものです。エージェントが承認ブロックに答えようとすると、Echolotはまずあなたに確認します。

アシスタントも、同じ方法でフローを実行します。

スケジュール

フローを、数分おき、またはカレンダーに従って、自動で実行します。

  1. 開始ブロックを選択し、スケジュールにチェックを入れます。最初は60分ごとになっています。
  2. 間隔を選んで間隔 … 分に入力するか、時刻を指定(cron)を選んでcron式(分、時、日、月、曜日)を入力します。スケジュールはどちらか一方で、実行は最大でも1分に1回です。
  3. 許可をクリックします。

許可されると、インスペクタに次回の実行とその日時が表示されます。スケジュールされた実行は、ワークスペースのウインドウが開いている間に、実行時点のウインドウのアクティブな環境で行われ、入力のデフォルト値で開始されます。Macがスリープしていた間やウインドウを閉じていた間に実行されなかった分は、Echolotが次に確認したときに1回実行されます。実行中のフローが再び開始されることはありません。スケジュールされた実行が失敗すると、通知が表示されます。アプリなしでスケジュールを実行するには、echolot flow serveを使います。

cron式は5つのフィールドで、Macのタイムゾーンで解釈されます。分(0–59)、時(0–23)、日(1–31)、月(1–12またはjan–dec)、曜日(0–7またはsun–sat。0と7は日曜日)です。各フィールドには、*、数値、範囲(1-5)、リスト(1,15)、ステップ(*/15、8-18/2)を指定できます。日と曜日の両方を指定した場合は、どちらか一方に一致すれば実行されます。

cron式実行されるタイミング
0 6 * * *毎日6:00(Morning stock check)。
0 7 * * 1-5平日の7:00。
*/15 8-18 * * *8:00から18:45まで15分ごと。
0 9 1 * *毎月1日の9:00。

スケジュールされた実行では、人の操作のブロックは誰にも確認できないため、失敗します。

Webhook

ローカルアドレスにリクエストが送られたときに、フローを開始します。

  1. 開始ブロックを選択し、Webhookにチェックを入れます。
  2. メソッド(GET、POST、PUT、PATCH、DELETE。デフォルトはPOST)と、/で始まるパスを選びます。パスは最初、/にフローのファイル名を付けたものになっています。
  3. 許可をクリックします。

許可されると、インスペクタにPOST http://127.0.0.1:52817/order-statusのようなアドレスが、URLをコピーとトークンをコピーとともに表示されます。Echolotは、ウインドウが開いている間、このMac上(127.0.0.1)だけで待ち受けます。ポートはワークスペースごとに1回選ばれ、そのまま保持されます。

呼び出し元は、ワークスペースのトークンを送る必要があります。トークンはEcholotが初回に作成し、キーチェーンに保存します。次のどれでも使えます。

  • ヘッダーAuthorization: Bearer <token>
  • ヘッダーX-Echolot-Token: <token>
  • クエリパラメータ?token=<token>
curl -X POST http://127.0.0.1:52817/order-status \
  -H "Authorization: Bearer <token>"

Order status on webhookは、サインインして注文を取得し、その注文を返します。クエリ文字列とJSONボディのキーは、同じ名前のフローの入力を埋めます。それ以外のキーは使われません。bodyという名前の入力には、ボディ全体が入ります。そのため、入力orderがあるフローは、?order=ord_7Hk2Lwまたは{"order": "ord_7Hk2Lw"}を受け取れます。実行にはウインドウのアクティブな環境が使われます。

応答条件
出力をJSONにした200実行が成功しました。ボディは出力ブロックが受け取った内容、またはなければnullです。
401トークンがないか、間違っています。
404そのメソッドとパスに応答する許可済みのフローがありません。エラーには応答できるものの一覧が入ります。
413ボディが8 MBを超えています。フローは実行されません。
500実行が失敗しました。ボディにerrorと実行のIDが入ります。
503実行が停止されました。

Webhookの実行は2分で停止します。人の操作のブロックはそこでは誰にも確認できないため、失敗します。

バックグラウンドでの実行

アプリ内でスケジュールやWebhookが開始した実行は、フローを開いている間、フローの(フロー名)の実行に表示されます。失敗した実行では、フローの名前とエラーを示すmacOSの通知が表示されます。これらはあなたが開始した実行と同じ権限で実行されますが、対象は許可したフローだけです。

コマンドラインから実行する

echolotコマンドは、アプリなしで同じフローを実行します。CIでは、これによってフローがリリースのゲートになります。

# フローと、その入力、問題を一覧表示する
echolot flow list -w Alpenglow.echolot

# 1つ実行する。実行またはテストのどれかが失敗するとエラーで終了する
echolot flow run morning-stock-check -w Alpenglow.echolot --env staging --no-input

# 入力をname=valueで渡す(Paginate and exportテンプレートから作ったフロー)
echolot flow run export-products -w Alpenglow.echolot --input pages=5

# スケジュールを実行し、Ctrl-Cまでwebhookに応答する
echolot flow serve -w Alpenglow.echolot --port 4100
  • flow runは、終了した各ブロックを出力し、続けて出力を表示します。--jsonを付けると、代わりに実行の記録を出力します。人の操作のブロックはターミナルで確認します。--no-inputを付けると実行が失敗します。CIではこれが必要です。通知ブロックはテキストを出力します。
  • flow serveは、スケジュールされたフローを時刻になると実行し、ポート4100でWebhookに応答します(--port 0で空いているポートが選ばれます)。--shareはすべてのネットワークインターフェースで待ち受けます。コンテナ向けです。トークンは--tokenから、なければECHOLOT_WEBHOOK_TOKENから、それもなければ新しく作成されて出力されます。
  • コマンドラインでは、実行を自分で開始しているため、フローに許可は不要です。flow serveは、スケジュールまたはWebhookがあり、エラーのないすべてのフローを実行します。

すべてのオプションはecholot flowにあります。

直接ダウンロード版のみ

コマンドラインツールは、ダイレクトダウンロード版に含まれています(Echolot › コマンドラインツールをインストール…)。 App Store版では、リリースページのzipから別途インストールします。

エディションを比較

このページの内容