首页 > 教程攻略 > ai资讯 >从零开始学 Dify- 工作流(Workflow)系统架构

从零开始学 Dify- 工作流(Workflow)系统架构

来源:互联网 时间:2026-07-21 14:03:36

要说 Dify 里哪个模块最核心,工作流系统(Workflow System)绝对排第一。它本质上是一个可视化编程界面,让你不用写多少代码,靠拖拽和连线就能搭出复杂的 AI 应用——从数据处理、模型调用,到条件判断和各类操作,都能在这个画布上完成。下面,我们从架构、组件到具体功能,把整个系统拆开来看,重点说说前端编辑器和后端执行引擎。

架构概述

整个工作流系统在设计上,前后端职责分得非常清楚:

  1. 前端是基于 ReactFlow 搭建的可视化编辑器,用户通过添加节点并连线,就能设计流程。
  2. 后端负责工作流的存储、验证和执行,保证流程能真正跑起来。

核心数据表

前端工作流编辑器

这个编辑器就是一个可视化画布,用户在上面创建和编辑工作流。它底层用的是 ReactFlow——业界做节点编辑器和交互图表的主流库。

编辑器由几个关键部分构成:

  1. 标题(Header)

    :发布、更新和管理工作流版本的操作入口
  2. 面板(Panel)

    :显示所选节点的配置选项
  3. 操作员(Operator)

    :提供添加模块、缩放和切换模式的工具
  4. ReactFlow 画布

    :操作节点和边的主区域

节点类型

系统支持多种节点,每种都有特定用途:

类别节点类型目的
流程控制开始、结束定义工作流的入口和出口
输出回答定义聊天回复内容
AILLM, Agent调用大模型做文本生成
KnowledgeKnowledge Retrieval从知识库查询内容
LogicIf/Else, 问题分类器实现条件分支
Code代码、模板转换执行代码或转换数据
数据HTTP 请求, 变量分配器获取外部数据或管理变量
迭代迭代、循环处理列表或创建循环
ToolsTool调用外部工具

节点交互

编辑器里的节点交互很顺手:

  1. 拖放

    :节点在画布上随意拖动
  2. 连接

    :从源手柄拖到目标手柄,节点就能连上
  3. 配置

    :点击节点,右边面板立刻显示配置项
  4. 调整大小

    :部分节点可以缩放
  5. 删除

    :不需要的节点直接移除

这些交互背后都有复杂的逻辑处理。

后端工作流管理

后端负责工作流的存储、验证和执行。

Workflow Services

后端提供几个关键服务:

  1. WorkflowService

    :处理工作流的增删改查,包括草稿和已发布版本
  2. AppDslService

    :以 DSL(领域特定语言)形式管理导入导出
  3. WorkflowExecutionService

    :执行工作流并管理状态

工作流 CRUD 操作

Dify 的工作流采用“草稿-发布”模型:

  1. 草稿版本

    :每个工作流应用都有一个可编辑的草稿
  2. 已发布版本

    :草稿就绪后即可发布,生成版本快照
  3. 版本历史

    :已发布的工作流支持版本管理,可查看和恢复历史版本

DSL 导入/导出

工作流可以导出为 YAML 文件(DSL 格式),这带来了几个好处:

  1. 备份

    :保存工作流以备不时之需
  2. 共享

    :在不同实例或用户间传递工作流
  3. 版本控制

    :把工作流纳入 Git 等版本管理系统

AppDslService 专门处理导入导出,还考虑了敏感信息的保护。

工作流执行

系统支持开发测试和生产两种场景下的工作流执行。

执行流程

一次完整执行大致分五步:

  1. 初始化

    :加载工作流配置,创建执行上下文
  2. 节点执行

    :按图依次执行每个节点
  3. 数据流

    :根据连接关系在节点间传递数据
  4. 错误处理

    :按节点配置的策略处理异常
  5. 完成

    :返回最终结果

错误处理

节点可以配置不同的错误处理策略:

  1. None

    :出错即停止执行
  2. 默认值

    :出错时返回预设值
  3. 失败分支

    :出错时走特定分支

还可以设置失败后自动重试。

高级功能特性

变量和数据流

系统支持多种变量类型:

  1. 环境变量

    :存储配置和密钥
  2. 对话变量

    :跨会话记住关键信息
  3. 节点输出变量

    :每个节点的输出供后续节点使用

变量有类型区分:字符串、数字、对象、数组、文件等。

并行和迭代处理

系统的高级流程控制能力包括:

  1. 并行处理

    :同时执行多个分支
  2. 迭代

    :逐个处理列表中的项目
  3. 循环

    :重复节点直到条件满足

工作流作为工具

有个很巧妙的设计:工作流可以发布为工具,供其他工作流或应用调用。

  1. 工作流能以工具形式发布
  2. 它和普通工具一样,能在其他工作流里使用
  3. 这样一来,工作流的复用和组合就变得非常灵活

与其他 Dify 组件集成

工作流系统并不是孤立的,它和 Dify 的很多核心模块都有对接。

模型提供者集成

通过模型提供者系统,工作流可以调用各类大模型:

  1. LLM 节点连接到模型提供系统,访问各种 AI 模型
  2. 系统统一处理鉴权、限流和模型特有的配置

知识库集成

知识检索节点能直接访问 Dify 的知识库:

  1. 工作流能查询知识库,获取相关信息
  2. 检索结果可用于提示词或进一步处理

工具集成

工作流能使用的工具来源很广:

  1. 内置工具

    :Dify 自带的系统工具
  2. 自定义工具

    :用户自己定义的 API
  3. 插件工具

    :通过插件安装的工具
  4. 工作流工具

    :其他以工具形式公开的工作流

总结

工作流系统是 Dify 真正体现“可视化+AI”组合拳的模块。它让用户通过界面就能设计出复杂的 AI 应用,同时保留了足够灵活性和扩展空间。

几个核心特点:

  • 可视化的编辑器,拖拽就能设计流程
  • 丰富的节点类型,覆盖各种操作
  • 完善的变量系统,支持节点间数据流动
  • 高级流程控制,包括条件、迭代和循环
  • 与模型、知识库和工具等组件无缝集成
  • 稳健的错误处理和重试机制
  • 通过 DSL 支持导入导出

这套系统让技术和非技术用户都能快速搭建 AI 应用,同时在复杂场景下也留足了灵活性。

参考资料

https://github.com/langgenius/dify