【AI工具箱】Dify:可视化 AI 应用开发平台
Dify 是什么?
想象一下,你想做一个 AI 客服、AI 助手或者 AI 文档分析工具,但是不会编程怎么办?
Dify 就像是一个"AI 乐高积木盒":
- 零代码开发:像搭积木一样拖拽组件,画出流程图
- 知识库功能:把你的文档、资料"喂"给 AI,它就能基于这些内容回答问题
- 多种 AI 模型:支持 GPT、Claude、国产大模型等各种 AI
- 可视化界面:所见即所得,不需要写代码
简单来说:你完全不用懂编程,只要拖拽连线画出流程,再把文档资料上传,就能组装出一个既懂你业务、又能办事的专属 AI 助手!
官方文档
完整的使用教程请参考:docs.dify.ai/zh-hans
本地部署教程
为什么要本地部署?
- 💰 省钱:不需要按使用量付费
- 🔒 隐私:数据在自己电脑上,更安全
- ⚡ 自由:想怎么用就怎么用,没有限制
前提条件 :确保你已经安装了 Docker(查看 Docker 安装教程)
第一步:修改端口(可选)
作用: 如果默认端口(80)被占用,需要修改成其他端口。
操作步骤:
- 进入 Dify 项目的
docker文件夹 - 找到
.env文件,用文本编辑器打开 - 找到
EXPOSE_NGINX_PORT=80这一行 - 把
80改成其他端口号(比如8011)
文件路径: ./docker/.env

