このドキュメントは 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 にエラーを出力します。存在しないアプリ 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"のようにフラグと理由が入ります。
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 に設定すると、上限を無効にできます。