简报·YT
← 返回 GitHub 动态
langgenius/dify · 📈 热门项目 已完成

langgenius/dify 1.16.1

2026-07-28 03:43 · ⭐ 15万 · GitHub Release 原文 ↗
#开源AI平台 #Agent安全 #性能优化

langgenius/dify 1.16.1

Dify 是一个开源的大模型应用开发平台,帮助用户快速搭建基于 LLM 的 AI 应用(如聊天机器人、智能 Agent、RAG 知识库、工作流自动化等),提供可视化的编排界面和完整的开发工具链。该项目社区活跃、迭代迅速,是目前 AI 应用开发领域最受关注的开源项目之一。

新增功能

重要 Bug 修复

安全增强

性能优化

其他改进

环境变量变化

Docker Compose 变更

数据库迁移

本版本包含 4 个新增迁移(新表、新列、新索引),均为增量变更,可在线安全执行: 1. workflow_run_archive_bundles 添加索引 2. 创建 account_step_by_step_tour_states 表 3. agent_debug_conversations 添加 draft_type 列并更新唯一约束 4. dify_setups 添加遥测字段(instance_id, install_reported_at, last_heartbeat_at)

升级指南

Breaking Change

▸ Release Notes 英文原文(41971 字符)
## What's Changed ### New Features **Tool Multi-Select Input** - Workflow tool nodes now support multi-select dropdown inputs, allowing users to choose multiple values from a predefined list when configuring tool parameters. (#39346) **Workflow Node Locator** - You can now click a node_id in workflow run logs or error messages to locate and highlight the corresponding node in the workflow editor canvas. (#38187) **Workflow Block Selector Improvements** - The block selector panel now features improved keyboard navigation, category previews, and a more intuitive search experience when adding nodes to workflows. (#39212) **Export Agent DSL from Sidebar** - Agent apps can now be exported as DSL YAML directly from the app sidebar menu, making it easy to back up or version-control agent configurations. (#39299) **Knowledge Tracing** - Added more observability traces to knowledge/RAG document processing operations, improving visibility into indexing pipelines. (#38959) --- ### Bug Fixes **Workflow & Collaboration** - Fixed hidden-tab collaboration leader saving stale drafts when the tab is inactive (#38997) - Fixed unsaved edits being dropped when collaboration never connects (#39579) - Preserved latest collaboration session after reconnection (#39646) - Fixed false draft save error during Strict Mode initialization (#39353) - Show persistent error notification when workflow draft save fails (#39293) - Wait for workflow worker threads to finish before Celery tasks complete, preventing orphaned executions (#39614) - Lazy-load Loro collaboration runtime to reduce initial bundle size (#39631) - Don't open node settings panel when clicking a node in comment mode (#39500) - Don't close active comment panel when a different comment is resolved (#39491) **RAG & Knowledge** - Fixed document cleaner stripping valid characters ï (U+00EF), ¿ (U+00BF), ¾ (U+00BE) (#39215) - Preserved spaces during recursive text splitting (#39498) - Used `flush()` instead of `commit()` in dataset service to preserve caller transaction boundaries (#39223) - Sent valid body in external knowledge validation probe (#39410) **Agent** - Fixed agent preview: start new Preview conversations without inheriting an old ID (#39463) - Fixed agent chat input being replaced when conversation history updates (#39289) - Preserved complete model usage pricing in agent logs (#39201) - Show workflow node runs in agent execution logs (#39471) - Include workflow runs in agent monitoring stats (#39354) - Block unpublished agents from being used in workflows (#39532) - Prevent agent preview actions from being clipped (#39510) - Prevent build reset from clearing preview chat history (#39490) - Fixed agent build draft UI flashing during apply (#39642) **Web App & UI** - Fixed webapp JWT expiration time being incorrectly set (#39537) - Fixed TTS playback in Safari and Firefox (#39444) - Fixed clipboard writes failing in embedded apps (#39511) - Fixed text generation web app showing infinite loading after timeout (#39268) - Fixed chat not passing document if model doesn't support vision (#39461) - Stopped chunk length/overlap inputs collapsing to unusable width in narrow containers (#39600) - Fixed search hotkey hydration mismatch (#39574) - Improved DSL import/export dialog states (#39432, #39409) - Fixed basePath doubling in auth refresh redirects (#39273) - Show unavailable state for disabled Web Apps (#39392) - Fixed permission selector semantics (#39269) - Fixed customization page horizontal overflow (#39557) **API & Backend** - Fixed MCP tool `output_schema` being treated as required when it's optional (#39453) - Honored array-element limit and byte budget for `list[File]` in VariableTruncator (#39220) - Prevented identity logging deadlock (#39449) - Rejected `host:port`-shaped `PLUGIN_REMOTE_INSTALL_PORT` values with an actionable hint (#39329) - Fixed `PaginatedResult.pages` returning 1 instead of 0 for empty result sets (#39229) - Used resource tenant for draft variable files (#39307) - Scoped HITL snapshot message lookup to utilize database index (#39351) - Returned 400 instead of 500 when `file` field is missing from audio-to-text endpoints (#39303, #39322) - Fixed tool_meta missing `tool_provider_type` during tool execution (#39513) - Applied configured timeout to enterprise inner API requests (#39335) - Returned disabled auto-upgrade settings when strategy is missing (#39494) - Enforced tool provider type contracts (#39380) - Fixed WaterCrawl website crawler handling non-JSON error responses (#37514) - Fixed can't create chat app when tenant default model schema errors (#39266) --- ### Security Enhancements - The Agent local sandbox now runs behind a dedicated Squid forward proxy with strict ACL rules, preventing the sandbox from reaching internal services directly. Only the `/files/` endpoint on the API and `/agent-stub/` on agent_backend are permitted, both protected with short-lived access tokens. This significantly reduces the blast radius of arbitrary code execution in the agent sandbox. (#39544) - Communication between the Dify API and the agent backend now uses token-based authentication via `DIFY_AGENT_API_TOKEN` / `AGENT_BACKEND_API_TOKEN`, hardening the internal service boundary. (#39622) - Switched Jinja2 template rendering to use `SandboxedEnvironment`, preventing template injection attacks in workflow code nodes (#39609) - Patched React Server Components DoS vulnerability (#39539) - Used `re.fullmatch` in email validator to reject trailing newlines, preventing bypass attacks (#39320) - Validated account status before accepting workspace invitations (#39438) --- ### Performance - **Lightweight recent apps endpoint** — New `GET /console/api/apps/recent` endpoint reduces the home page "Continue Work" section latency by ~69% (3.2× faster), cutting SQL queries from 19+ to 1 projection SELECT and response size by ~50% (#39625) - **Lazy-load Home creation modals** — Deferred loading of creation modal code until interaction, reducing initial JavaScript bundle (#39634) --- ### Improvements - Made agent composer save and publish state consistent (#39637) - Simplified Dify logo theming (#39580) - Improved workflow block selector UI (#39377) - Improved web accessibility semantics (#39505) - Nodes are no longer draggable when previewing a workflow (#39131) - Display non-LLM settings in integration tool details (#39295) --- ## Environment Variable Changes ### New Variables | Variable | Default | Description | |----------|---------|-------------| | `DIFY_AGENT_API_TOKEN` | `dify-agent-run-token-for-dev-only` | Shared bearer token for API → agent_backend authentication. **Change this in production.** | | `AGENT_BACKEND_API_TOKEN` | `dify-agent-run-token-for-dev-only` | Same token on the agent backend side. Must match `DIFY_AGENT_API_TOKEN`. | | `PLUGIN_MODEL_PROVIDERS_CACHE_ENABLED` | `true` | Set to `false` if plugins are installed externally and the cache cannot be invalidated. | > [!IMPORTANT] > `DIFY_AGENT_API_TOKEN` is a **new required variable** for secure communication between the Dify API and agent backend. The default value (`dify-agent-run-token-for-dev-only`) is insecure and **must be replaced in production**. Generate one with: > ```bash > python -c 'import secrets; print(secrets.token_urlsafe(32))' > ``` > Set the same value as `AGENT_BACKEND_API_TOKEN` on the agent backend side. ### Docker Compose Changes - **Agent sandbox network isolation**: `local_sandbox` is moved off the `default` network to dedicated `agent_sandbox_network` + `local_sandbox_proxy_network`. A new `agent_ssrf_proxy` service (Squid) is added. - **Bearer auth**: `AGENT_BACKEND_API_TOKEN` / `DIFY_AGENT_API_TOKEN` are now passed to `api`, `worker`, and `agent_backend` services. - Image tags updated to `1.16.1`. --- ## Database Migrations This release includes **4 new migrations**: 1. `2026_07_15_1600-3c9f8e2a1d7b_add_workflow_run_archive_bundle_cursor_indexes.py` — Add indexes to `workflow_run_archive_bundles` (concurrent on PostgreSQL) 2. `2026_06_29_1200-b8c9d0e1f2a3_add_step_by_step_tour_state.py` — Create `account_step_by_step_tour_states` table 3. `2026_07_22_1500-d2825e7b9c10_scope_agent_debug_conversations.py` — Add `draft_type` column to `agent_debug_conversations` and update unique constraint 4. `2026_07_23_1200-6f5a9c2d8e1b_add_telemetry_fields_to_dify_setups.py` — Add telemetry fields (`instance_id`, `install_reported_at`, `last_heartbeat_at`) to `dify_setups` All migrations are additive (new tables, columns, indexes) and are safe to run without downtime. --- ## Upgrade Guide ### Docker Compose (Recommended) ```bash cd docker docker compose down git pull origin main docker compose pull docker compose up -d ``` The database migrations will run automatically on startup. > [!IMPORTANT] > Review the new `DIFY_AGENT_API_TOKEN` variable in `.env`. The default value is insecure — generate a secure token for production: > ```bash > python -c 'import secrets; print(secrets.token_urlsafe(32))' > ``` ### Source Code ```bash git pull origin main cd api flask db upgrade ``` --- ## What's Changed * refactor(web): use generated dataset card queries by @lyzno1 in https://github.com/langgenius/dify/pull/39203 * refactor(web): use generated OAuth query options by @lyzno1 in https://github.com/langgenius/dify/pull/39204 * refactor(web): align integrations sidebar components by @lyzno1 in https://github.com/langgenius/dify/pull/39202 * feat(workflow): improve block selector navigation and previews by @lyzno1 in https://github.com/langgenius/dify/pull/39212 * fix(dataset_service): use flush() instead of commit() to preserve caller transaction by @sergioperezcheco in https://github.com/langgenius/dify/pull/39223 * ci: route default Depot jobs to 4-core runners by @lyzno1 in https://github.com/langgenius/dify/pull/39277 * chore: the node should not draggable when preview a workflow by @hjlarry in https://github.com/langgenius/dify/pull/39131 * test(web): align test state boundaries by @lyzno1 in https://github.com/langgenius/dify/pull/39239 * refactor(web): avoid setState in website crawler effects by @wanxiankai in https://github.com/langgenius/dify/pull/39237 * fix: text generation web app keeps loading after timeout by @iamjoel in https://github.com/langgenius/dify/pull/39268 * refactor(web): avoid direct setState in effect in jina reader crawler (#25194) by @pepepeboom in https://github.com/langgenius/dify/pull/39216 * fix(web): restore permission selector semantics by @lyzno1 in https://github.com/langgenius/dify/pull/39269 * chore: bump the github-actions-dependencies group with 5 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/39247 * fix: can't create chat app when get tenant default model schema error by @hjlarry in https://github.com/langgenius/dify/pull/39266 * fix: prevent hidden-tab collaboration leader from saving stale drafts by @Kevin9703 in https://github.com/langgenius/dify/pull/38997 * fix(api, web): scope trial app file uploads to the app tenant by @linw1995 in https://github.com/langgenius/dify/pull/39149 * refactor: use catalog for workflow archive maintenance by @zhaohao1004 in https://github.com/langgenius/dify/pull/39001 * fix(agent): preserve complete model usage pricing by @zyssyz123 in https://github.com/langgenius/dify/pull/39201 * feat(web): add webapp access control to agent access point by @GareArc in https://github.com/langgenius/dify/pull/39285 * fix: the input of agent chat would be replaced if conversation history updated by @iamjoel in https://github.com/langgenius/dify/pull/39289 * feat(dataset): proxy KnowledgeFS Console requests by @hyoban in https://github.com/langgenius/dify/pull/39158 * docs: refine frontend testing guidance by @lyzno1 in https://github.com/langgenius/dify/pull/39290 * chore(deps): update pnpm and workspace dependencies by @lyzno1 in https://github.com/langgenius/dify/pull/39292 * fix: show persistent error when workflow draft save fails by @iamjoel in https://github.com/langgenius/dify/pull/39293 * feat(web): add step-by-step tour shell by @Jingyi-Dify in https://github.com/langgenius/dify/pull/38785 * chore: display non-LLM settings in integration tool details by @iamjoel in https://github.com/langgenius/dify/pull/39295 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/39296 * revert(ci): restore default Depot runners by @lyzno1 in https://github.com/langgenius/dify/pull/39297 * test: use SQLite sessions in unit misc by @asukaminato0721 in https://github.com/langgenius/dify/pull/39123 * test: use SQLite sessions in unit misc by @asukaminato0721 in https://github.com/langgenius/dify/pull/39121 * test: use SQLite sessions in unit misc by @asukaminato0721 in https://github.com/langgenius/dify/pull/39122 * feat: support export agent dsl in sidebar by @iamjoel in https://github.com/langgenius/dify/pull/39299 * fix(web): stop doubling basePath in auth refresh redirects by @sergioperezcheco in https://github.com/langgenius/dify/pull/39273 * chore: when dataset permission is not all team, update rbac config to… by @fatelei in https://github.com/langgenius/dify/pull/39227 * refactor(web): remove basePath from hydration boundary by @lyzno1 in https://github.com/langgenius/dify/pull/39308 * ci: simplify test workflow execution by @WH-2099 in https://github.com/langgenius/dify/pull/39318 * test: use SQLite sessions in unit misc by @asukaminato0721 in https://github.com/langgenius/dify/pull/39120 * fix(api): use resource tenant for draft variable files by @linw1995 in https://github.com/langgenius/dify/pull/39307 * fix(configs): reject host:port-shaped PLUGIN_REMOTE_INSTALL_PORT with actionable hint by @sergioperezcheco in https://github.com/langgenius/dify/pull/39329 * fix: return 400 instead of 500 when file field is missing in audio-to-text endpoints (#39303) by @rkfshakti in https://github.com/langgenius/dify/pull/39322 * test: use SQLite sessions in unit misc by @asukaminato0721 in https://github.com/langgenius/dify/pull/39119 * test: use SQLite sessions in services workflow by @asukaminato0721 in https://github.com/langgenius/dify/pull/39116 * fix(api): keep workflow log archives owner-admin only by @lyzno1 in https://github.com/langgenius/dify/pull/39338 * fix(web): restore billing access boundary by @lyzno1 in https://github.com/langgenius/dify/pull/39343 * fix(api): return 400 instead of 500 when 'file' is missing from trial-app audio-to-text by @Harsh23Kashyap in https://github.com/langgenius/dify/pull/39305 * refactor(web): remove permission catalog service hooks by @lyzno1 in https://github.com/langgenius/dify/pull/39342 * fix(watercrawl): handle non-json error responses by @luochen211 in https://github.com/langgenius/dify/pull/37514 * fix(dev): use gevent WebSocket server for local API by @hjlarry in https://github.com/langgenius/dify/pull/39349 * fix: not support jump to detail in marketplace by @iamjoel in https://github.com/langgenius/dify/pull/39347 * fix(workflow): avoid false draft save error during Strict Mode initia… by @hjlarry in https://github.com/langgenius/dify/pull/39353 * test: use sqlite3 session in test_account_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38751 * test: use SQLite sessions in services workflow by @asukaminato0721 in https://github.com/langgenius/dify/pull/39115 * test: use SQLite sessions in unit misc by @asukaminato0721 in https://github.com/langgenius/dify/pull/39118 * test: use sqlite3 session in test_built_in_retrieval by @asukaminato0721 in https://github.com/langgenius/dify/pull/38735 * test: use sqlite3 session in test_based_generate_task_pipeline by @asukaminato0721 in https://github.com/langgenius/dify/pull/38738 * test: use sqlite3 session in test_conversation_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38774 * test: move API token service coverage to unit tests by @asukaminato0721 in https://github.com/langgenius/dify/pull/38918 * test: use sqlite3 session in test_accounts by @asukaminato0721 in https://github.com/langgenius/dify/pull/38752 * test: move app import API coverage to unit tests by @asukaminato0721 in https://github.com/langgenius/dify/pull/38920 * test: use sqlite3 session in test_database_retrieval by @asukaminato0721 in https://github.com/langgenius/dify/pull/38743 * test: use sqlite3 session in test_agent_app_parameters by @asukaminato0721 in https://github.com/langgenius/dify/pull/38759 * test: use sqlite3 session in test_workspace_account by @asukaminato0721 in https://github.com/langgenius/dify/pull/38757 * test: use sqlite3 session in test_tool_file_manager by @asukaminato0721 in https://github.com/langgenius/dify/pull/38771 * test: move human input delivery coverage to unit tests by @asukaminato0721 in https://github.com/langgenius/dify/pull/38926 * test: use sqlite3 session in test_build_from_mapping by @asukaminato0721 in https://github.com/langgenius/dify/pull/38769 * test: add SQLite session fixture for providers by @asukaminato0721 in https://github.com/langgenius/dify/pull/38982 * fix(agent): include workflow runs in monitoring stats by @zyssyz123 in https://github.com/langgenius/dify/pull/39354 * feat(webapp-access): add WEBAPP_PUBLIC_ACCESS_ENABLED toggle by @GareArc in https://github.com/langgenius/dify/pull/38567 * fix(api): scope HITL snapshot message lookup to utilize db index by @QuantumGhost in https://github.com/langgenius/dify/pull/39351 * fix: update the agent roster documentation link by @iamjoel in https://github.com/langgenius/dify/pull/39368 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/39362 * refactor(web): improve workflow block selector by @lyzno1 in https://github.com/langgenius/dify/pull/39377 * fix(api): PaginatedResult.pages should be 0 for an empty result set by @lntutor in https://github.com/langgenius/dify/pull/39229 * feat: add WebSocket support to dev proxy with cookie rewriting by @WTW0313 in https://github.com/langgenius/dify/pull/39370 * fix: enforce tool provider type contracts by @lyzno1 in https://github.com/langgenius/dify/pull/39380 * chore(deps): upgrade Next.js to 16.2.11 by @lyzno1 in https://github.com/langgenius/dify/pull/39384 * test: use SQLite sessions in services misc by @asukaminato0721 in https://github.com/langgenius/dify/pull/39114 * test: use SQLite sessions in services enterprise by @asukaminato0721 in https://github.com/langgenius/dify/pull/39113 * test: use SQLite sessions in services core by @asukaminato0721 in https://github.com/langgenius/dify/pull/39111 * test: use SQLite sessions in core workflow by @asukaminato0721 in https://github.com/langgenius/dify/pull/39109 * test: use sqlite3 session in test_auth_wraps by @asukaminato0721 in https://github.com/langgenius/dify/pull/38760 * docs: note minimum Docker Compose version by @zcxGGmu in https://github.com/langgenius/dify/pull/39374 * test: use sqlite3 session in test_human_input_forms by @asukaminato0721 in https://github.com/langgenius/dify/pull/38777 * test: move console OAuth coverage to unit tests by @asukaminato0721 in https://github.com/langgenius/dify/pull/38923 * fix: apply configured timeout to enterprise inner API requests by @GareArc in https://github.com/langgenius/dify/pull/39335 * fix(web): show unavailable state for disabled Web Apps by @lyzno1 in https://github.com/langgenius/dify/pull/39392 * fix(datasets): update empty state handling and permissions messaging by @WTW0313 in https://github.com/langgenius/dify/pull/39360 * chore: bump pyasn1 from 0.6.3 to 0.6.4 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/39390 * chore: bump setuptools from 82.0.1 to 83.0.0 in /dify-agent by @dependabot[bot] in https://github.com/langgenius/dify/pull/39387 * chore: bump gitpython from 3.1.50 to 3.1.52 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/39389 * chore: bump google.golang.org/grpc from 1.82.0 to 1.82.1 in /dify-agent-runtime by @dependabot[bot] in https://github.com/langgenius/dify/pull/39386 * chore: bump pyasn1 from 0.6.3 to 0.6.4 in /dify-agent by @dependabot[bot] in https://github.com/langgenius/dify/pull/39388 * test: use sqlite3 session in test_clear_free_plan_tenant_expired_logs by @asukaminato0721 in https://github.com/langgenius/dify/pull/38693 * chore: bump pillow from 12.2.0 to 12.3.0 in /dify-agent by @dependabot[bot] in https://github.com/langgenius/dify/pull/39328 * test: use sqlite3 session in test_workflow by @asukaminato0721 in https://github.com/langgenius/dify/pull/38686 * test: use SQLite sessions in service API fixtures by @asukaminato0721 in https://github.com/langgenius/dify/pull/38784 * test: use sqlite3 session in test_export_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38718 * test: use sqlite3 session in test_generator_api_missing by @asukaminato0721 in https://github.com/langgenius/dify/pull/38719 * test: use sqlite3 session in test_app_runner_conversation_variables by @asukaminato0721 in https://github.com/langgenius/dify/pull/38687 * test: use sqlite3 session in test_model_config_api by @asukaminato0721 in https://github.com/langgenius/dify/pull/38675 * fix(e2e): align fixtures with generated contracts by @lyzno1 in https://github.com/langgenius/dify/pull/39394 * chore: clean up CODEOWNERS by @lyzno1 in https://github.com/langgenius/dify/pull/39398 * fix(oauth): reauth after accepting invitation by @linw1995 in https://github.com/langgenius/dify/pull/39366 * fix(ci): avoid duplicate post-merge e2e runs by @lyzno1 in https://github.com/langgenius/dify/pull/39401 * test: use sqlite3 session in test_base_app_runner by @asukaminato0721 in https://github.com/langgenius/dify/pull/38740 * fix(api,billing): invalidate vector space cache after cleanup by @linw1995 in https://github.com/langgenius/dify/pull/39404 * test(e2e): validate generated console contracts by @lyzno1 in https://github.com/langgenius/dify/pull/39400 * chore: Update permission tip across i18n locales by @WTW0313 in https://github.com/langgenius/dify/pull/39406 * test: use sqlite3 session in test_reset_encrypt_key_pair by @asukaminato0721 in https://github.com/langgenius/dify/pull/38673 * test: use sqlite3 session in test_rag_pipeline_workflow by @asukaminato0721 in https://github.com/langgenius/dify/pull/38676 * fix(agent): isolate build and preview chat conversations by @zyssyz123 in https://github.com/langgenius/dify/pull/39405 * test: use sqlite3 session in test_snippet_workflow by @asukaminato0721 in https://github.com/langgenius/dify/pull/38677 * test: use sqlite3 session in test_snippet_workflow_draft_variable by @asukaminato0721 in https://github.com/langgenius/dify/pull/38678 * fix(web): improve DSL export feedback by @lyzno1 in https://github.com/langgenius/dify/pull/39409 * test: use sqlite3 session in test_app_import_api by @asukaminato0721 in https://github.com/langgenius/dify/pull/38674 * test: use sqlite3 session in test_tags by @asukaminato0721 in https://github.com/langgenius/dify/pull/38679 * test: use sqlite3 session in test_init_validate by @asukaminato0721 in https://github.com/langgenius/dify/pull/38680 * test: use sqlite3 session in test_plugin_wraps by @asukaminato0721 in https://github.com/langgenius/dify/pull/38681 * test: use sqlite3 session in test_runtime_credentials by @asukaminato0721 in https://github.com/langgenius/dify/pull/38682 * test: use sqlite3 session in test_workflow_events_openapi by @asukaminato0721 in https://github.com/langgenius/dify/pull/38683 * feat(dataset): add New Knowledge list and empty state by @hyoban in https://github.com/langgenius/dify/pull/39300 * fix: prevent RBAC role names overflowing settings panel by @balancetheworld in https://github.com/langgenius/dify/pull/39412 * fix(agent): refresh stale inline preview drafts by @zyssyz123 in https://github.com/langgenius/dify/pull/39415 * feat: support tool multi-select input by @hjlarry in https://github.com/langgenius/dify/pull/39346 * fix(dify-ui): preserve link semantics in button story by @lyzno1 in https://github.com/langgenius/dify/pull/39430 * feat(dataset): expose New RAG KnowledgeFS contracts by @hyoban in https://github.com/langgenius/dify/pull/39314 * fix(web): improve import DSL dialog states by @lyzno1 in https://github.com/langgenius/dify/pull/39432 * feat: gate cloud analytics behind cookie consent by @CodingOnStar in https://github.com/langgenius/dify/pull/39408 * fix(api): send valid body in external knowledge validation probe by @dparkmit24 in https://github.com/langgenius/dify/pull/39410 * test: move password reset coverage to unit tests by @asukaminato0721 in https://github.com/langgenius/dify/pull/38936 * test: use sqlite3 session in test_conversation by @asukaminato0721 in https://github.com/langgenius/dify/pull/38684 * test: use sqlite3 session in test_hitl_service_api by @asukaminato0721 in https://github.com/langgenius/dify/pull/38685 * test: use sqlite3 session in test_async_workflow_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38692 * chore(api): cloud use presigned download url on api site by @linw1995 in https://github.com/langgenius/dify/pull/39436 * fix(workflow): hide Agent V2 in chatflow by @lyzno1 in https://github.com/langgenius/dify/pull/39439 * fix(auth): validate account before accepting invitations by @zyssyz123 in https://github.com/langgenius/dify/pull/39438 * fix: use re.fullmatch in email validator to reject trailing newlines (#39234) by @rkfshakti in https://github.com/langgenius/dify/pull/39320 * chore: improve lambda plugin runtime error display by @hjlarry in https://github.com/langgenius/dify/pull/39437 * fix(web): support TTS playback in Safari and Firefox by @euxx in https://github.com/langgenius/dify/pull/39444 * feat(dataset): add New Knowledge creation flow by @hyoban in https://github.com/langgenius/dify/pull/39315 * feat: gate agent management behind the agent.manage permission by @GareArc in https://github.com/langgenius/dify/pull/39330 * fix(api): prevent identity logging deadlock by @hjlarry in https://github.com/langgenius/dify/pull/39449 * fix(web): echo OAuth state on authorize redirect by @samzong in https://github.com/langgenius/dify/pull/39459 * fix(agent): start new Preview conversations without an ID by @zyssyz123 in https://github.com/langgenius/dify/pull/39463 * fix: chat not pass doc if not support vision by @iamjoel in https://github.com/langgenius/dify/pull/39461 * chore: avoid duplicate token counting during dataset indexing by @41tair in https://github.com/langgenius/dify/pull/39466 * feat(dataset): add source connections by @hyoban in https://github.com/langgenius/dify/pull/39319 * fix(agent): show workflow node runs in logs by @zyssyz123 in https://github.com/langgenius/dify/pull/39471 * feat(web): locate workflow nodes by node_id in the workflow editor by @ruanimal in https://github.com/langgenius/dify/pull/38187 * feat(dataset): add website crawl preview by @hyoban in https://github.com/langgenius/dify/pull/39324 * feat(oauth): expose stable account id on provider account endpoint by @samzong in https://github.com/langgenius/dify/pull/39470 * feat: knowledge add more trace by @fatelei in https://github.com/langgenius/dify/pull/38959 * chore: support preview mode if not in community version by @iamjoel in https://github.com/langgenius/dify/pull/39399 * test: use sqlite3 session in test_base_trace_instance by @asukaminato0721 in https://github.com/langgenius/dify/pull/38744 * fix(web): adapt workflow agent logs by @lyzno1 in https://github.com/langgenius/dify/pull/39488 * fix: prevent build reset from clearing preview chat by @iamjoel in https://github.com/langgenius/dify/pull/39490 * fix(web): simplify agent configure mode state by @lyzno1 in https://github.com/langgenius/dify/pull/39492 * fix: don't close the active comment panel when a different comment is resolved by @dparkmit24 in https://github.com/langgenius/dify/pull/39491 * fix: return disabled auto-upgrade settings when strategy is missing by @hjlarry in https://github.com/langgenius/dify/pull/39494 * fix: smooth the preview-to-build transition by @iamjoel in https://github.com/langgenius/dify/pull/39495 * fix(api): make the 10-minute email IP first-strike window take effect by @he-yufeng in https://github.com/langgenius/dify/pull/39479 * feat(dataset): add crawl source selection by @hyoban in https://github.com/langgenius/dify/pull/39325 * refactor: centralize deployment edition in system features by @lyzno1 in https://github.com/langgenius/dify/pull/39454 * fix: download skill files through authenticated API requests by @iamjoel in https://github.com/langgenius/dify/pull/39499 * fix: don't open the node settings panel when clicking a node in comment mode by @dparkmit24 in https://github.com/langgenius/dify/pull/39500 * fix: audio config ui problem by @iamjoel in https://github.com/langgenius/dify/pull/39504 * chore: add deploy-knowledge.yml by @JohnJyong in https://github.com/langgenius/dify/pull/39509 * fix: prevent agent preview actions from being clipped by @iamjoel in https://github.com/langgenius/dify/pull/39510 * chore(web): improve web accessibility semantics by @linw1995 in https://github.com/langgenius/dify/pull/39505 * fix(web): allow clipboard writes in embedded apps by @WTW0313 in https://github.com/langgenius/dify/pull/39511 * fix(web): hydrate workspace permissions before navigation render by @lyzno1 in https://github.com/langgenius/dify/pull/39524 * chore: add web shell code owners by @lyzno1 in https://github.com/langgenius/dify/pull/39526 * fix: include CSRF token when fetching skill file content by @iamjoel in https://github.com/langgenius/dify/pull/39527 * fix(agent-v2): link API reference to agent guide by @lyzno1 in https://github.com/langgenius/dify/pull/39534 * test(e2e): wait for app list before menu interaction by @lyzno1 in https://github.com/langgenius/dify/pull/39538 * fix(agent): block unpublished agents in workflows by @zyssyz123 in https://github.com/langgenius/dify/pull/39532 * fix: fix when tool execute in progress tool_meta miss tool_provider_type by @fatelei in https://github.com/langgenius/dify/pull/39513 * feat(dataset): add document processing tasks by @hyoban in https://github.com/langgenius/dify/pull/39326 * test: use caplog in ext login tests by @EvanYao826 in https://github.com/langgenius/dify/pull/39542 * fix(web): patch React Server Components DoS by @lyzno1 in https://github.com/langgenius/dify/pull/39539 * feat(dataset): add document detail by @hyoban in https://github.com/langgenius/dify/pull/39361 * refactor(web): remove obsolete route prefix handler by @lyzno1 in https://github.com/langgenius/dify/pull/39545 * refactor: remove backend-only system feature fields by @lyzno1 in https://github.com/langgenius/dify/pull/39543 * fix(web): prevent customization horizontal overflow by @Jingyi-Dify in https://github.com/langgenius/dify/pull/39557 * test: use sqlite3 session in test_datasource_provider_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38695 * test: use sqlite3 session in test_human_input_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38697 * refactor(web): migrate vector space billing query to contract client by @EvanYao826 in https://github.com/langgenius/dify/pull/39558 * test: use sqlite3 session in test_webhook_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38699 * test: use sqlite3 session in test_workflow_execute_task by @asukaminato0721 in https://github.com/langgenius/dify/pull/38704 * test: use sqlite3 session in test_easy_ui_message_end_files by @asukaminato0721 in https://github.com/langgenius/dify/pull/38706 * test: use sqlite3 session in test_wraps by @asukaminato0721 in https://github.com/langgenius/dify/pull/38716 * test: use sqlite3 session in test_metadata_nullable_bug by @asukaminato0721 in https://github.com/langgenius/dify/pull/38717 * test: use sqlite3 session in test_llm_quota by @asukaminato0721 in https://github.com/langgenius/dify/pull/38720 * test: use sqlite3 session in test_encrypter by @asukaminato0721 in https://github.com/langgenius/dify/pull/38726 * test: use sqlite3 session in test_workflow_node_execution_offload by @asukaminato0721 in https://github.com/langgenius/dify/pull/38728 * test: use sqlite3 session in test_pipeline_template_base by @asukaminato0721 in https://github.com/langgenius/dify/pull/38730 * chore: Grammar fix in VDB provider README ("a importable") by @SpiliosDimakopoulos in https://github.com/langgenius/dify/pull/39577 * chore: Broken docker-compose.yaml link in Hindi README (missing slash) by @SpiliosDimakopoulos in https://github.com/langgenius/dify/pull/39576 * docs: fix typos in ValueSourceType docstring by @SpiliosDimakopoulos in https://github.com/langgenius/dify/pull/39573 * chore(agent): update && simplify readme by @wylswz in https://github.com/langgenius/dify/pull/39584 * refactor(agents): simplify repository context by @lyzno1 in https://github.com/langgenius/dify/pull/39583 * docs: Broken Grafana link in Turkish README (placeholder text instead of URL) by @SpiliosDimakopoulos in https://github.com/langgenius/dify/pull/39575 * fix(dify-ui): honor instant popup transitions by @lyzno1 in https://github.com/langgenius/dify/pull/39572 * fix(web): prevent search hotkey hydration mismatch by @lyzno1 in https://github.com/langgenius/dify/pull/39574 * refactor: move trial app capability out of system features by @lyzno1 in https://github.com/langgenius/dify/pull/39562 * refactor(workflow): remove hook barrel exports by @lyzno1 in https://github.com/langgenius/dify/pull/39588 * fix(workflow): stop dropping unsaved edits when collaboration never c… by @BenjaminX in https://github.com/langgenius/dify/pull/39579 * test: use sqlite3 session in test_snippet by @asukaminato0721 in https://github.com/langgenius/dify/pull/38691 * test: use sqlite3 session in test_message_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38698 * fix(web): stop chunk length/overlap inputs collapsing to an unusable width in narrow containers by @dparkmit24 in https://github.com/langgenius/dify/pull/39600 * feat: add CE telemetry report by @FFXN in https://github.com/langgenius/dify/pull/39452 * fix(api): honor array-element limit and byte budget for list[File] in VariableTruncator (#39218) by @Taranum01 in https://github.com/langgenius/dify/pull/39220 * fix: The expiration time for web app login to JWT is incorrectly set. by @FFXN in https://github.com/langgenius/dify/pull/39537 * fix(rag): stop the document cleaner from stripping valid characters ï, ¿, ¾ by @winklemad in https://github.com/langgenius/dify/pull/39215 * refactor(web): simplify Dify logo theming by @lyzno1 in https://github.com/langgenius/dify/pull/39580 * feat(api): expose app mode in webapp site response by @linw1995 in https://github.com/langgenius/dify/pull/39607 * fix: preserve spaces during recursive text splitting by @CYJ1226 in https://github.com/langgenius/dify/pull/39498 * chore: bump pypdf from 6.10.2 to 6.14.2 in /dify-agent by @dependabot[bot] in https://github.com/langgenius/dify/pull/39502 * fix(agent): expose publish state from composer by @zyssyz123 in https://github.com/langgenius/dify/pull/39615 * chore(deps): bump the github-actions-dependencies group with 6 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/39603 * feat(inner_api): add endpoint to invalidate plugin model providers cache by @GareArc in https://github.com/langgenius/dify/pull/39468 * fix: align workspace card plan ownership by @lyzno1 in https://github.com/langgenius/dify/pull/39616 * feat: add amptitude to new agent by @iamjoel in https://github.com/langgenius/dify/pull/39608 * fix: use jinja sandbox by @wylswz in https://github.com/langgenius/dify/pull/39609 * feat(agent): add a squid proxy for agent sandbox by @wylswz in https://github.com/langgenius/dify/pull/39544 * fix(web): stop reporting workspace status by @lyzno1 in https://github.com/langgenius/dify/pull/39626 * fix(workflow): lazy-load Loro collaboration runtime by @lyzno1 in https://github.com/langgenius/dify/pull/39631 * fix(api): wait for workflow worker cleanup before task completion by @linw1995 in https://github.com/langgenius/dify/pull/39614 * perf(web): lazy-load Home creation modals by @lyzno1 in https://github.com/langgenius/dify/pull/39634 * perf: add lightweight recent apps endpoint by @hjlarry in https://github.com/langgenius/dify/pull/39625 * test: use pristine file-backed SQLite fixtures by @escape0707 in https://github.com/langgenius/dify/pull/39624 * test: use sqlite3 session in test_workflow_run_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38701 * test: use sqlite3 session in test_draft_var_loader_simple by @asukaminato0721 in https://github.com/langgenius/dify/pull/38702 * test: use sqlite3 session in test_utils by @asukaminato0721 in https://github.com/langgenius/dify/pull/38729 * test: use sqlite3 session in test_workflow_comment_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38700 * test: use sqlite3 session in test_llm_generator_missing by @asukaminato0721 in https://github.com/langgenius/dify/pull/38742 * fix: gate service API, MCP and trigger surfaces on enterprise license by @GareArc in https://github.com/langgenius/dify/pull/39635 * feat: add bearer auth to agent backend by @wylswz in https://github.com/langgenius/dify/pull/39622 * refactor: make agent composer save and publish state consistent by @iamjoel in https://github.com/langgenius/dify/pull/39637 * chore: bump gitpython from 3.1.52 to 3.1.54 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/39619 * test: use sqlite3 session in test_api by @asukaminato0721 in https://github.com/langgenius/dify/pull/38733 * chore(deps): bump golang.org/x/net from 0.53.0 to 0.55.0 in /dify-agent-runtime by @dependabot[bot] in https://github.com/langgenius/dify/pull/39025 * test: use sqlite3 session in test_extract_thread_messages by @asukaminato0721 in https://github.com/langgenius/dify/pull/38739 * chore: bump pymdown-extensions from 10.21.2 to 11.0 in /dify-agent by @dependabot[bot] in https://github.com/langgenius/dify/pull/39618 * test: use SQLite sessions in rag retrieval by @asukaminato0721 in https://github.com/langgenius/dify/pull/39049 * chore(deps): bump the storage group across 1 directory with 3 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/39604 * fix: prevent the agent build draft UI from flashing during apply by @iamjoel in https://github.com/langgenius/dify/pull/39642 * test: use SQLite sessions in services core by @asukaminato0721 in https://github.com/langgenius/dify/pull/39057 * test: use SQLite sessions in core memory by @asukaminato0721 in https://github.com/langgenius/dify/pull/39066 * fix(ui): unify combobox trigger focus rings by @lyzno1 in https://github.com/langgenius/dify/pull/39643 * test: use SQLite sessions in controllers service api by @asukaminato0721 in https://github.com/langgenius/dify/pull/39069 * chore: update workspace dependencies by @lyzno1 in https://github.com/langgenius/dify/pull/39641 * fix(workflow): preserve latest collaboration session by @lyzno1 in https://github.com/langgenius/dify/pull/39646 * test: use SQLite sessions in core ops by @asukaminato0721 in https://github.com/langgenius/dify/pull/39072 * test: use SQLite sessions in core app by @asukaminato0721 in https://github.com/langgenius/dify/pull/39075 * test: use SQLite sessions in core tools by @asukaminato0721 in https://github.com/langgenius/dify/pull/39077 * fix(web): align tour trigger DOM order by @lyzno1 in https://github.com/langgenius/dify/pull/39654 * fix(workflow): align block icon vector sizes by @Jingyi-Dify in https://github.com/langgenius/dify/pull/39657 * fix(cli): decouple release script tests from the live compat window by @GareArc in https://github.com/langgenius/dify/pull/39658 * feat(plugin): allow disabling the tenant plugin model providers cache by @GareArc in https://github.com/langgenius/dify/pull/39632 * chore: bump version to 1.16.1 by @wylswz in https://github.com/langgenius/dify/pull/39653 * fix: fix mcp output_schema is optional by @fatelei in https://github.com/langgenius/dify/pull/39453 ## New Contributors * @wanxiankai made their first contribution in https://github.com/langgenius/dify/pull/39237 * @pepepeboom made their first contribution in https://github.com/langgenius/dify/pull/39216 * @rkfshakti made their first contribution in https://github.com/langgenius/dify/pull/39322 * @lntutor made their first contribution in https://github.com/langgenius/dify/pull/39229 * @zcxGGmu made their first contribution in https://github.com/langgenius/dify/pull/39374 * @dparkmit24 made their first contribution in https://github.com/langgenius/dify/pull/39410 * @samzong made their first contribution in https://github.com/langgenius/dify/pull/39459 * @SpiliosDimakopoulos made their first contribution in https://github.com/langgenius/dify/pull/39577 * @Taranum01 made their first contribution in https://github.com/langgenius/dify/pull/39220 * @winklemad made their first contribution in https://github.com/langgenius/dify/pull/39215 * @CYJ1226 made their first contribution in https://github.com/langgenius/dify/pull/39498 **Full Changelog**: https://github.com/langgenius/dify/compare/1.16.0...1.16.1
▸ 主项目介绍 · langgenius/dify
▸ README 原文(同步于 2026-07-19 13:11)
![cover-v5-optimized](./images/GitHub_README_if.png) <p align="center"> <a href="https://cloud.dify.ai">Dify Cloud</a> · <a href="https://docs.dify.ai/getting-started/install-self-hosted">Self-hosting</a> · <a href="https://docs.dify.ai">Documentation</a> · <a href="https://dify.ai/pricing">Dify edition overview</a> </p> <p align="center"> <a href="https://dify.ai" target="_blank"> <img alt="Static Badge" src="https://img.shields.io/badge/Product-F04438"></a> <a href="https://dify.ai/pricing" target="_blank"> <img alt="Static Badge" src="https://img.shields.io/badge/free-pricing?logo=free&color=%20%23155EEF&label=pricing&labelColor=%20%23528bff"></a> <a href="https://discord.gg/FngNHpbcY7" target="_blank"> <img src="https://img.shields.io/discord/1082486657678311454?logo=discord&labelColor=%20%235462eb&logoColor=%20%23f5f5f5&color=%20%235462eb" alt="chat on Discord"></a> <a href="https://reddit.com/r/difyai" target="_blank"> <img src="https://img.shields.io/reddit/subreddit-subscribers/difyai?style=plastic&logo=reddit&label=r%2Fdifyai&labelColor=white" alt="join Reddit"></a> <a href="https://twitter.com/intent/follow?screen_name=dify_ai" target="_blank"> <img src="https://img.shields.io/twitter/follow/dify_ai?logo=X&color=%20%23f5f5f5" alt="follow on X(Twitter)"></a> <a href="https://www.linkedin.com/company/langgenius/" target="_blank"> <img src="https://custom-icon-badges.demolab.com/badge/LinkedIn-0A66C2?logo=linkedin-white&logoColor=fff" alt="follow on LinkedIn"></a> <a href="https://hub.docker.com/u/langgenius" target="_blank"> <img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/langgenius/dify-web?labelColor=%20%23FDB062&color=%20%23f79009"></a> <a href="https://github.com/langgenius/dify/graphs/commit-activity" target="_blank"> <img alt="Commits last month" src="https://img.shields.io/github/commit-activity/m/langgenius/dify?labelColor=%20%2332b583&color=%20%2312b76a"></a> <a href="https://github.com/langgenius/dify/" target="_blank"> <img alt="Issues closed" src="https://img.shields.io/github/issues-search?query=repo%3Alanggenius%2Fdify%20is%3Aclosed&label=issues%20closed&labelColor=%20%237d89b0&color=%20%235d6b98"></a> <a href="https://github.com/langgenius/dify/discussions/" target="_blank"> <img alt="Discussion posts" src="https://img.shields.io/github/discussions/langgenius/dify?labelColor=%20%239b8afb&color=%20%237a5af8"></a> <a href="https://insights.linuxfoundation.org/project/langgenius-dify" target="_blank"> <img alt="LFX Health Score" src="https://insights.linuxfoundation.org/api/badge/health-score?project=langgenius-dify"></a> <a href="https://insights.linuxfoundation.org/project/langgenius-dify" target="_blank"> <img alt="LFX Contributors" src="https://insights.linuxfoundation.org/api/badge/contributors?project=langgenius-dify"></a> <a href="https://insights.linuxfoundation.org/project/langgenius-dify" target="_blank"> <img alt="LFX Active Contributors" src="https://insights.linuxfoundation.org/api/badge/active-contributors?project=langgenius-dify"></a> </p> <p align="center"> <a href="./README.md"><img alt="README in English" src="https://img.shields.io/badge/English-d9d9d9"></a> <a href="./docs/zh-TW/README.md"><img alt="繁體中文文件" src="https://img.shields.io/badge/繁體中文-d9d9d9"></a> <a href="./docs/zh-CN/README.md"><img alt="简体中文文件" src="https://img.shields.io/badge/简体中文-d9d9d9"></a> <a href="./docs/ja-JP/README.md"><img alt="日本語のREADME" src="https://img.shields.io/badge/日本語-d9d9d9"></a> <a href="./docs/es-ES/README.md"><img alt="README en Español" src="https://img.shields.io/badge/Español-d9d9d9"></a> <a href="./docs/fr-FR/README.md"><img alt="README en Français" src="https://img.shields.io/badge/Français-d9d9d9"></a> <a href="./docs/tlh/README.md"><img alt="README tlhIngan Hol" src="https://img.shields.io/badge/Klingon-d9d9d9"></a> <a href="./docs/ko-KR/README.md"><img alt="README in Korean" src="https://img.shields.io/badge/한국어-d9d9d9"></a> <a href="./docs/ar-SA/README.md"><img alt="README بالعربية" src="https://img.shields.io/badge/العربية-d9d9d9"></a> <a href="./docs/tr-TR/README.md"><img alt="Türkçe README" src="https://img.shields.io/badge/Türkçe-d9d9d9"></a> <a href="./docs/vi-VN/README.md"><img alt="README Tiếng Việt" src="https://img.shields.io/badge/Ti%E1%BA%BFng%20Vi%E1%BB%87t-d9d9d9"></a> <a href="./docs/de-DE/README.md"><img alt="README in Deutsch" src="https://img.shields.io/badge/German-d9d9d9"></a> <a href="./docs/it-IT/README.md"><img alt="README in Italiano" src="https://img.shields.io/badge/Italiano-d9d9d9"></a> <a href="./docs/pt-BR/README.md"><img alt="README em Português do Brasil" src="https://img.shields.io/badge/Portugu%C3%AAs%20do%20Brasil-d9d9d9"></a> <a href="./docs/sl-SI/README.md"><img alt="README Slovenščina" src="https://img.shields.io/badge/Sloven%C5%A1%C4%8Dina-d9d9d9"></a> <a href="./docs/bn-BD/README.md"><img alt="README in বাংলা" src="https://img.shields.io/badge/বাংলা-d9d9d9"></a> <a href="./docs/hi-IN/README.md"><img alt="README in हिन्दी" src="https://img.shields.io/badge/Hindi-d9d9d9"></a> </p> Dify is an open-source LLM app development platform. Its intuitive interface combines AI workflow, RAG pipeline, agent capabilities, model management, observability features (including [Opik](https://www.comet.com/docs/opik/integrations/dify), [Langfuse](https://docs.langfuse.com), and [Arize Phoenix](https://docs.arize.com/phoenix)) and more, letting you quickly go from prototype to production. Here's a list of the core features: ## Quick start > Before installing Dify, make sure your machine meets the following minimum system requirements: > > - CPU >= 2 Core > - RAM >= 4 GiB <br/> The easiest way to start the Dify server is through [Docker Compose](docker/docker-compose.yaml). Before running Dify with the following commands, make sure that [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/) are installed on your machine: ```bash cd dify cd docker cp .env.example .env docker compose up -d ``` After running, you can access the Dify dashboard in your browser at [http://localhost/install](http://localhost/install) and start the initialization process. #### Seeking help Please refer to our [FAQ](https://docs.dify.ai/getting-started/install-self-hosted/faqs) if you encounter problems setting up Dify. Reach out to [the community and us](#community--contact) if you are still having issues. > If you'd like to contribute to Dify or do additional development, refer to our [guide to deploying from source code](https://docs.dify.ai/getting-started/install-self-hosted/local-source-code) ## Key features **1. Workflow**: Build and test powerful AI workflows on a visual canvas, leveraging all the following features and beyond. **2. Comprehensive model support**: Seamless integration with hundreds of proprietary / open-source LLMs from dozens of inference providers and self-hosted solutions, covering GPT, Mistral, Llama3, and any OpenAI API-compatible models. A full list of supported model providers can be found [here](https://docs.dify.ai/getting-started/readme/model-providers). ![providers-v5](https://github.com/langgenius/dify/assets/13230914/5a17bdbe-097a-4100-8363-40255b70f6e3) **3. Prompt IDE**: Intuitive interface for crafting prompts, comparing model performance, and adding additional features such as text-to-speech to a chat-based app. **4. RAG Pipeline**: Extensive RAG capabilities that cover everything from document ingestion to retrieval, with out-of-box support for text extraction from PDFs, PPTs, and other common document formats. **5. Agent capabilities**: You can define agents based on LLM Function Calling or ReAct, and add pre-built or custom tools for the agent. Dify provides 50+ built-in tools for AI agents, such as Google Search, DALL·E, Stable Diffusion and WolframAlpha. **6. LLMOps**: Monitor and analyze application logs and performance over time. You could continuously improve prompts, datasets, and models based on production data and annotations. **7. Backend-as-a-Service**: All of Dify's offerings come with corresponding APIs, so you could effortlessly integrate Dify into your own business logic. ## Using Dify - **Cloud <br/>** We host a [Dify Cloud](https://dify.ai) service for anyone to try with zero setup. It provides all the capabilities of the self-deployed version, and includes 200 free GPT-4 calls in the sandbox plan. If you run into issues with Dify Cloud, [contact our Cloud support team](mailto:cloud@dify.ai?subject=%5BGitHub%5DDify%20Cloud%20Support). - **Self-hosting Dify Community Edition<br/>** Quickly get Dify running in your environment with this [starter guide](#quick-start). Use our [documentation](https://docs.dify.ai) for further references and more in-depth instructions. - **Dify for enterprise / organizations<br/>** We provide additional enterprise-centric features. [Send us an email](mailto:business@dify.ai?subject=%5BGitHub%5DBusiness%20License%20Inquiry) to discuss your enterprise needs. <br/> ## Staying ahead Star Dify on GitHub and be instantly notified of new releases. ![star-us](https://github.com/langgenius/dify/assets/13230914/b823edc1-6388-4e25-ad45-2f6b187adbb4) ## Advanced Setup ### Custom configurations If you need to customize the configuration, edit `docker/.env`. The essential startup defaults live in [`docker/.env.example`](docker/.env.example), and optional advanced variables are split under `docker/envs/` by theme. After making any changes, re-run `docker compose up -d` from the `docker` directory. You can find the full list of available environment variables [here](https://docs.dify.ai/getting-started/install-self-hosted/environments). ### Metrics Monitoring with Grafana Import the dashboard to Grafana, using Dify's PostgreSQL database as data source, to monitor metrics in granularity of apps, tenants, messages, and more. - [Grafana Dashboard by @bowenliang123](https://github.com/bowenliang123/dify-grafana-dashboard) ### Deployment with Kubernetes If you'd like to configure a highly available setup, there are community-contributed [Helm Charts](https://helm.sh/) and YAML files which allow Dify to be deployed on Kubernetes. - [Helm Chart by @LeoQuote](https://github.com/douban/charts/tree/master/charts/dify) - [Helm Chart by @BorisPolonsky](https://github.com/BorisPolonsky/dify-helm) - [Helm Chart by @magicsong](https://github.com/magicsong/ai-charts) - [YAML file by @Winson-030](https://github.com/Winson-030/dify-kubernetes) - [YAML file by @wyy-holding](https://github.com/wyy-holding/dify-k8s) - [🚀 NEW! YAML files (Supports Dify v1.6.0) by @Zhoneym](https://github.com/Zhoneym/DifyAI-Kubernetes) #### Using Terraform for Deployment Deploy Dify to Cloud Platform with a single click using [terraform](https://www.terraform.io/) ##### Azure Global - [Azure Terraform by @nikawang](https://github.com/nikawang/dify-azure-terraform) ##### Google Cloud - [Google Cloud Terraform by @sotazum](https://github.com/DeNA/dify-google-cloud-terraform) #### Using AWS CDK for Deployment Deploy Dify to AWS with [CDK](https://aws.amazon.com/cdk/) ##### AWS - [AWS CDK by @KevinZhao (EKS based)](https://github.com/aws-samples/solution-for-deploying-dify-on-aws) - [AWS CDK by @tmokmss (ECS based)](https://github.com/aws-samples/dify-self-hosted-on-aws) #### Using Alibaba Cloud Computing Nest Quickly deploy Dify to Alibaba cloud with [Alibaba Cloud Computing Nest](https://computenest.console.aliyun.com/service/instance/create/default?type=user&ServiceName=Dify%E7%A4%BE%E5%8C%BA%E7%89%88) #### Using Alibaba Cloud Data Management One-Click deploy Dify to Alibaba Cloud with [Alibaba Cloud Data Management](https://www.alibabacloud.com/help/en/dms/dify-in-invitational-preview/) #### Deploy to AKS with Azure Devops Pipeline One-Click deploy Dify to AKS with [Azure Devops Pipeline Helm Chart by @LeoZhang](https://github.com/Ruiruiz30/Dify-helm-chart-AKS) ## Contributing For those who'd like to contribute code, see our [Contribution Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md). At the same time, please consider supporting Dify by sharing it on social media and at events and conferences. > We are looking for contributors to help translate Dify into languages other than Mandarin or English. If you are interested in helping, please see the [i18n README](https://github.com/langgenius/dify/blob/main/web/i18n-config/README.md) for more information, and leave us a comment in the `global-users` channel of our [Discord Community Server](https://discord.gg/8Tpq4AcN9c). ## Community & contact - [GitHub Discussion](https://github.com/langgenius/dify/discussions). Best for: sharing feedback and asking questions. - [GitHub Issues](https://github.com/langgenius/dify/issues). Best for: bugs you encounter using Dify.AI, and feature proposals. See our [Contribution Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md). - [Discord](https://discord.gg/FngNHpbcY7). Best for: sharing your applications and hanging out with the community. - [X(Twitter)](https://twitter.com/dify_ai). Best for: sharing your applications and hanging out with the community. **Contributors** <a href="https://github.com/langgenius/dify/graphs/contributors"> <img src="https://contrib.rocks/image?repo=langgenius/dify" /> </a> ## Star History <!-- GitHub token name: star-history --> <a href="https://www.star-history.com/?repos=langgenius%2Fdify&type=date&legend=top-left"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=langgenius/dify&type=date&theme=dark&legend=top-left&sealed_token=p-SWD-UXZEDc5a2d0EMfgMmyCwVyRlSof0Qox68v7k4PvQPKRlCx0jDIlNztw7mbA6DEn96R50DojO9pCi5LQUlDBAoIhRswt8-GuC8K3rZQ3naJUXbuHqR_oItIW2F0NNM-7npevzw5SXp7L5mwixgqJncAvAGzuGq5zmhQfiDRSW_Jd6y8TQCZMJbt" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=langgenius/dify&type=date&legend=top-left&sealed_token=p-SWD-UXZEDc5a2d0EMfgMmyCwVyRlSof0Qox68v7k4PvQPKRlCx0jDIlNztw7mbA6DEn96R50DojO9pCi5LQUlDBAoIhRswt8-GuC8K3rZQ3naJUXbuHqR_oItIW2F0NNM-7npevzw5SXp7L5mwixgqJncAvAGzuGq5zmhQfiDRSW_Jd6y8TQCZMJbt" /> <img alt="Star History Chart" src="https://api.star-history.com/chart?repos=langgenius/dify&type=date&legend=top-left&sealed_token=p-SWD-UXZEDc5a2d0EMfgMmyCwVyRlSof0Qox68v7k4PvQPKRlCx0jDIlNztw7mbA6DEn96R50DojO9pCi5LQUlDBAoIhRswt8-GuC8K3rZQ3naJUXbuHqR_oItIW2F0NNM-7npevzw5SXp7L5mwixgqJncAvAGzuGq5zmhQfiDRSW_Jd6y8TQCZMJbt" /> </picture> </a> ## Security disclosure To protect your privacy, please avoid posting security issues on GitHub. Instead, report issues to security@dify.ai, and our team will respond with detailed answer. ## License This repository is licensed under the [Dify Open Source License](LICENSE), based on Apache 2.0 with additional conditions.
▸ 中文总结(生成于 2026-07-19 13:11)

