开源协议
Apache 2.0
附加条件:不运行多租户、不能修改前端交互、logo版权信息不能修改;
使用建议:仅使用后端 SDK 或 API ,不建议使用系统太复杂了不适合集成或二开。
架构分析
Dify 采用前后端分离,后端基于 Flask + Celery,前端基于 Next.js + React,支持多模型、RAG、工作流和插件扩展,适合构建 LLM 应用平台。架构设计遵循 DDD 和清洁架构原则,代码组织清晰,便于维护和扩展。
后端:
- Web 框架:Flask 3.1.2
- ORM:SQLAlchemy 2.0.29 + Flask-SQLAlchemy
- 数据库迁移:Flask-Migrate
- 异步任务:Celery 5.5.2 + Redis
- WSGI 服务器:Gunicorn + Gevent
- 依赖管理:UV(Python 包管理器)
- Python 版本:3.11-3.12
api/
├── core/ # 核心业务逻辑层
│ ├── agent/ # Agent 运行器(CoT、Function Calling)
│ ├── app/ # 应用管理(配置、任务管道)
│ ├── rag/ # RAG 管道
│ ├── workflow/ # 工作流引擎
│ ├── model_runtime/ # 模型运行时(支持多提供商)
│ ├── plugin/ # 插件系统
│ ├── tools/ # 工具管理(50+内置工具)
│ ├── datasource/ # 数据源管理
│ ├── moderation/ # 内容审核
│ ├── mcp/ # Model Context Protocol
│ └── ops/ # 可观测性(Langfuse、LangSmith等)
├── controllers/ # 控制器层(API 路由)
│ ├── console/ # 控制台 API
│ ├── service_api/ # 服务 API
│ ├── web/ # Web API
│ └── inner_api/ # 内部 API
├── services/ # 服务层(业务逻辑)
│ ├── app_service.py
│ ├── workflow_service.py
│ ├── dataset_service.py
│ └── ...
├── models/ # 数据模型
├── repositories/ # 数据访问层
├── extensions/ # Flask 扩展初始化
└── configs/ # 配置管理
前端:
- 框架:Next.js 15.5.6(App Router)
- React:19.1.1
- TypeScript:5.9.3(严格模式)
- 状态管理:
- Zustand 4.5.7
- React Query (@tanstack/react-query) 5.90.5
- SWR 2.3.6
- UI 库:
- Tailwind CSS 3.4.18
- Headless UI 2.2.1
- Heroicons
- 富文本编辑器:Lexical 0.36.2
- 工作流可视化:ReactFlow 11.11.4
- 代码编辑器:Monaco Editor
- 图表:ECharts 5.6.0
- 国际化:i18next + react-i18next
web/
├── app/ # Next.js App Router 页面
│ ├── (commonLayout)/ # 通用布局路由组
│ │ ├── apps/ # 应用管理
│ │ ├── datasets/ # 数据集管理
│ │ └── workflow/ # 工作流
│ └── (shareLayout)/ # 分享布局路由组
├── components/ # React 组件
│ ├── workflow/ # 工作流组件(813个文件)
│ ├── app/ # 应用相关组件
│ ├── datasets/ # 数据集组件
│ └── plugins/ # 插件组件
├── service/ # API 服务层
├── hooks/ # 自定义 Hooks
├── context/ # React Context
├── utils/ # 工具函数
├── i18n/ # 国际化资源(612个文件)
└── types/ # TypeScript 类型定义
运行
uv sync
uv run flask db upgrade
uv run flask run --host 0.0.0.0 --port=5001 --debug
uv run python -m celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace,app_deletion
pnpm run dev
dify-plugin-daemon 服务运行
docker run -d
--restart always
-e DB_HOST="host.docker.internal"
-e DB_PORT="5432"
-e DB_USERNAME="postgres"
-e DB_PASSWORD="tangzhangss"
-e DB_DATABASE="dify_plugin"
-e REDIS_HOST="host.docker.internal"
-e REDIS_PORT="16379"
-e REDIS_PASSWORD="tangzhangss"
-e SERVER_PORT="5002"
-e SERVER_KEY="lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi"
-e MAX_PLUGIN_PACKAGE_SIZE="52428800"
-e PPROF_ENABLED="false"
-e DIFY_INNER_API_URL="http://host.docker.internal:5001"
-e DIFY_INNER_API_KEY="QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1"
-e PLUGIN_REMOTE_INSTALLING_HOST="0.0.0.0"
-e PLUGIN_REMOTE_INSTALLING_PORT="5003"
-e PLUGIN_WORKING_PATH="/app/storage/cwd"
-e FORCE_VERIFYING_SIGNATURE="true"
-e PYTHON_ENV_INIT_TIMEOUT="120"
-e PLUGIN_MAX_EXECUTION_TIMEOUT="600"
-e PIP_MIRROR_URL=""
-p "5002:5002"
-p "5003:5003"
-v "H:/opensource/dify/volumes/plugin_daemon:/app/storage"
langgenius/dify-plugin-daemon:0.4.0-local
1.环境报错
\\vc++xxx,
安装生成工具不要安装到中文目录下,最好安装在C盘;
\\xxxcfloat(10):
fatal error C1083:
生成工具修改windows sdk版本 找最新
\\500 Internal Server Error: module 'jieba.analyse' has no attribute 'default_tfidf'
将jieba文件夹和jieba-0.42.1.dist-info文件夹 放在 api目录下
2.迁移数据库 需要先创建数据库,不然会报错 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 i
3.前端包管理工具是pnpm不是npm..用npm install 用错会拉取依赖失败。
4.登录it_tangzhang@163.com/tangzhangss@123