必须通过DSL文件实现结构化导出与精准导入:先用dify appexport导出含全部模块的JSON文件,再经dify-cli validate校验并用Python脚本迁移旧结构,最后通过CLI、Admin API或Web控制台导入,注意overwrite参数与同名应用处理规则。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify中将开发环境配置完整迁移到生产环境,避免手动重建应用导致的参数遗漏、工作流错位或模型配置不一致,必须通过DSL文件实现结构化导出与精准导入。
导出指定应用的完整DSL文件
打开终端,确保已全局安装并登录 Dify CLI 工具:【DIFY_API_KEY 和 DIFY_BASE_URL 必须提前配置为环境变量】。未配置会导致认证失败且无明确错误提示。
执行导出命令,替换 YOUR_APP_ID 为实际应用ID:
dify appexport --app-id=abc123xyz --output=prod-app.dsl.json
该命令会生成一个包含 app、model_config、prompt_template、tools、workflow 等全部核心模块的内联式 JSON 文件,所有引用关系均已展开,无需额外解析依赖。
验证DSL文件是否符合目标环境规范
若目标Dify实例版本 ≥ v0.12.0,旧版 DSL(含 prompt_config、model_config 嵌套结构)将被拒绝导入。必须先校验:
dify-cli validate --file=prod-app.dsl.json
若返回 ✅ Valid DSL,可直接进入导入流程;若报 unknown field "prompt_config" 等错误,需立即执行迁移转换——此时不可跳过验证直接导入,否则导入会静默失败。
使用官方 Python 脚本快速修复(保存为 migrate_dsl.py):
import json
with open("prod-app.dsl.json") as f:
old = json.load(f)
new = {
"app": {
"prompt_template": old["app"].get("prompt_config", {}).get("prompt", ""),
"model": {
"provider": old["app"].get("model_config", {}).get("provider", "openai"),
"name": old["app"].get("model_config", {}).get("model_name", "gpt-4"),
"parameters": old["app"].get("model_config", {}).get("parameters", {})
}
}
}
with open("migrated.dsl.json", "w") as f:
json.dump(new, f, indent=2)
在目标环境批量导入DSL文件
方法一:单文件导入(适合验证或小规模部署)
运行命令,指定目标工作空间(如未指定,默认导入到当前登录用户默认空间):
dify import --file=migrated.dsl.json --workspace="prod-us-west"
方法二:并发批量导入(适合多应用同步上线)
编写 Node.js 脚本,自动读取 ./dsls/ 目录下全部 *.json 文件,调用 Admin API POST /v1/apps/import 接口;脚本需显式设置 overwrite: true 参数,否则同名应用将被跳过,不会更新。
方法三:Web 控制台导入(仅限单文件,且要求文件大小 ≤ 10MB)
进入目标环境「应用管理」→ 点击右上角「+ 新建应用」→ 选择「从 DSL 文件导入」→ 上传 migrated.dsl.json → 点击「确认导入」。
【注意:Web 导入不支持 overwrite,若存在同名应用,系统将直接报错终止,不会覆盖】


















