Skip to main content

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

Info

古い difyctl が catalog_stale(The request was built from a catalog that is not this server's current catalog)で失敗するようになった場合、Dify サーバーはすでに 1.18.0 以降に移行しています。

新しいビルドへの切り替え#

新しいビルドのインストール

サーバーに合った difyctl を インストール します。

CI イメージ内など、ほかの場所にある古いビルドのコピーもすべて削除します。新しいビルドでサインインした後に古いビルドの auth logout を実行すると、新しいビルドの保存済みトークンが削除されることがあります。その場合は、もう一度サインインが必要です。

1.17.x 以前のサーバー用に、古いビルドも引き続き必要になることがあります。たとえば、ステージング環境を先に移行し、本番環境はまだ移行していない場合です。そのときは、DIFYCTL_PREFIX で古いビルドを専用のフォルダにインストールし、専用の設定フォルダを指定して実行します。この設定フォルダは最初は空なので、そこで古いビルドでもう一度サインインします:

再サインイン

difyctl describe account で、サインインできたことを確認します。

サインインのオプションと、新しいビルドがトークンを保存する場所については、サインインの管理 を参照してください。CI ジョブでサインインする方法は、CI と自動化での difyctl の使用 を参照してください。

古いセッションの終了

新しいビルドでサインインしても、サーバー上にある古いビルドのセッションは終了しません。このセッションは、既定では最大 14 日間有効です。共有マシンを使っている場合や設定フォルダをコピーした場合など、古いトークンがほかの人の手に渡っている可能性があるときは、すぐに終了させてください。そうでなければ、期限切れになるまでそのままにしてもかまいません。

終了するには、セッションを一覧表示し、difyctl on <your-machine-name> というラベルのセッションを削除します。新しいセッションのラベルは、マシン名だけです。削除時に確認は求められないため、実行前に ID をよく確認してください。

difyctl スキルの再インストール

Claude Code や Codex などのコーディングエージェントが difyctl スキル経由で difyctl を使っている場合は、スキルを再インストールしてください。問題がなさそうに見えても、再インストールは必要です。

古いビルドの skills install --yes は、検出したすべてのコーディングエージェントに difyctl スキルをインストールしていました。次のフォルダのうち、どれが存在するかを確認します:

install skills が difyctl スキルを置き換えるのは、引数に指定したスキルフォルダだけです。引き続き使うコーディングエージェントごとに実行し、残りのスキルフォルダからは difyctl フォルダを削除します:

古い skills install <dir> は、SKILL.md を <dir> の直下に書き込んでいました。コーディングエージェントのスキルフォルダを指定していた場合は、そこに残っている ~/.claude/skills/SKILL.md などのファイルを削除します。

コーディングエージェントが difyctl を使うために必要なその他の準備については、コーディングエージェントのセットアップ を参照してください。

古いコマンドの置き換え#

ほとんどのコマンドは、ID などの値を位置引数ではなく、--app-id のような名前付きフラグで受け取るようになりました。

各コマンドで使えるフラグをすべて確認するには、difyctl help <command> を実行します。

残っているグローバルフラグは --verbose、--json、--help の 3 つだけです。-v、-y、-w などの短縮フラグは廃止されました。--verbose は、エラーにサーバーの生のレスポンスを追加するだけになりました。確認を求めるコマンドはないため、--yes は削除してください。

サインインとセッション#

古いビルド新しいビルド備考
auth login --host <url>login --server <url>--server は必須。--no-browser と --insecure は引き続き使える。
auth whoamidescribe account
auth logoutlogout
auth devices listget account session
auth devices revoke <id>delete account session --session-id <id>--all はない。複数のセッションを終了するには、セッションごとに 1 回ずつ実行する。
auth list、use host、use accountなしサインインは設定フォルダごとに 1 つ。複数のサーバーを使うには、DIFY_CONFIG_DIR でサーバーごとに別の設定フォルダを指定する。アカウントを切り替えるには、サインインし直す。

アプリ#

古いビルド新しいビルド備考
get appget console_app--mode、--name、--page、--limit は引き続き使える。
describe app <id>、get app <id>describe console_app --app-id <id>
run app <id> "<message>"(チャットボット、レガシー Agent アプリ)run console_app chat --app-id <id> --query "<message>"
run app(Chatflow アプリ)run console_app advanced_chat --app-id <id> --query "<message>"
run app(テキストジェネレーター)run console_app completion --app-id <id>
run app(Workflow アプリ)run console_app workflow --app-id <id> --inputs '{…}'
--inputs-file <file>--inputs @<file>
--file <key>=@<path>--files '{"<key>":"<path>"}'Web 上のファイルは --inputs で渡す。
--conversation <id>--conversation-id <id>
--stream--stream生の JSON イベントを出力するようになった。--only <event> で絞り込める。
--think、--retry-on-limitなし

アプリの種類がわからない場合は、describe console_app で確認できます。

チャットボットの実行と、ファイルから入力を渡す Workflow アプリの実行は、次のように変わります:

人間の入力#

人間の入力を待って停止した実行は、"paused" ではなく "status": "suspended" を返すようになりました。paused を確認しているスクリプトは更新してください。この結果の hints には、アクションごとの submit run form コマンドが含まれており、フォームトークンも入力済みです。

フォームを自分で送信する場合、resume app は submit run form に変わります:

resume app と違い、submit run form は実行を追跡しません。実行の続きを取得するには、返されたヒントの get run event を実行します。

DSL のエクスポートとインポート#

古いビルド新しいビルド備考
export studio-app <id>export console_app dsl --app-id <id>YAML をそのままではなく、JSON に包んで出力する。
import studio-app --from-file <file>import console_app dsl --mode yaml-content --yaml-content "$(cat <file>)"
import studio-app --from-url <url>import console_app dsl --mode yaml-url --yaml-url <url>

エクスポートをファイルに保存するには、.data を取り出します:

古いビルドは保留中のインポートを自動で確定していましたが、新しいビルドは確定しません。ファイルの DSL バージョンがサーバーより新しい場合や、メジャーバージョンが古い場合、インポートは保留中になります。ファイルを信頼できる場合は、confirm console_app dsl_import --import-id <import-id> でインポートを完了します。

古いビルドは、インポート後に不足している統合も一覧表示していました。現在は、check console_app dependency を実行して確認します。

ワークスペースとメンバー#

古いビルド新しいビルド備考
get workspace Cloudget workspace現在のワークスペースは示されなくなった。difyctl が使用中のワークスペースは describe workspace で確認する。
use workspace [<id>] Clouduse workspace <id>ID の指定が必須になった。切り替えても、ブラウザのワークスペースは変わらなくなった。サインインし直すか DIFY_WORKSPACE_ID を設定する と、切り替えは上書きされる。
--workspace <id>、-w <id> Cloud--workspace-id <id>get console_app など、ワークスペース内で動作するコマンドでのみ使える。
get app -A、get app --all-workspaces Cloudなしget workspace を実行し、ワークスペースごとに get console_app --workspace-id <id> を実行する。
get memberget workspace member
create memberinvite workspace member
set memberset workspace member_role
delete memberdelete workspace member

設定、difyctl スキル、ヘルプ、バージョン#

古いビルド新しいビルド備考
config get、config view、config pathget config [<key>]設定の保存先パスも表示する。
config setset config残っている設定項目は http.timeout だけ。
config unsetunset config
env listなしdifyctl が読み取る変数については、環境変数 を参照。
skills installinstall skills <skills-root>コーディングエージェントごとの再インストール方法は、新しいビルドへの切り替え の手順 4 を参照。
--short、--client、--check-compat、-o を付けた versionversionフラグを受け付けない。
help -o json --compact、help <command> -o jsonhelp、help <command>スクリプト内などでパイプした場合は JSON を出力する。

スクリプトのその他の更新#

JSON 形式での結果の読み取り#

結果は常に JSON で出力されるようになり、-o は不明なフラグとしてエラーになります。スクリプトから -o json を削除してください。

-o name や -o yaml など、別の形式を指定していたスクリプトでは、jq などを使って JSON を自分で整形します。チャットボットの応答だけをテキストとして取り出すには、次のようにします:

スクリプトでは DIFY_OUTPUT=json を設定するか --json を渡して、どこで実行してもエラーが JSON で出力されるようにします。設定しない場合、stderr に出力されるエラーは、パイプでは JSON、ターミナルではテキストになります。

新しい終了コードとエラーコードへの対応#

終了コードの番号はそのままですが、次の 2 つの変更があります:

  • 6 は、difyctl がサーバー上でコマンドを見つけられなかったことを表すようになりました。サーバーのコマンド一覧を取得できなかった場合と、入力した内容に一致するコマンドが一覧にない場合です。以前はバージョンの不一致を表していました。
  • 64 は、version --check-compat とともに廃止されました。

スクリプトでエラーコードによって分岐している場合は、次のように対応します:

  • server_4xx_other と server_5xx は server_error に置き換え、あわせて返される HTTP ステータスを確認します。
  • token_expired と expired_token は、終了コード 4 で終了する auth_expired に置き換えます。
  • version_skew、unsupported_endpoint、client_error、illegal_argument、config_schema_unsupported の分岐は削除します。

input_invalid や catalog_unavailable など、新しいコードの意味については、結果、エラー、終了コード を参照してください。

スクリプトでのリトライ#

新しいビルドは、失敗したリクエストをリトライしません。--http-retry も廃止されました。リトライを前提としていたスクリプトには、独自のリトライ処理を追加してください。どのコマンドなら安全にリトライできるかについては、失敗したコマンドのリトライ を参照してください。

環境変数の更新#

スクリプトと CI の設定から、次の環境変数を削除します:

  • DIFY_LIMIT:代わりに --limit を渡します。
  • DIFYCTL_HTTP_RETRY:代替手段はありません。
  • DIFYCTL_NO_COLOR:代わりに NO_COLOR を使用します。
  • DIFY_CACHE_DIR:キャッシュは設定フォルダに保存されるようになったため、DIFY_CONFIG_DIR だけで足ります。

DIFY_CONFIG_DIR と DIFY_WORKSPACE_ID は、これまでどおり使えます。

新しいビルドが読み取るすべての環境変数については、環境変数 を参照してください。