メインコンテンツへスキップ
このドキュメントは AI によって自動翻訳されています。不正確な部分がある場合は、英語版 を参照してください。

出力先

コマンドの結果は、常に JSON として stdout に出力されます。エラーと通知は stderr に出力されます:
  • エラー:ターミナルではテキストで表示されます。2> errors.log などでファイルや別のプログラムに送る場合は JSON になります。ターミナルでもエラーを JSON で表示するには、--json を付けます。
  • stream ended early: … などの通知:常にプレーンテキストです。

実行結果の読み方

run console_app コマンドの結果には、アプリの回答と、次の操作に必要な ID が含まれます:

実行の終了状態の確認

スクリプトでは、結果の status を確認します。実行が完了しても、一時停止しても、途中で打ち切られても、終了コードはどれも 0 です。違いは status で見分けます:
  • ended:実行が完了したことを表します。
  • suspended:実行が人間の入力フォームで一時停止したことを表します。結果の hints には、アクションボタンごとにコマンドが 1 つずつ含まれます。フォームに回答 するには、選んだアクションのコマンドを実行します。
  • incomplete:Ctrl+C を押した場合など、実行が終わる前に結果が打ち切られたことを表します。結果には、それまでに届いた内容だけが含まれます。Workflow アプリや Chatflow アプリの場合、実行はサーバー上で続きます。実行がどう終わるかを確認するには、結果の run_id を difyctl describe run に渡します。
  • failed(終了コード 1):実行が失敗したか、停止されたことを表します。理由は error.message で確認できます。
失敗した実行も、ほかの実行と同じく結果を stdout に出力し、stderr には何も出力しません。たとえば、必須の入力を渡さずに Workflow アプリを実行した場合は次のようになります:

エラーの読み方

結果を出す前に失敗したコマンドは、stdout には何も出力せず、stderr にエラーを出力します。存在しないアプリ ID を指定した場合、エラーは JSON で次のようになります:
どのエラーにも code と message があります。分岐には code を使います。失敗の内容によっては、エラーに次のフィールドも含まれます:
  • hint:run difyctl help get console_app のように、次に試すことを文で示します。
  • http_status、method、url、server(サーバー側のエラー):サーバーがエラーを返した場合に含まれます。server_error では、http_status または server.code で分岐します。上の例では 404 と not_found です。
  • details:値が difyctl 側の検証に通らなかった場合(input_invalid)に含まれます。失敗したフィールドごとに、"field": "--limit", "msg": "must be integer" のようにフラグと理由が入ります。
ターミナルでは、サーバー側のコードがある場合、エラーの 1 行目にそのコードが表示されます。上の例(存在しないアプリ)では、not_found: app not found と表示されます。スクリプトの分岐に使うコードは、JSON から取得してください。この例の JSON では server_error です。 message だけでは失敗の原因がわからない場合は、--verbose を付けます。サーバーのレスポンス全体が、raw_response として含まれるようになります。

終了コード

すべてのコマンドは、次のいずれかの終了コードで終了します: 終了コードが 1 の場合は、まず stdout を確認します。失敗した実行の結果は stdout に出力されています。それ以外のエラーは stderr に出力されます。 特定のエラーを解決するには、トラブルシューティング を参照してください。

失敗したコマンドのリトライ

get や describe など、読み取りを行うコマンドは安全にリトライできます。help では、各コマンドの説明の横に read、write、destructive のいずれかのラベルが表示されます。 write または destructive のコマンドをリトライする前に、対応する get や describe コマンドなどで、最初の試行が反映されたかどうかを確認してください。アプリの実行は write に分類され、リトライすると新しい実行が開始されます。 終了コード 7 の後は、実行を含め、どのコマンドも安全にリトライできます。レート制限 で拒否されたコマンドは、サーバー側では何も処理されていないためです。 終了コード 2 と 4 は、誤ったフラグや サインインの期限切れ などの原因を解消するまで、何度リトライしても返されます。

レート制限

コマンドが終了コード 7 で終了した場合は、1 分待ってからリトライします。 サインインごとの上限は、既定で 1 分あたり 60 リクエストです。上限を変更するには、サーバーで OPENAPI_RATE_LIMIT_PER_TOKEN を設定します。0 に設定すると、上限を無効にできます。

トラブルシューティング

最終更新日 2026年10月23日