difyctl version を実行すると、現在の difyctl のビルドと、それが Dify サーバーで動作するかどうかを確認できます。このコマンドはクライアントのビルドを表示し、アクティブなホストを探査して、互換性の判定 を報告します。
スクリプトでは、--check-compat がその判定を終了コードに変換します。
クライアントとサーバーのバージョンを確認
フラグ
例
完全なレポートを表示します。出力
デフォルトの
text レポート:
--short はクライアントの semver のみを表示します。
-o json:
0 で終了します。判定はエラーではなく、レポートそのものです。終了コードに変換するには後述の --check-compat を使います。他のコマンドは判定に基づいて動作します。詳細は 互換性のないサーバーに対するコマンドの動作 を参照してください。
終了コード
完全な体系については 出力形式と終了コード を参照してください。
互換性の判定
difyctl version はビルドをサーバーのバージョンと比較し、4 種類の判定のいずれかを報告します。サインインは不要ですが、探査の対象として保存済みのホストが必要です。
text レポートは Compatibility: 行に 表示 列のラベルを表示します。-o json では判定名が status に入ります。
detail フィールドは具体的なケースを示します。例:server 1.14.0 is older than the minimum 1.16.0、server 1.16.1 in [1.16.0, 1.16.1]。
互換性のないサーバーに対するコマンドの動作
difyctl version は判定を報告するだけです。サーバーと通信する各コマンドは実行前に判定に基づいて動作するため、too_old のサーバーでは、バージョン不一致を解消するまでそれらのコマンドは停止します:
too_old:コマンドは処理前に終了コード6で停止します。Dify サーバーをこのビルドがサポートする最低バージョン以上にアップグレードするか、サーバーに合ったdifyctlをインストール してください。too_new:コマンドは実行されます。対話型ターミナルかつ text 出力の場合は、頻度制限付きの 1 行警告が stderr にも出力されます。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 は常にサーバーをリアルタイムで探査し、互換性キャッシュを読むことはありません。スクリプトのゲートは現在のバージョンを反映し、この flag は判定を終了コードに変換するだけです。
完全なレポートは選択した形式で stdout に出力され、1 行の理由は stderr に出力されます。そのため、どちらの結果でも difyctl version -o json --check-compat | jq は同じように動作します。
64 はこの flag に固有のものです。difyctl の他の失敗でこのコードが使われることはありません。