必须使用Dify v1.8.0+异步工作流引擎,选择Workflow类型,通过同级挂载实现并行分支,用合并节点或结束节点手动映射变量完成异步回调与结果聚合。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify中实现多任务并行执行并确保各分支结果能异步回调、统一聚合,必须结合v1.8.0起生效的异步工作流引擎与并行分支机制,绕过旧版串行阻塞限制。
确认环境与基础前提
进入Dify控制台 → 点击右上角头像 → 选择「设置」→「系统信息」,核对当前版本号【必须为 v1.8.0 或更高】。低于此版本将无法启用异步回调能力,所有并行节点仍将被强制同步等待。
检查工作流类型:新建时务必选择「Workflow」而非「Chatflow」。Chatflow默认启用Memory且禁用End节点,不支持异步回调触发与变量合并输出。
搭建并行分支结构
在Workflow画布中,拖入一个「开始节点」作为入口。
将鼠标悬停在开始节点右侧的「+」图标上 → 点击 → 依次添加三个不同功能的节点:例如「LLM节点(Glm-4-flash)」「TavilySearch节点」「代码执行节点(Python)」。这三个节点会自动形成并行分支,无需连线——【Dify v1.8.0 起,并行分支默认不依赖显式连线,仅靠同级挂载即触发并发】。
注意:若误将节点拖到前一节点下方并自动连线,则变为串行;必须确保三节点均直接挂载于开始节点右侧同一层级。
配置异步回调与结果聚合
方法一:使用「合并节点(Merge Node)」自动收口
在三个并行节点全部配置完成后,点击画布空白处 → 工具栏选择「合并节点」→ 拖入画布 → 将其置于三个并行节点正下方。
此时Dify会自动识别上方所有未连接的并行分支,并将其输出变量映射为 merge_input_1、merge_input_2、merge_input_3。你可在合并节点内编写 Jinja2 表达式,例如:{{ merge_input_1.translation }} + "\n" + {{ merge_input_2.results | first }} + "\n" + {{ merge_input_3.stdout }}。
方法二:手动绑定回调至结束节点
删除合并节点 → 拖入「结束节点」→ 在其「输入映射」区域点击「+ 添加变量」→ 分别输入变量名如「final_summary」→ 在值字段粘贴表达式:{{ LLM.output }} | {{ TavilySearch.output }} | {{ CodeExec.output }}。该写法依赖Dify v1.8.0 新增的异步完成感知机制,会在任一分支返回后立即尝试填充,但需确保所有分支均已定义明确的 output 字段。
这一步操作起来很简单,直接把表达式粘进去就行,但若某分支未设置 output 键(比如代码节点忘了写 print() 或 return),该字段将为空字符串,不会报错也不会重试。
启用异步执行与验证回调行为
第一步:在工作流右上角打开「高级设置」→ 勾选「启用异步执行」→ 保存。
第二步:点击「调试运行」→ 在输入框中提交测试数据(如一段英文文本)→ 观察执行日志面板。
你会看到三个分支的日志时间戳高度重叠,且各自完成时间差异明显;当最早完成的分支输出抵达时,结束节点已开始渲染,而非卡在等待最慢分支——这正是异步回调生效的直接证据。
第三步:在调试结果页点击「查看原始响应」→ 检查 JSON 中是否包含 "status": "completed" 与 "async_callback_received": true 字段。缺失后者说明回调链路未激活,需返回检查「高级设置」是否勾选。











