Dify工作流可通过环境变量动态配置节点行为:在HTTP节点URL中用{{env.DIFY_API_BASE_URL}}、条件分支中用{{env.DEBUG_MODE}} === 'true'、变量赋值中用{{env.DIFY_RETRY_LIMIT || 2}},并支持通过「启用条件」字段控制节点执行(如{{env.ENABLE_EMAIL_NOTIFY === 'true' && env.DIFY_ENV_MODE !== 'dev'}}),路径可组合{{env.DIFY_ENV_MODE}}/{{sys.user_id}}/{{input.filename}}实现隔离存储。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Dify工作流中,需要让某个节点根据当前部署环境(如dev/staging/prod)自动切换API地址、超时阈值或调试开关,而不是硬编码或每次手动修改节点配置。
确认环境变量已注入并生效
进入Dify项目根目录,执行docker compose down && docker compose up -d,强制重建容器以确保.env文件被完整重载。仅用docker compose restart会导致部分容器仍使用旧环境变量缓存,【这是线上配置不生效的最常见原因】。
在任意工作流节点中插入一个“代码”节点,输入以下调试代码:
console.log('ENV_MODE:', process.env.DIFY_ENV_MODE);
运行该工作流,查看日志输出。若显示undefined,说明环境变量未正确注入——请检查.docker-compose.yaml中是否漏写了environment:块或${DIFY_ENV_MODE}占位符未在.env中定义。
在节点中直接引用环境变量
方法一:在HTTP请求节点的URL字段中写入{{env.DIFY_API_BASE_URL}}/v1/chat/completions。Dify会自动将env.前缀识别为系统环境变量读取指令,无需额外配置。
方法二:在“条件分支”节点中设置判断逻辑:{{env.DEBUG_MODE}} === 'true'。注意字符串比较必须加单引号,否则Dify会尝试解析为布尔变量导致语法错误。
方法三:在“变量赋值”节点中,新建一个中间变量retry_limit,其默认值设为{{env.DIFY_RETRY_LIMIT || 2}}。双竖线提供兜底值,防止环境变量为空时流程中断。
用环境变量动态控制节点启用状态
第一步:在工作流编辑器右上角点击「功能」→ 开启「高级节点控制」开关。
第二步:选中目标节点(例如“发送邮件”节点),在右侧属性面板中找到「启用条件」字段。
第三步:填入表达式{{env.ENABLE_EMAIL_NOTIFY === 'true' && env.DIFY_ENV_MODE !== 'dev'}}。该节点仅在生产环境且邮件开关开启时才执行。
⚠️ 注意:此功能依赖Dify 0.10+版本,旧版不支持节点级条件启用。若保存后提示语法错误,请先升级Dify核心镜像。
组合系统变量与环境变量构建动态路径
在“文件存储”节点中,将「存储路径」设为:uploads/{{env.DIFY_ENV_MODE}}/{{sys.user_id}}/{{input.filename}}。
这会生成类似uploads/prod/u_abc123/report.pdf的路径结构。其中{{env.DIFY_ENV_MODE}}来自.env文件,{{sys.user_id}}是Dify自动生成的系统变量,{{input.filename}}来自用户上传文件原始名称——三者拼接实现隔离存储。
关键点:【路径中不能出现空格或中文,否则文件写入失败】。建议在.env中将DIFY_ENV_MODE统一设为小写英文(如prod/staging/dev),避免因大小写混用导致路径异常。


















