Skip to main content

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

difyctl version を実行すると、現在の difyctl のビルドと、それが Dify サーバーで動作するかどうかを確認できます。このコマンドはクライアントのビルドを表示し、アクティブなホストを探査して、互換性の判定 を報告します。

スクリプトでは、--check-compat がその判定を終了コードに変換します。

クライアントとサーバーのバージョンを確認#

フラグ#

フラグ型デフォルト説明
--shortbooleanfalseクライアントの semver のみを表示し(サーバー探査なし)、終了する。
--clientbooleanfalseサーバー探査をスキップし、判定を unknown として報告する。
--check-compatbooleanfalse判定が compatible でない限り 64 で終了する。
-o <format>stringtext出力形式:text、json、yaml。

例#

完全なレポートを表示します。

スクリプトやバグレポート向けに、クライアントのバージョンのみを表示します。

出力#

形式stdout に出力される内容
デフォルト(text)完全なレポート:Client ブロック、Server ブロック、1 行の Compatibility 判定。stable 以外のチャンネルのビルドでは、stable チャンネルを推奨する警告が追加される。
-o json、-o yaml同じレポートを 3 つのオブジェクトとして出力:
  • client(version、commit、buildDate、channel、platform、arch)
  • server(endpoint、reachable、成功時は version と edition)
  • compat(minDify、maxDify、status、detail)

デフォルトの text レポート:

--short はクライアントの semver のみを表示します。

-o json:

サーバーが到達不能でも互換性がなくても、このコマンドは 0 で終了します。判定はエラーではなく、レポートそのものです。スクリプトで終了コードに変換するには、下記の --check-compat を使用します。他のコマンドは判定に応じて動作します。詳しくは 互換性のないサーバーに対するコマンドの動作 を参照してください。

終了コード#

コード意味
0判定の内容にかかわらず、レポートが表示された
64--check-compat 使用時:判定が compatible ではなかった

完全な体系については 出力形式と終了コード を参照してください。

互換性の判定#

difyctl version はビルドをサーバーのバージョンと比較し、4 種類の判定のいずれかを報告します。サインインは不要ですが、探査の対象として保存済みのホストが必要です。

text レポートでは、判定は下表の「表示」列のラベルとして Compatibility: 行に出力されます。-o json では status フィールドに判定名が入ります。

判定表示意味
compatibleokサーバーのバージョンが、このビルドのサポート範囲内にある。
too_oldincompatible (server too old)サーバーのバージョンが、このビルドがサポートする最小バージョンより古い。
too_newincompatible (server too new)サーバーのバージョンが、このビルドがテスト済みの最大バージョンより新しい。
unknownunknown判定なし:ホストが未設定、サーバーが到達不能、--client で探査をスキップ、またはサーバーのバージョンが解析できなかった。

detail フィールドは、どのケースに該当するかを示します。例:server 1.14.0 is older than the minimum 1.16.0 または server 1.16.0 in [1.16.0, 1.16.0]。

互換性のないサーバーに対するコマンドの動作#

difyctl version は判定を報告するだけです。サーバーに接続するすべてのコマンドは実行前に判定に従って動作するため、too_old のサーバーでは、バージョンの不一致を解消するまでこれらのコマンドは実行できません。

  • too_old:コマンドは実際の処理を行う前に終了コード 6 で停止し、Dify サーバーをこのビルドがサポートする最小バージョン以上にアップグレードする(または、サーバーに合う difyctl をインストールする)よう促します。
  • too_new:コマンドはそのまま実行されます。対話的な端末かつテキスト出力の場合は、stderr に 1 行の警告も表示されます(スロットリングされ、毎回は出ません)。
  • unknown:判定できないため、コマンドはそのまま実行されます。

最小バージョンを満たすサーバー(compatible または too_new)はホストごとに約 1 時間キャッシュされるため、このブロックチェックはコマンドごとに繰り返されません。too_old のサーバーはキャッシュされないため毎回再確認され、サーバーをアップグレードするとすぐに正常化します。

auth login でのサインイン時にも、セッションを保存する前に同じ確認が実行されます。そのため、バージョンの不一致は最初のコマンド実行時ではなく、サインイン時に判明します。

この確認は双方向に行われます。上記の判定は difyctl がサーバーを判断したものですが、サーバーも difyctl を判断します。

クライアントがサーバーの受け入れるバージョンより古い場合、サーバーはリクエストを HTTP 426 で拒否し、difyctl は終了コード 6 で終了してアップグレードを促します。Dify サーバーをアップグレードすると古い difyctl が動作しなくなるのはこのためです。クライアント自身による新しいサーバーへの判定が警告にとどまる場合でも、サーバーは古いクライアントを拒否します。

そのため最も確実なのは difyctl をサーバーに合ったバージョンに保つことです。新しいサーバーは警告付きで許容されますが、古いサーバーは拒否されます。

スクリプトを互換性でゲートする#

--check-compat は判定をスクリプトで扱えるようにします。compatible 以外はすべて、unknown のあらゆるケースを含め、64 で終了します。difyctl version は毎回サーバーをライブで探査し、互換性キャッシュを読み取ることはありません。そのため、スクリプトのゲートはサーバーの現在のバージョンを反映します。このフラグは判定を終了コードに変換するだけです。

完全なレポートは選択した形式で stdout に出力され、1 行の理由は stderr に出力されます。そのため、どちらの結果でも difyctl version -o json --check-compat | jq は同じように動作します。

終了コード 64 はこの flag に固有のものです。difyctl の他の失敗でこのコードが使われることはありません。