第二步:启动 Dify
启动命令:
bash
# 进入 docker 目录后执行
docker compose -p dify up -d
说明:
-p dify:项目名称设为 difyup:启动服务-d:后台运行
访问地址: 启动成功后,在浏览器打开 http://localhost 或 http://localhost:你的端口号
停止 Dify
停止命令:
bash
docker compose -p dify down
说明: 这个命令会停止并删除所有容器,但数据会保留。
配置反向代理(进阶,使用域名访问)
什么是反向代理? 简单来说,就是让你的 Dify 可以通过域名(比如 ai.yourdomain.com)访问,而不是 IP 地址。
适用场景: 如果你有自己的域名,想让 Dify 更专业、更好记。
Nginx 配置示例:
nginx
location ^~ / {
proxy_pass http://127.0.0.1:8011;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_connect_timeout 60s;
proxy_send_timeout 600s;
proxy_read_timeout 600s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
注意: 把 8011 改成你实际使用的端口。
数据备份与迁移
重要提示: Dify 的所有数据(知识库、对话记录、配置等)都保存在 /docker/volumes 目录。
备份方法:
bash
# 方法一:直接复制整个 volumes 文件夹
# Windows: 用资源管理器复制
# Linux/Mac:
cp -r ./docker/volumes ./docker/volumes-backup
# 方法二:打包压缩(推荐,节省空间)
tar -cvf volumes-backup.tar.gz ./docker/volumes
迁移到新电脑:
- 把备份的
volumes文件夹复制到新电脑的 Dify 项目的docker目录下 - 运行
docker compose -p dify up -d即可

升级 Dify 到最新版本
为什么要升级? 获取新功能、性能优化和 bug 修复。
升级步骤:
bash
# 1. 备份配置文件(可选但推荐)
cd docker
cp docker-compose.yaml docker-compose.yaml.backup
# 2. 获取最新代码
git checkout main
git pull origin main
# 3. 停止当前服务
docker compose down
# 4. 备份数据(重要!)
tar -cvf volumes-backup-$(date +%s).tgz volumes
# 5. 启动新版本
docker compose up -d
小提示:
- 升级前一定要备份数据!
- 如果不是通过 git 安装的,可以直接下载最新的 docker-compose.yaml 文件替换
常见问题解决
问题 1:端口被占用
现象: 启动时报错 Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use
原因: 80 端口已经被其他程序占用了。
解决方法:
- 打开文件:
./docker/.env - 找到
EXPOSE_NGINX_PORT=80 - 改成其他端口,比如:
EXPOSE_NGINX_PORT=8011 - 重启 Dify
问题 2:忘记登录密码
解决方法:
bash
# 1. 进入 API 容器
docker compose exec api bash
# 2. 执行密码重置命令
flask reset-password
# 3. 按照提示输入新密码即可
问题 3:代码执行节点无法引入第三方 Python 库
现象: 在代码执行节点中使用 import requests 等第三方库时报错。
解决方法:
- 打开文件:
docker/volumes/sandbox/dependencies/python-requirements.txt - 在文件末尾添加需要的库,比如: requests pandas numpy
- 保存文件
- 重启 Dify:
docker compose -p dify restart
问题 4:使用清华镜像源加速 Python 库下载
作用: 让 Python 库下载更快。
操作方法:
-
打开文件:
docker/volumes/sandbox/conf/config.yaml -
添加一行配置:
yamlpython_pip_mirror_url: https://pypi.tuna.tsinghua.edu.cn/simple -
保存并重启
提示: 可以参考示例文件 sandbox/conf/config/config.yaml.example
问题 5:替换官方 sandbox(解决某些兼容性问题)
参考教程: dify-sandbox-py
修改方法:
在 docker-compose.yaml 文件中找到 sandbox 部分,修改镜像:
yaml
sandbox:
# image: langgenius/dify-sandbox:0.2.10 # 注释掉官方镜像
image: svcvit/dify-sandbox-py:0.1.4 # 使用替代镜像
问题 6:代码节点无法获取上传的文件
现象: 在工作流中上传了文件,但代码节点无法访问。
解决方法:
在 .env 文件中添加或修改配置:
bash
FILES_URL=http://你的服务器地址
说明: 配置后,上传的文件会以 URL 形式传递给后续节点,代码节点就可以通过 URL 下载和处理文件了。
问题 7:无法连接本地 Ollama 模型
现象: 添加本地 Ollama 模型时连接失败。
解决方法:
在 .env 文件中添加以下配置:
bash
PROVIDER_OLLAMA_API_BASE_URL=http://host.docker.internal:11434
PLUGIN_WORKING_PATH=/app/cwd
说明:
host.docker.internal是 Docker 内部访问宿主机的特殊地址11434是 Ollama 的默认端口
性能优化与限制调整
调整并行分支数量
作用: 提高工作流的并行处理能力。
配置方法:
在 .env 文件中修改:
bash
MAX_PARALLEL_LIMIT=10 # 默认值,可根据电脑配置调整
建议:
- 配置较低的电脑:保持默认值 10
- 配置较高的电脑:可以提高到 20-30
- 设置过大可能导致内存不足
调整数组和字符串长度限制
问题场景: 代码执行节点返回大量数据时报错。
配置方法(在 .env 文件中):
bash
# 数组长度限制(默认 30)
CODE_MAX_STRING_ARRAY_LENGTH=100
# 字符串长度限制(默认 80000)
CODE_MAX_STRING_LENGTH=200000
调整工作流执行限制
配置方法(在 .env 文件中):
bash
# 工作流最大并发线程数(默认 100)
MAX_SUBMIT_COUNT=200
# 工作流执行总次数限制(默认 500)
WORKFLOW_MAX_EXECUTION_STEPS=1000
# 工作流调用深度限制(默认 5)
WORKFLOW_CALL_MAX_DEPTH=10
# 工作进程数(默认值 = CPU核心数×2+1)
SERVER_WORKER_AMOUNT=5
说明:
- 这些限制是为了防止系统资源被耗尽
- 根据实际需求和服务器配置调整
- 修改后需要重启 Dify
调整文件上传大小限制
作用: 允许上传更大的文件到知识库或多模态节点。
配置方法(在 .env 文件中):
bash
# 知识库文件上传大小限制(单位:MB)
UPLOAD_FILE_SIZE_LIMIT=1024
# 批量上传文件数量
UPLOAD_FILE_BATCH_LIMIT=50
# 多模态文件大小限制
UPLOAD_IMAGE_FILE_SIZE_LIMIT=1000 # 图片(MB)
UPLOAD_VIDEO_FILE_SIZE_LIMIT=10000 # 视频(MB)
UPLOAD_AUDIO_FILE_SIZE_LIMIT=50 # 音频(MB)
# Nginx 总容量大小限制
NGINX_CLIENT_MAX_BODY_SIZE=150000M
注意:
- 增大限制前确保服务器有足够的存储空间
- 修改后需重启 Dify
其他配置技巧
安装本地插件
默认情况下,Dify 会验证插件签名,本地开发的插件可能无法安装。
解决方法(在 .env 文件中):
bash
FORCE_VERIFYING_SIGNATURE=false
变量聚合节点的使用技巧
重要提示: 如果要等待多个变量都到达后再继续执行,需要为每个变量创建独立的分组。
正确做法:
- 创建多个变量分组
- 每个分组添加对应的变量
- 分支场景同样适用此规则

解决 URL 上传文件的验证错误
现象: 通过 URL 方式上传文件时出现 pydantic 验证错误。

解决方法:
在 docker/.env 文件中添加或修改相关配置:

总结
通过这篇教程,你应该已经掌握了:
- ✅ Dify 的基本概念:零代码 AI 应用开发平台
- ✅ 本地部署方法:使用 Docker 快速部署
- ✅ 常见问题解决:端口占用、密码重置、第三方库安装等
- ✅ 性能优化:根据需求调整各种限制参数
- ✅ 数据管理:备份、迁移和升级操作
下一步建议:
- 访问 官方文档 学习如何创建工作流
- 尝试构建你的第一个 AI 应用
- 加入 Dify 社区,获取更多帮助
祝你玩得开心!🎉