📌 新手提示:本文结尾提供了一键部署脚本(Windows / macOS / Linux 通用),帮你把 Dify 完整装起来,配好模型就能动手搭应用。
前言
前两篇文章我们聊的是"用代码调 API"(Claude API / DeepSeek API)和"用框架写程序"(LangChain RAG)——适合喜欢写代码的同学。但如果你不想写代码,或者你想在一个可视化界面里快速把应用搭出来、直接复用成熟组件,那 Dify 是你的菜。
Dify 是一个用于构建 AI 应用的开源平台(GitHub 46k+ 星):网页界面 + 拖拽编排,不写一行代码就能做出聊天机器人、知识库问答、自动化工作流、Agent(能调用工具的 AI 助手)……做完还能一键发布成网页应用,或用 API 接入你自己的系统。
一句话定位:
写代码搭 AI 应用 = 自己买菜做饭;用 Dify 搭 AI 应用 = 用厨房智能炒菜锅——功能覆盖面 90%,上手只要十分钟。
本教程面向零基础读者,走完四步:
- 用 Docker 一键部署 Dify(自托管,数据完全归你)
- 接入大模型(一个 Key 搞定)
- 拖拽做出第一个聊天机器人
- 挂上你自己的知识库(RAG 能力内置)
官方文档:https://docs.dify.ai/zh-hans(中文);GitHub:https://github.com/langgenius/dify(社区版开源)。
一、Dify 能做什么(先看能力地图)
官方首页点名的核心能力:
- 聊天机器人:对话式应用,配上系统提示词(给 AI 立人设)就是客服/助理
- Agent 编排:AI 可以调用工具(查数据库、发邮件、传 API),不止"聊天",还能"办事"
- Agentic 工作流:可视化流程编排,条件分支、循环、多步调度都拖出来
- 知识库(基于自有数据的应用):上传 PDF/Word/网页,自动切分向量化,聊天时"现查现答"——这正是 RAG(Retrieval-Augmented Generation,检索增强生成,“给 AI 塞专属资料、让它只依据资料作答"的技术),Dify 把它做成了上传即用,不用写任何代码
- 插件扩展:官方插件市场,扩展工具和模型
- 发布方式:一键发布为 Web 应用(独立链接),或通过 API 集成到你的系统
二、部署 Dify(社区版,Docker 一键装)
Dify 社区版完全开源、数据自持。部署需要 Docker(容器技术,可以理解成"一键打包运行软件的盒子”)与 Docker Compose(管理多个容器组合的工具)。
门槛(官方要求):CPU ≥ 2 核,内存 ≥ 4 GB(Dify 全家桶包含数据库、向量库、缓存等 10+ 个容器)。云服务器或个人电脑满足即可。
打开终端执行四步:
# 1. 拉取并进入官方部署目录(会自动 git clone 最新发行版)
git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git
cd dify/docker
# 2. 复制环境变量模板(.env 是 Dify 的配置文件)
cp .env.example .env
# 3. 启动全部服务(首次会拉取镜像,需要几分钟到十几分钟)
docker compose up -d
# 4. 查看状态,容器全部 UP 即成功
docker compose ps
没装 Docker?Windows 装 Docker Desktop(WSL2 后端)、Linux/macOS 装 Docker Engine 即可。文末脚本会替你检查并引导。
国内 clone GitHub 慢:把第 1 步的
https://github.com/换成https://ghfast.top/https://github.com/(镜像前缀)。文末脚本已内置。
启动完成后:
- 浏览器打开:
http://localhost/install(初始化:设置管理员邮箱和密码)——如果部署在云服务器,把 localhost 换成你的服务器 IP(记得放行 80 端口) - 再次访问:
http://localhost,用刚才的账号登录
三、接入大模型(整个平台的"大脑")
登录后第一件事:添加模型供应商——不接模型,Dify 只是个空壳。
入口:右上角头像 →「设置」→「模型供应商」。Dify 支持几十家模型服务商,其中最通用的就是 OpenAI-API 兼容格式——这代表你不需要绑定任何一家:DeepSeek、Ollama 本地模型、以及国内的各种 API 中转站,只要提供「API 地址 + API Key + 模型名」,都能接进来。
以国内直连的云间 API 中转站为例(https://cloudzone-api.cyou/,OpenAI 兼容格式):注册拿到 Key 后,在模型供应商页选择 OpenAI-API 兼容类,填入:
| 配置项 | 填什么 |
|---|---|
| API Key | 云间 API 控制台复制的 Key |
| API Base URL | https://cloudzone-api.cyou/v1(以控制台显示为准) |
| 模型名字 | 如 gpt-5.5 / deepseek-v4-pro / claude-sonnet-5(服务支持的模型名) |
保存后点「模型测试」,能正常回复就说明接好了——之后创建的任何应用都能从下拉框里直接选这个模型。
国内为什么要用中转站?官方 OpenAI/Claude 需要海外信用卡且国内不可直连;中转站一把 Key 管全部模型、按 token 精确计费(token 是模型处理文本的最小单位),注册即用。Dify 里加的 10 个模型,可能是 10 个不同厂商,但都走同一把 Key。
四、创建第一个聊天机器人(拖拽三分钟)
- 首页点「创建应用」→ 选「聊天助手」→ 起个名字
- 左侧「提示词编排」面板,在"系统提示词"里写下人设,例如:
你是 CleanResolver 的客服小澈,回答简洁友好 - 右上角绑定模型:选你在上一步添加的模型
- 右侧对话框直接试用——已经能聊了!
真正动手点的进阶:
- 添加上下文:编排面板里点「添加功能」→ 勾选"知识库"→(去「知识库」页上传你的 PDF/Word/TXT,Dify 自动切分向量化)→ 在编排里引用它——你的机器人立刻拥有了"只依据你的资料回答"的能力(这一整套就是 RAG)
- 添加工具:勾选"Agent"模式,AI 就能调用你授权的工具(比如搜索、发消息),自动决定"什么时候用什么工具"
- 工作流:对逻辑要求高的场景,切到「工作流」模式,把节点拖成一张流程图
五、发布与集成
点右上角「发布」:
- Web 应用:生成一个独立链接,发给任何人直接用(还能自定义外观)
- API 访问:每个应用自动有独立 API Endpoint(地址)与 API Key,你的程序/网站可以调用——和我们在前几篇学的 API 调用完全同一套套路(OpenAI 兼容格式)
六、常见问题
| 现象 | 原因与解决 |
|---|---|
http://localhost/install 打不开 | 容器没起来:docker compose ps 看 Status;首次启动要在 up -d 后等 1-2 分钟 |
| 内存不足(云服务器常见) | Dify 全家桶需要 ≥4GB 内存;小机器可换更轻量的单容器部署(镁光,见官方文档)或直接用 Dify Cloud 托管版 |
| 80 端口被占 | 改 .env 里的 EXPOSE_NGINX_PORT 为其他端口(如 8080),改完 docker compose up -d 重启 |
| 模型测试失败 401 | Key 填错 / Base URL 填错 / 模型名服务不支持——逐项核对上节表格 |
| 发消息一直转圈 | 模型供应商服务不可达:先用 curl 测中转地址通不通(curl https://cloudzone-api.cyou/v1/models 带 Key),再回 Dify |
升级到新版本:
cd dify/docker
git pull
docker compose down
docker compose up -d
升级后记得对照各
.env.example检查.env是否有新增配置项(官方升级文档会说明)。
尾声
到这你已经拥有一个自托管的 AI 应用开发平台:模型接好、机器人聊起来、知识库挂上、工作流搭起来——全程没写一行代码。
再往后走两个方向:一是把应用调得更"产出级"(提示词打磨、工作流分支、数据接入);二是让 AI “办事”(Agent + 工具),Dify 的插件市场也有很多现成方案。
如果你还没配模型 Key,顺手在云间 API(https://cloudzone-api.cyou/)注册一个吧——Dify 的模型供应商设置里填它的 OpenAI 兼容地址就行了,Claude / GPT / DeepSeek / GLM / Kimi 一个账号全管,按 token 精确计费,国内直连无门槛。有疑问也欢迎在评论区交流。
附:一键部署脚本
不方便下载的同学可以直接复制下方完整源码,新建文本文档粘贴后改后缀为 .sh(macOS/Linux/WSL)或 .ps1(Windows)运行。也可以下载现成文件:
- 下载
install-dify.sh(macOS / Linux / WSL):https://cleanresolver.com/scripts/install-dify.sh - 下载
install-dify.ps1(Windows):https://cleanresolver.com/scripts/install-dify.ps1
macOS / Linux / WSL(.sh)
#!/usr/bin/env bash
set -u
# ============================================================
# Dify 零代码 AI 应用开发 一键脚本(macOS / Linux / WSL)
# 公开源码,欢迎审查 —— 不放心可先复制给 AI 判断
# 默认配置:云间 API 中转站(https://cloudzone-api.cyou/)
# 前置要求:Docker + Docker Compose;CPU ≥ 2 核,内存 ≥ 4GB
# ============================================================
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; CYAN='\033[0;36m'; NC='\033[0m'
info() { echo -e "${GREEN}[INFO]${NC} $1"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
error() { echo -e "${RED}[ERROR]${NC} $1"; }
step() { echo -e "${CYAN}[STEP]${NC} $1"; }
CLOUDZONE_URL="https://cloudzone-api.cyou"
detect_network() {
step "检测网络环境(国内 / 国外)..."
if curl -fsI --max-time 5 "https://claude.ai" >/dev/null 2>&1; then
info "可直连 claude.ai,判定为海外网络"
echo "overseas"
else
warn "无法直连 claude.ai,判定为国内网络环境(将自动切换国内镜像)"
echo "domestic"
fi
}
check_docker() {
step "检查 Docker 与 Docker Compose..."
if ! command -v docker >/dev/null 2>&1; then
error "未找到 docker。请先安装 Docker:"
echo " · Windows:安装 Docker Desktop(启用 WSL2 后端)https://www.docker.com/products/docker-desktop/"
echo " · macOS:安装 Docker Desktop https://www.docker.com/products/docker-desktop/"
echo " · Linux:https://docs.docker.com/engine/install/ 按发行版安装"
return 1
fi
if ! docker compose version >/dev/null 2>&1; then
error "docker compose 不可用(需要 Compose v2)。请升级 Docker 后重试。"
return 1
fi
info "Docker:$(docker --version 2>&1);Compose:$(docker compose version 2>&1)"
return 0
}
clone_dify() {
local net="$1"
if [ -d "dify/docker" ]; then
info "检测到 dify/ 目录已存在,跳过 clone"
return 0
fi
step "克隆 Dify 仓库(约 1-3 分钟,视网络而定)..."
local repo="https://github.com/langgenius/dify.git"
if [ "$net" = "domestic" ]; then
repo="https://ghfast.top/https://github.com/langgenius/dify.git"
fi
if git clone --depth 1 "$repo" 2>/dev/null; then
info "clone 成功"
return 0
fi
warn "主源失败,回退备用源..."
if git clone --depth 1 "https://ghfast.top/https://github.com/langgenius/dify.git" 2>/dev/null; then
info "备用源 clone 成功"
return 0
fi
error "clone 失败。请手动执行:git clone https://ghfast.top/https://github.com/langgenius/dify.git 后重新运行本脚本。"
return 1
}
start_dify() {
step "启动 Dify 全部服务(首次拉镜像可能耗时 5-15 分钟)..."
cd dify/docker || return 1
if [ ! -f ".env" ]; then
info "创建 .env(复制官方模板;.env 是 Dify 的配置文件,可后续修改端口等)"
cp .env.example .env
fi
if docker compose up -d; then
info "容器已启动"
else
warn "首次启动失败,等待 10 秒后重试一次..."
sleep 10
if ! docker compose up -d; then
error "docker compose up 失败。请执行 cd dify/docker && docker compose up 查看详细报错。"
return 1
fi
fi
step "等待服务就绪(检查容器状态)..."
docker compose ps
return 0
}
configure_hint() {
step "模型 Key 提示(部署完成后在 Dify 里配置模型)..."
echo ""
echo "Dify 部署好后需要接入大模型 Key 才能创建应用。默认推荐云间 API 中转站:"
echo " · OpenAI 兼容格式,Dify 模型供应商直接填 Base URL 即可"
echo " · 香港节点国内直连,Claude/GPT/DeepSeek/GLM 等 90+ 模型一把 Key 全管"
echo ""
echo "是否现在打开注册页获取 Key?"
echo " Y - 立即跳转至 ${CLOUDZONE_URL}"
echo " N - 直接跳过(用我自己的 Key)"
read -r -p "请选择 [Y/N]: " choice
if [ "${choice:-N}" = "Y" ] || [ "${choice:-N}" = "y" ]; then
if command -v xdg-open >/dev/null 2>&1; then
xdg-open "$CLOUDZONE_URL" >/dev/null 2>&1
elif command -v open >/dev/null 2>&1; then
open "$CLOUDZONE_URL" >/dev/null 2>&1
else
warn "无法自动打开浏览器,请手动访问:$CLOUDZONE_URL"
fi
echo "拿到 Key 后,到 Dify「设置 → 模型供应商」填入:"
echo " API Base URL : https://cloudzone-api.cyou/v1(以控制台显示为准)"
echo " API Key : 刚复制的 sk-... Key"
echo ""
else
info "已跳过。回到 Dify 设置页添加你自己的模型供应商即可。"
fi
}
main() {
echo "============================================"
echo " Dify 零代码 AI 应用开发 一键脚本"
echo " 适用于 macOS / Linux / WSL"
echo " 默认接入:云间 API 中转站"
echo "============================================"
echo ""
local NET
NET=$(detect_network)
if ! check_docker; then
error "Docker 环境不满足,脚本终止。请先安装 Docker(见上方指引)后重跑。"
exit 1
fi
if ! clone_dify "$NET"; then
exit 1
fi
if ! start_dify; then
error "Dify 启动失败,脚本终止。请按上方提示手动排查。"
exit 1
fi
configure_hint
echo ""
echo "============================================"
info "全部完成!"
echo " 首次部署:浏览器打开 http://localhost/install 初始化管理员"
echo " 日常登录:http://localhost (云服务器请换成你的 IP,并放行 80 端口)"
echo " 模型配置:登录后右上角头像 → 设置 → 模型供应商"
echo "============================================"
}
main "$@"
Windows(.ps1)
Windows 运行 .ps1 若提示执行策略限制:打开 PowerShell 输入
Set-ExecutionPolicy -Scope Process Bypass后回车,再运行脚本。-Scope Process仅对当前窗口生效,关掉即恢复,不会改动系统全局策略(系统默认限制来自安全设计,不要为了省事永久 Bypass)。
# ============================================================
# Dify 零代码 AI 应用开发 一键脚本(Windows PowerShell)
# 公开源码,欢迎审查 -- 不放心可先复制给 AI 判断
# 默认配置:云间 API 中转站(https://cloudzone-api.cyou/)
# 前置要求:Docker Desktop(WSL2 后端);CPU >= 2 核,内存 >= 4GB
# ============================================================
$ErrorActionPreference = "Stop"
function Write-Info { Write-Host "[INFO] $args" -ForegroundColor Green }
function Write-Warn { Write-Host "[WARN] $args" -ForegroundColor Yellow }
function Write-Err { Write-Host "[ERROR] $args" -ForegroundColor Red }
function Write-Step { Write-Host "[STEP] $args" -ForegroundColor Cyan }
$CLOUDZONE_URL = "https://cloudzone-api.cyou"
function Detect-Network {
Write-Step "检测网络环境(国内 / 国外)..."
try {
$null = Invoke-WebRequest -Uri "https://claude.ai" -Method Head -TimeoutSec 5 -UseBasicParsing
Write-Info "可直连 claude.ai,判定为海外网络"
return "overseas"
} catch {
Write-Warn "无法直连 claude.ai,判定为国内网络环境(将自动切换国内镜像)"
return "domestic"
}
}
function Check-Docker {
Write-Step "检查 Docker 与 Docker Compose..."
if (-not (Get-Command docker -ErrorAction SilentlyContinue)) {
Write-Err "未找到 docker,请先安装 Docker Desktop:https://www.docker.com/products/docker-desktop/"
Write-Host " 安装后请重启 Docker Desktop(确保 WSL2 后端已启用),并新开 PowerShell 再运行本脚本。"
return $false
}
$composeOK = $true
try {
$null = docker compose version 2>$null
} catch {
$composeOK = $false
}
if (-not $composeOK) {
Write-Err "docker compose 不可用(需要 Compose v2)。请升级 Docker Desktop 后重试。"
return $false
}
Write-Info "Docker 与 Docker Compose 已就绪。"
return $true
}
function Clone-Dify {
param([string]$Net)
if (Test-Path "dify/docker") {
Write-Info "检测到 dify/ 目录已存在,跳过 clone"
return $true
}
Write-Step "克隆 Dify 仓库(约 1-3 分钟,视网络而定)..."
$repo = if ($Net -eq "domestic") {
"https://ghfast.top/https://github.com/langgenius/dify.git"
} else {
"https://github.com/langgenius/dify.git"
}
if (git clone --depth 1 $repo 2>$null) {
Write-Info "clone 成功"
return $true
}
Write-Warn "主源失败,回退备用源..."
if (git clone --depth 1 "https://ghfast.top/https://github.com/langgenius/dify.git" 2>$null) {
Write-Info "备用源 clone 成功"
return $true
}
Write-Err "clone 失败。请手动执行:git clone https://ghfast.top/https://github.com/langgenius/dify.git 后重新运行本脚本。"
return $false
}
function Start-Dify {
Write-Step "启动 Dify 全部服务(首次拉镜像可能耗时 5-15 分钟)..."
Set-Location "dify/docker"
if (-not (Test-Path ".env")) {
Write-Info "创建 .env(复制官方模板;.env 是 Dify 的配置文件,可后续修改端口等)"
Copy-Item ".env.example" ".env"
}
$ok = $false
try {
docker compose up -d
if ($LASTEXITCODE -eq 0) { $ok = $true }
} catch { }
if (-not $ok) {
Write-Warn "首次启动失败,等待 10 秒后重试一次..."
Start-Sleep -Seconds 10
try {
docker compose up -d
if ($LASTEXITCODE -eq 0) { $ok = $true }
} catch { }
}
if (-not $ok) {
Write-Err "docker compose up 失败。请执行 cd dify/docker && docker compose up 查看详细报错。"
return $false
}
Write-Step "等待服务就绪(检查容器状态)..."
docker compose ps
return $true
}
function Configure-Hint {
Write-Step "模型 Key 提示(部署完成后在 Dify 里配置模型)..."
Write-Host ""
Write-Host "Dify 部署好后需要接入大模型 Key 才能创建应用。默认推荐云间 API 中转站:"
Write-Host " · OpenAI 兼容格式,Dify 模型供应商直接填 Base URL 即可"
Write-Host " · 香港节点国内直连,Claude/GPT/DeepSeek/GLM 等 90+ 模型一把 Key 全管"
Write-Host ""
Write-Host "是否现在打开注册页获取 Key?"
Write-Host " Y - 立即跳转至 $CLOUDZONE_URL"
Write-Host " N - 直接跳过(用我自己的 Key)"
$choice = Read-Host "请选择 [Y/N]"
if ($choice -eq "Y" -or $choice -eq "y") {
try {
Start-Process "$CLOUDZONE_URL"
} catch {
Write-Warn "无法自动打开浏览器,请手动访问:$CLOUDZONE_URL"
}
Write-Host "拿到 Key 后,到 Dify「设置 → 模型供应商」填入:"
Write-Host " API Base URL : https://cloudzone-api.cyou/v1(以控制台显示为准)"
Write-Host " API Key : 刚复制的 sk-... Key"
Write-Host ""
} else {
Write-Info "已跳过。回到 Dify 设置页添加你自己的模型供应商即可。"
}
}
Write-Host "============================================"
Write-Host " Dify 零代码 AI 应用开发 一键脚本"
Write-Host " 适用于 Windows(PowerShell)"
Write-Host " 默认接入:云间 API 中转站"
Write-Host "============================================"
Write-Host ""
$net = Detect-Network
if (-not (Check-Docker)) {
Write-Err "Docker 环境不满足,脚本终止。请先安装 Docker Desktop 后重跑。"
exit 1
}
if (-not (Clone-Dify -Net $net)) {
exit 1
}
if (-not (Start-Dify)) {
Write-Err "Dify 启动失败,脚本终止。请按上方提示手动排查。"
exit 1
}
Configure-Hint
Write-Host ""
Write-Host "============================================"
Write-Info "全部完成!"
Write-Host " 首次部署:浏览器打开 http://localhost/install 初始化管理员"
Write-Host " 日常登录:http://localhost (云服务器请换成你的 IP,并放行 80 端口)"
Write-Host " 模型配置:登录后右上角头像 → 设置 → 模型供应商"
Write-Host "============================================"
请完成验证后查看评论区