langgenius/dify 项目介绍

一句话概括

Dify 是一个面向生产环境的、用于开发 AI 智能体工作流的低代码/无代码平台。

项目核心内容

  • 项目定位:Dify 是一个开源的、生产就绪的 AI 应用开发平台,专注于帮助开发者和非技术人员快速构建、部署和管理基于大语言模型(LLM)的智能体应用和工作流。

  • 解决的核心问题:

    • 降低 AI 应用开发的门槛,让不擅长编码的用户也能通过可视化方式编排复杂的 AI 工作流
    • 提供从原型到生产的一站式解决方案,包括数据管理、提示词工程、模型调用、应用监控等
    • 解决多模型(如 GPT-4、Gemini、开源模型)统一管理和切换的问题
    • 支持 RAG(检索增强生成)和 MCP(模型上下文协议)等高级 AI 架构的快速集成
  • 技术架构与实现思路:

    • 基于 TypeScript(前端)和 Python(后端)构建,使用 Next.js 作为前端框架
    • 采用模块化架构,核心组件包括:工作流引擎、RAG 引擎、模型适配层、应用运行时
    • 提供可视化拖拽式工作流编辑器,支持 agentic workflow(智能体工作流)的编排
    • 内置 RAG 管道,支持文档导入、分块、向量化、检索等完整流程
    • 通过插件机制支持多种 LLM 提供商(OpenAI、Gemini 等)和向量数据库
  • 技术亮点:

    • 低代码/无代码:提供可视化界面,无需编写代码即可构建复杂的 AI 工作流
    • 生产就绪:包含监控、日志、调试、版本管理等生产环境所需的基础设施
    • 多模型支持:统一抽象层,可无缝切换或组合使用不同 LLM 模型
    • RAG 原生支持:内置完整的检索增强生成流程,无需额外配置
    • MCP 支持:遵循模型上下文协议,便于与外部工具和系统集成
    • 开源且活跃:拥有超过 14 万 Star,社区活跃度高,持续迭代