目次
はじめに
Difyをご利用・ご検討中の皆さん、8月も終盤、暑い日が続きますがいかがお過ごしでしょうか?
ディーネットのよろず請負人、深見です。
Dify の最新バージョン v1.17.0 がリリースされ、エージェント機能の大幅な強化と開発者体験の向上が図られました。今回のリリースでは、特にエージェントの実行環境、再利用性、デバッグ機能が注目されます。
詳しく見ていきましょう。
Dify v1.17.0 リリース
Dify の最新バージョン v1.17.0 がリリースされ、エージェント機能の大幅な強化と開発者体験の向上が図られました。今回のリリースでは、特にエージェントの実行環境、再利用性、デバッグ機能が注目されます。
What’s Changed – 主要な変更点
1. エージェント機能の強化: E2B Sandbox、Home Snapshots、スキル管理
-
E2B Sandbox バックエンド: エージェントのシェル/コード実行環境として、従来のローカルサンドボックスに加え、E2B クラウドサンドボックスが利用可能になりました。
DIFY_AGENT_RUNTIME_BACKENDでバックエンドを選択でき、docker-compose.e2b.yamlファイルで E2B スタックが提供されます。E2B トラフィックは認証され、テンプレートも同期されます。これにより、エージェント実行の柔軟性と信頼性が向上します。
※ E2B(https://e2b.dev/)は、AIが生成したコードを安全な隔離環境(サンドボックス)で実行するためのクラウドインフラを提供するサービスです。Difyのようなプラットフォームが裏側の実行環境として組み込む形で利用されるケースが増えています。 -
ビルド時の Home Snapshots: エージェントのビルドが適用(公開)される際、エージェントのサンドボックスホームディレクトリ(インストールされたパッケージ、準備されたファイル、作業状態)がスナップショットとしてキャプチャされるようになりました。公開されたエージェントの実行時にはこのスナップショットからホームディレクトリが復元されるため、エージェントはビルド時の正確なファイルシステム状態から開始できます。これにより、エージェントの再現性と安定性が大幅に向上します。
-
ワークスペースレベルのスキル管理: スキルは、コードとツール定義がパッケージ化された再利用可能でバージョン管理された機能であり、エージェントが発見・呼び出しできるようになります。ドラフト→公開→バージョンというライフサイクルを持つ新しいワークスペースレベルのスキルマネージャーが、ウェブUI(スキルリスト、ビルダーパネル、ファイルエディタ)とともに提供されます。これにより、エージェントの機能拡張と再利用が容易になります。
-
コンテキスト認識型履歴圧縮: 長いエージェントの会話がモデルのコンテキストウィンドウを肥大化させるのを防ぐため、Dify は各モデルの有効なウィンドウを解決し、コンテキスト圧縮を段階的に行います(まず古いツール結果をクリアし、次に古い履歴を要約する)。これにより、最新のコンテキストを失うことなく、予算内で実行を維持できます。
2. ワークフローにおける再利用可能なLLM環境変数
- プロバイダー/モデル/モード/パラメータの設定(例:
for_summarize,for_research)を一度定義し、任意のLLMノードから参照できるようになりました。これにより、モデルの変更が連携して一箇所で行えるようになり、DSLのインポート/エクスポート、スニペット、RAGパイプライン、共同編集においても参照が維持されます。
3. ループおよびイテレーションにおける人間入力
- Human-in-the-loop フォームがループおよびイテレーションノード内で機能するようになり、デバッグアプリとインストール済みアプリの両方でページ更新をまたいで正しく一時停止および再開できます。これにより、反復作業内でのレビュー/承認ステップが可能になります。
4. プロバイダーに依存しない統合トレーシング
- オプトインの統合トレーシング(
OPS_TRACE_UNIFIED_ENABLED)により、コアで完全な親子スパンツリー(ワークフロー、チャットフロー、メッセージ、ノード、ループ、イテレーション、ネストされたワークフロー)が一度アセンブルされ、転送のみが軽量アダプターに委譲されます。Phoenix および LangSmith アダプターが最初に提供され、デフォルトで無効になっていますが、完全に下位互換性があります。 - 新しい GenAI スパンは、LLM の TTFT(Time To First Token)、エージェントの ReAct ステップ、ツール呼び出し、失敗した LLM ノードを可視化し、より深い可観測性を提供します。
5. Cloudflare Turnstile (CAPTCHA) サポート
- サインインおよびメールコードログイン時にオプションで Turnstile チャレンジを有効にできるようになり、認証エンドポイントの悪用を防ぎます。サイト/シークレットキーと許可されるホスト名を構成できます。
6. Azure Key Vault / プラグ可能なKMS
- キープロビジョニング、暗号化、復号化、キーローテーション設定のための KMS プロバイダー抽象化が導入され、Azure Key Vault がサポートされます。これは外部管理された暗号化キーへの一歩となります。
7. TiDB Vector 全文検索とハイブリッド検索
- TiDB Vector デプロイメントで全文検索とハイブリッド検索(
TIDB_VECTOR_ENABLE_FULLTEXT_SEARCH, デフォルトオフ)を有効にできるようになりました。多言語全文インデックスとベクトル検索を併用できます。
8. モデルおよびファイル処理の拡張
- LLM ノードとエージェントが画像ファイルをマルチモーダルモデルに直接渡せるようになり、非ビジョンアタッチメントがエージェントチャットから黙って削除されることがなくなりました。
- 新しいマルチモーダル検索ガイダンスにより、ユーザーは画像を含むナレッジベースに対して適切な埋め込みモデルを正確に選択できます。
- 音声 ASR が
audio/x-m4aを受け入れるようになり、音声 MIME タイプがより正確に検証されます。
9. Go to Anything (⌘K / Ctrl+K)
- コンソール内のどこからでも ⌘K(Windows/Linux では Ctrl+K)を押すことで、コマンドパレットを開き、アプリ、エージェント、スキル、ナレッジベース、プラグイン、ワークフローノードにジャンプしたり、スラッシュコマンドを介してクイックアクションをトリガーしたりできるようになりました。このリリースでは、エージェントとスキルが検索可能になり、アイコンコマンドシステムが一貫性のためにすべてのドメインでリファクタリングされました。
10. その他の追加機能
- ODT (OpenDocument Text) ドキュメント抽出をサポート。
- ツールプラグインに新しい日付 / 日付ピッカーパラメータタイプを追加。
- ラオ語 (lo-LA) をサポート。
- 古い会話の自動クリーンアップタスク(
ENABLE_CONVERSATION_CLEANUP_TASK)により、データ増加を抑制。 - マーケットプレイスを統合カテゴリに直接組み込み、ツール/プラグインの発見をスムーズに。
改善点
アクセシビリティ (大規模な a11y パス)
- コンソールがキーボードやスクリーンリーダーで使いやすくなるように、多くの変更が加えられました。ボタンのセマンティクスの改善、アイコンのみのアクション(コピー、閉じる、削除、メニュー)のアクセシブルな名前付け、認証/インストールページの主要な見出し、キーボードでアクセス可能なメンバー/ツールセレクター、正しいARIA状態などが含まれます。
ワークフロー作成
- ワークフロージェネレーターがノードを提案する際に、すでにインストールされ構成されているツールを優先するようになりました。
ワークフローとランタイムの安定性
- 再現可能なウェブワークフロー実行、履歴更新後のキャンバス状態の保持、リフレッシュによるレンダリングループの解消、SSEストリームのクリーンな終了。
- ストリーミング以外のノード間での停止が尊重され、一時停止したワークフローが古いキャンセルシグナルを正しくクリアするようになりました。
APP_MAX_EXECUTION_TIMEおよびWORKFLOW_MAX_EXECUTION_TIMEのデフォルト値が 1200秒から 3600秒に引き上げられ、長時間実行されるワークフローに対応。
内部品質
- 単体テストの大部分を実際のORMモデル/SQLiteセッションに移行し、より信頼性の高いカバレッジを実現。移行されたテスト全体でより厳密な型付けが適用されました。
セキュリティ強化
- 認証の強化: ログイン/メールコードフローでのTurnstileチャレンジ、試行制限とトークン有効期限(
EMAIL_CODE_LOGIN_MAX_ATTEMPTS,EMAIL_CODE_LOGIN_TOKEN_EXPIRY_MINUTES)によるメールコード認証の強化、停止されたメールアドレスドメインの処理、短命のエージェント認証トークン。 - アクセス制御/所有権スコープ設定: データセット、ドキュメント、RAG、会話、ワークスペースクレデンシャル、OAuthクライアントのリソースが、所有者とアプリのスコープに一貫してバインドされ、いくつかの不正アクセスパスが閉じられました。
- SSRFおよびアウトバウンドの強化: アウトバウンドHTTP接続フェーズが制限され(5秒)、エージェント/バインディングのダウンロードおよび実行タイムアウトが設定可能になり、SSRFブロックのエラーメッセージが正しい問題箇所を指すようになりました。
選択されたバグ修正
- Redis Streams での
workflow_startedイベントのドロップや、置き換えられた実行からのドロップ/重複実行を防止。 - ワークフローのタイムスタンプを naive UTC に正規化し、失敗、キャンセル、中断された実行のスナップショット/履歴を保持。
- クロスウェブチャットの会話切り替えを防止し、エージェントチャットで非ビジョンアタッチメントがドロップされるのを停止。
- Qwen/VL システムメッセージの順序を修正し、システムメッセージを最初にマージ。
- Elasticsearch-JA アダプターの
document_idマッピングとVectorTypeを修正。空の Bedrock スキーマフィールドを回避。 - すべての nginx アップストリームで動的DNS解決を使用。テキストアップロードでUTF-8バイトサイズを保持。
- 多数のウェブアプリ/UI修正:メールコードとパスワードフォームの再送信、モバイルサインインのオーバーフロー、トーストのスタッキング、モデルセレクターのスペース調整などを修正。
環境変数の変更
追加された環境変数
- エージェントランタイム / サンドボックス:
DIFY_AGENT_RUNTIME_BACKEND,DIFY_AGENT_RUN_TIMEOUT_SECONDS,DIFY_AGENT_SANDBOX_FILES_BASE_URL,DIFY_AGENT_STUB_UPLOAD_FILE_SIZE_LIMIT,DIFY_AGENT_BINDING_FILE_DOWNLOAD_COMMAND_TIMEOUT_SECONDS- E2B 関連:
DIFY_AGENT_E2B_API_KEY,DIFY_AGENT_E2B_TEMPLATE,DIFY_AGENT_E2B_SHELLCTL_PORT,DIFY_AGENT_E2B_ACTIVE_TIMEOUT_SECONDS - ローカルサンドボックス関連:
DIFY_AGENT_LOCAL_SANDBOX_ENDPOINT,DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN - アウトバウンドHTTPチューニング:
DIFY_AGENT_OUTBOUND_HTTP_CONNECT_TIMEOUT,DIFY_AGENT_OUTBOUND_HTTP_READ_TIMEOUT,DIFY_AGENT_OUTBOUND_HTTP_WRITE_TIMEOUT,DIFY_AGENT_OUTBOUND_HTTP_POOL_TIMEOUT,DIFY_AGENT_OUTBOUND_HTTP_KEEPALIVE_EXPIRY,DIFY_AGENT_OUTBOUND_HTTP_MAX_CONNECTIONS,DIFY_AGENT_OUTBOUND_HTTP_MAX_KEEPALIVE_CONNECTIONS - その他:
AGENT_BACKEND_BINDING_FILE_DOWNLOAD_TIMEOUT_SECONDS,AGENT_BACKEND_HOME_SNAPSHOT_TIMEOUT_SECONDS
- E2B 関連:
- 認証 / セキュリティ:
TURNSTILE_SITE_KEY,TURNSTILE_SECRET_KEY,TURNSTILE_ALLOWED_HOSTNAMES,TURNSTILE_EMAIL_CODE_VERIFY_REQUIRED,EMAIL_CODE_LOGIN_MAX_ATTEMPTS,EMAIL_CODE_LOGIN_TOKEN_EXPIRY_MINUTES,KEY_PROVIDER_TYPE,AZURE_KEYVAULT_VAULT_URL,AZURE_KEYVAULT_KEY_SIZE,AZURE_KEYVAULT_ROTATION_INTERVAL_DAYS - ナレッジ / 検索:
TIDB_VECTOR_ENABLE_FULLTEXT_SEARCH,TIDB_ON_QDRANT_ESTIMATED_STORAGE_LIMITS_MB,KNOWLEDGE_UPLOAD_FILE_SIZE_LIMIT_FOR_PAID_PLAN - トレーシング / 可観測性:
OPS_TRACE_UNIFIED_ENABLED,OPS_TRACE_PARENT_CONTEXT_TTL_SECONDS - その他:
ENABLE_CONVERSATION_CLEANUP_TASK,CONVERSATION_CLEANUP_TASK_INTERVAL,CONVERSATION_CLEANUP_BATCH_SIZE,UPLOAD_SKILL_FILE_SIZE_LIMIT,PLUGIN_MAX_FILE_SIZE,MARKDOWN_FORM_FIELD_NAME_EXTRA_CHARS,DEPLOYMENT_EDITION(EDITION を置き換え)
削除された環境変数
EDITION→DEPLOYMENT_EDITIONに名称変更ENTERPRISE_ENABLEDAGENT_BACKEND_RUN_TIMEOUT_SECONDS→DIFY_AGENT_RUN_TIMEOUT_SECONDSに置き換えDIFY_AGENT_SHELLCTL_AUTH_TOKEN,DIFY_AGENT_SHELLCTL_ENTRYPOINT
変更された環境変数 (デフォルト値)
APP_MAX_EXECUTION_TIME: 1200 → 3600WORKFLOW_MAX_EXECUTION_TIME: 1200 → 3600OPS_TRACE_RETRYABLE_DISPATCH_MAX_RETRIES: 60 → 780GRAPH_ENGINE_SCALE_UP_THRESHOLD: 3 → 0
Docker Compose
docker/docker-compose.yaml— 変更済みdocker/docker-compose.middleware.yaml— 変更済みdocker/docker-compose.e2b.yaml— 新規追加 (E2B エージェントサンドボックススタック)
データベースマイグレーション
このリリースには、以下の新しいマイグレーションが含まれています(コミュニティ版に関連):
add_workflow_version_number— ワークフローのバージョン管理 (deployment v2)add_oauth_provider_app_auto_authorize— サイレント OAuth 承認フラグadd_conversation_cleanup_index— 会話クリーンアップタスクのサポートadd_workspace_skill_management— ワークスペースレベルのスキル管理 (ドラフト/バージョン/公開ライフサイクル)add_agent_home_snapshot_ledger,make_home_snapshot_references_nullable— エージェントビルド時のホームスナップショット台帳と null 許容スナップショット参照replace_agent_runtime_sessions_with_*,remove_agent_drive,clean_legacy_agent_soul_files,simplify_agent_v2_output_contract— 新しいエージェントランタイム
これらのマイグレーションに手動でのバックフィルコマンドは不要です。アップグレードの一部として flask db upgrade を実行してください。
アップグレードガイド
重要
- このリリースには新しいデータベースマイグレーションが含まれています。アップグレードの一部として実行してください。
- 環境変数が大幅に変更されました(多数の追加、
EDITION→DEPLOYMENT_EDITIONへの名称変更、いくつかのデフォルト値の変更)。「環境変数の変更」セクションを確認し、.envファイルを適切に更新してください。特に、EDITIONを設定している場合はDEPLOYMENT_EDITIONに名称変更してください。 - Docker Compose の設定が変更され、新しい
docker-compose.e2b.yamlが追加されました。カスタマイズしたdocker-compose.yamlを保持している場合は、ローカルのカスタマイズを慎重に再適用してください。 add_conversation_cleanup_indexマイグレーションは既存データにインデックスを構築するため、conversationsテーブルが大きい場合は実行に時間がかかる可能性があります。
Docker Compose デプロイ
- カスタマイズした compose ファイルと env ファイルをバックアップします:
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak cp .env .env.$(date +%s).bak 2>/dev/null || true - 最新のコードを取得します:
git fetch --tags git checkout main # または対象のリリースタグ - サービスを停止します (docker ディレクトリから):
docker compose down - データをバックアップします:
tar -cvf volumes-$(date +%s).tgz volumes - env の変更点を確認し、ローカルのカスタマイズを再適用します(
EDITION→DEPLOYMENT_EDITIONを忘れないでください)。 - アップグレードします:
docker compose up -d
ソースコードデプロイ
- API サーバー、Worker、Web フロントエンドを停止します。
- 最新のコードを取得します:
git fetch --tags git checkout main # または対象のリリースタグ - Python の依存関係を更新します:
cd api uv sync - マイグレーションを実行します:
uv run flask db upgrade - Web フロントエンドを再構築/再起動し、その後 API サーバーと Worker を再起動します。
Full Change List (重要なものをピックアップ)
Full Change List は非常に広範囲にわたりますが、上記でまとめた主要な新機能、改善点、バグ修正、環境変数の変更、データベースマイグレーション、アップグレードガイドが、Dify v1.17.0 の最も重要な変更点となります。特に、エージェント機能の強化、ワークフローの柔軟性向上、セキュリティ強化、そして開発者体験の改善に重点が置かれていることが分かります。
多くのコミットは内部品質向上やテスト関連、リファクタリングであり、直接的なユーザー機能変更ではありません。
終わりに
以上、Dify v1.17.0 のリリース情報を、要約してまとめました。
今回のリリースは、単なるバージョンアップに留まらず、AIアプリケーション開発の風景を大きく変える可能性を秘めています。特に注目すべきは、エージェント機能の画期的な進化です。E2B Cloud Sandbox による柔軟な実行環境、Home Snapshotsによる再現性の確保、そしてワークスペースレベルでのスキル管理は、より高度で信頼性の高いエージェント開発を強力に後押しします。
さらに、ワークフローにおける LLM 環境変数の導入や、ループノード内などでの HITL のサポートは、複雑なAIプロセスをより効率的かつインタラクティブに構築できることを示しています。統合トレーシングやセキュリティ強化、そして細部にわたるアクセシビリティ改善は、開発者が安心してDifyを使いこなせるよう、基盤を堅牢にしています。
Dify v1.17.0 は、AIエージェントの可能性を最大限に引き出し、開発者の皆様がより創造的で実用的なAIソリューションを迅速に実現するための、強力なツールとなるでしょう。ぜひ最新バージョンにアップグレードし、この進化を体感してください。
次回も Dify の最新情報をお届けしていきますので、引き続き「Dify 三昧」をよろしくお願いいたします。
参考リンク
本記事は Dify v1.17.0 のリリースノートを基に作成されています。最新情報は公式サイトおよび GitHub リポジトリをご確認ください。