从零开始学 Dify- 工作流(Workflow)系统架构
要说 Dify 里哪个模块最核心,工作流系统(Workflow System)绝对排第一。它本质上是一个可视化编程界面,让你不用写多少代码,靠拖拽和连线就能搭出复杂的 AI 应用——从数据处理、模型调用,到条件判断和各类操作,都能在这个画布上完成。下面,我们从架构、组件到具体功能,把整个系统拆开来看,重点说说前端编辑器和后端执行引擎。
架构概述
整个工作流系统在设计上,前后端职责分得非常清楚:
- 前端是基于 ReactFlow 搭建的可视化编辑器,用户通过添加节点并连线,就能设计流程。
- 后端负责工作流的存储、验证和执行,保证流程能真正跑起来。
核心数据表
前端工作流编辑器
这个编辑器就是一个可视化画布,用户在上面创建和编辑工作流。它底层用的是 ReactFlow——业界做节点编辑器和交互图表的主流库。
编辑器由几个关键部分构成:
- :发布、更新和管理工作流版本的操作入口
标题(Header)
- :显示所选节点的配置选项
面板(Panel)
- :提供添加模块、缩放和切换模式的工具
操作员(Operator)
- :操作节点和边的主区域
ReactFlow 画布
节点类型
系统支持多种节点,每种都有特定用途:
| 类别 | 节点类型 | 目的 |
|---|---|---|
| 流程控制 | 开始、结束 | 定义工作流的入口和出口 |
| 输出 | 回答 | 定义聊天回复内容 |
| AI | LLM, Agent | 调用大模型做文本生成 |
| Knowledge | Knowledge Retrieval | 从知识库查询内容 |
| Logic | If/Else, 问题分类器 | 实现条件分支 |
| Code | 代码、模板转换 | 执行代码或转换数据 |
| 数据 | HTTP 请求, 变量分配器 | 获取外部数据或管理变量 |
| 迭代 | 迭代、循环 | 处理列表或创建循环 |
| Tools | Tool | 调用外部工具 |
节点交互
编辑器里的节点交互很顺手:
- :节点在画布上随意拖动
拖放
- :从源手柄拖到目标手柄,节点就能连上
连接
- :点击节点,右边面板立刻显示配置项
配置
- :部分节点可以缩放
调整大小
- :不需要的节点直接移除
删除
这些交互背后都有复杂的逻辑处理。
后端工作流管理
后端负责工作流的存储、验证和执行。
Workflow Services
后端提供几个关键服务:
- :处理工作流的增删改查,包括草稿和已发布版本
WorkflowService
- :以 DSL(领域特定语言)形式管理导入导出
AppDslService
- :执行工作流并管理状态
WorkflowExecutionService
工作流 CRUD 操作
Dify 的工作流采用“草稿-发布”模型:
- :每个工作流应用都有一个可编辑的草稿
草稿版本
- :草稿就绪后即可发布,生成版本快照
已发布版本
- :已发布的工作流支持版本管理,可查看和恢复历史版本
版本历史
DSL 导入/导出
工作流可以导出为 YAML 文件(DSL 格式),这带来了几个好处:
- :保存工作流以备不时之需
备份
- :在不同实例或用户间传递工作流
共享
- :把工作流纳入 Git 等版本管理系统
版本控制
AppDslService 专门处理导入导出,还考虑了敏感信息的保护。
工作流执行
系统支持开发测试和生产两种场景下的工作流执行。
执行流程
一次完整执行大致分五步:
- :加载工作流配置,创建执行上下文
初始化
- :按图依次执行每个节点
节点执行
- :根据连接关系在节点间传递数据
数据流
- :按节点配置的策略处理异常
错误处理
- :返回最终结果
完成
错误处理
节点可以配置不同的错误处理策略:
- :出错即停止执行
None
- :出错时返回预设值
默认值
- :出错时走特定分支
失败分支
还可以设置失败后自动重试。
高级功能特性
变量和数据流
系统支持多种变量类型:
- :存储配置和密钥
环境变量
- :跨会话记住关键信息
对话变量
- :每个节点的输出供后续节点使用
节点输出变量
变量有类型区分:字符串、数字、对象、数组、文件等。
并行和迭代处理
系统的高级流程控制能力包括:
- :同时执行多个分支
并行处理
- :逐个处理列表中的项目
迭代
- :重复节点直到条件满足
循环
工作流作为工具
有个很巧妙的设计:工作流可以发布为工具,供其他工作流或应用调用。
- 工作流能以工具形式发布
- 它和普通工具一样,能在其他工作流里使用
- 这样一来,工作流的复用和组合就变得非常灵活
与其他 Dify 组件集成
工作流系统并不是孤立的,它和 Dify 的很多核心模块都有对接。
模型提供者集成
通过模型提供者系统,工作流可以调用各类大模型:
- LLM 节点连接到模型提供系统,访问各种 AI 模型
- 系统统一处理鉴权、限流和模型特有的配置
知识库集成
知识检索节点能直接访问 Dify 的知识库:
- 工作流能查询知识库,获取相关信息
- 检索结果可用于提示词或进一步处理
工具集成
工作流能使用的工具来源很广:
- :Dify 自带的系统工具
内置工具
- :用户自己定义的 API
自定义工具
- :通过插件安装的工具
插件工具
- :其他以工具形式公开的工作流
工作流工具
总结
工作流系统是 Dify 真正体现“可视化+AI”组合拳的模块。它让用户通过界面就能设计出复杂的 AI 应用,同时保留了足够灵活性和扩展空间。
几个核心特点:
- 可视化的编辑器,拖拽就能设计流程
- 丰富的节点类型,覆盖各种操作
- 完善的变量系统,支持节点间数据流动
- 高级流程控制,包括条件、迭代和循环
- 与模型、知识库和工具等组件无缝集成
- 稳健的错误处理和重试机制
- 通过 DSL 支持导入导出
这套系统让技术和非技术用户都能快速搭建 AI 应用,同时在复杂场景下也留足了灵活性。
参考资料
https://github.com/langgenius/dify
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名