dify v1.10.0-rc1 引入的事件驱动工作流,不仅仅是增加了几种触发器,它标志着Dify正从一个被动的AI工具向一个能够主动响应、智能决策的自动化平台演进。无论你是希望提升业务流程自动化水平的企业用户,还是想要构建更复杂AI应用的开发者,这次更新都值得你立即尝试。
🚀 v1.10.0简介
触发器功能介绍触发器 = 当发生某件事时 → 执行某个操作
触发器是事件驱动型工作流(Workflow)功能的基础,主要包含以下类型:
定时触发(基于时间的触发器) SaaS 集成事件触发(来自 Slack/GitHub/Linear 等外部 SaaS 平台的事件,通过插件实现集成) Webhook 触发(外部 HTTP 回调) 待讨论项
注意:以上所有功能仅为工作流(Workflow)设计,暂不支持聊天流(Chatflow)、智能体(Agent)及基础聊天(BasicChat)。
📚 设计前提
经过慎重考虑,我们认为原有的 “开始节点” 设计无法充分体现触发器背后的设计理念。因此,我们将 “开始节点” 重新设计为与 Web 应用(WebApp)或服务接口(Service API)绑定的组件。这意味着:
工作流的输入参数等同于 “开始节点” 定义的表单。 触发器类型可自定义输入格式,无需遵循 Dify 的 “开始节点” 格式:
Webhook:用户可自由定义所需的 HTTP 负载结构。 插件:为特定第三方平台预定义工作流输入参数。 定时触发:仅需单个 $current_time参数。
基于此,我们推出了 3 种 “开始节点”,它们本质上均为触发器节点。目前,该功能的产品设计已全部完成,UI/UX 设计也已收尾。
触发器的实现将分为以下三部分:
WebHook — 在画布(Canvas)中配置 WebHook 相关信息 定时触发(Schedule)— 基于时间的触发器 插件(Plugins)— 插件系统(大多数第三方平台集成需依赖此系统)
⚙️ 基于队列的图引擎
1. 支持更多使用场景
目前,若要在企业环境中搭建类似 “Discord 工单机器人 → Linear 同步” 的功能,需编写自定义粘合代码、预先发布扩展程序,且需从 Discord 开发者控制台手动获取令牌(Token),无法通过简单的一键 OAuth 绑定实现。类似痛点也存在于 GitHub PR 插件审核、Hello Dify 邮件回复等场景中,均需手动执行下载 / 上传 / 触发操作。
2. 减少体验碎片化
尽管可通过外部自动化平台调用 Dify API 实现类似效果,但跨平台体验存在碎片化问题,且许多外部自动化平台正逐步新增自身的大语言模型(LLM)编排能力,进一步加剧体验割裂。
3. 集中配置与管理
开发者通常需部署多个服务来轮询事件。虽然 “端点(Endpoints)” 可提供一定支持,但它并非为触发器场景设计,导致配置流程不够直观。
4. 真实用户需求
社区中有多名用户提出了该功能需求,相关议题编号如下:
#9168 #4516 #19409 #21583
升级指南
Docker Compose部署
1. 备份自定义的docker-compose YAML文件(可选)
cd docker
cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak2. 从main分支获取最新代码
git checkout 1.9.0
git pull origin 1.9.03. 停止服务(请在docker目录中执行)
docker compose down
4. 备份数据
tar -cvf volumes-$(date +%s).tgz volumes
5. 升级服务
docker compose up -d
源代码部署
1. 停止API服务器、Worker和Web前端服务器。 2. 从发布分支获取最新代码:
git checkout 1.10.0-rc1
3. 更新Python依赖:
cd api
uv sync4. 运行迁移脚本:
uv run flask db upgrade
5. 重新运行API服务器、Worker和Web前端服务器。
变更内容
将工作流控制面板中的 “导出” 按钮替换为 “更多操作” 按钮 新增 “滚动至选中节点” 按钮(位于工作流顶部栏) 新增完善的触发器节点系统,含定时触发器实现 将工作流 “运行” 按钮更新为 “测试运行(Test Run)”,并支持快捷键 新增 “测试运行” 下拉菜单,支持动态选择触发器 优化定时触发器的小时模式计算逻辑,提升 UI 一致性 移除 “工作流功能” 按钮 实现定时触发器验证功能,支持多开始节点拓扑结构 修复 “移除功能” 与 “增强验证” 之间的代码合并冲突 重构 “开始节点” UI 为 “用户输入(User Input)”,优化 “入口节点容器(EntryNodeContainer)” 修复工作流国际化(i18n)文件中重复的 “星期” 键值 UI 优化,修复定时触发器的翻译问题及自定义图标 修复切换至 “小时” 频率时未初始化重复字段的问题 实现定时触发器的 “按月” 多选项功能 (工作流)新增 “插件触发器节点”,适配统一入口节点系统 将 “测试运行” 下拉菜单中的模拟数据替换为动态工作流选项 重构定时触发器组件,优化整体设计 (触发器)实现通用入口功能 (触发器)支持指定根节点 实现 WebHook 触发器前端功能 (WebHook 触发器)移除冗余的 WebhookParam 类型,简化参数处理逻辑 (定时触发器)以用户为中心简化时区处理逻辑 重构工作流执行的错误类型,使用特定错误类型 重构 “RunAllTriggers” 图标名称为 “TriggerAll”,提升语义清晰度 修复 “仅含触发器节点的工作流无法保存” 的问题 修复 “无开始节点的工作流无法打开服务接口” 的问题 实现工作流引导弹窗系统 实现 WebHook 触发器后端 API 修复国际化(i18n)缺失的键值,合并上游主分支代码 重构(侧边栏)应用操作区域,新增切换功能 修复 “仅工作流应显示引导弹窗” 的逻辑 重构 “租户日限流(TenantDailyRateLimiter)”,内部使用 UTC 时间,错误提示支持时区显示 统一 WebHook 触发器与定时节点的样式,修复选中边框截断问题 支持空工作流,优化工作流验证逻辑 提升 WebHook 服务及控制器的代码质量 (定时触发器)修正 “按周” 频率的星期计算算法 增强工作流错误处理能力,优化国际化支持 优化工作流检查清单组件的 UI 样式 (定时触发器)为 “按周” 频率模式添加时间逻辑,确保与 “按日” 模式行为一致 新增 “应用触发器列表” API 优化工作流模块选择器的搜索功能 优化触发器模块的提示框(Tooltip)设计 实现触发器卡片组件,支持自动刷新 优化触发器卡片的布局间距,移除分隔线 实现 “添加 / 删除 WebHook 触发器时调用 API” 的功能 增强 WebHook 触发器面板的 UI 一致性与交互性 增强 WebHook 触发器面板的 UI 一致性与用户体验 修复工作流卡片切换逻辑,实现极简状态 UI 修复 “执行 WebHook 前未检查 AppTrigger 状态” 的问题 优化定时触发器及 “快速设置” 应用操作按钮的 UI (WebHook)新增基于内容类型(Content-Type)的参数类型处理逻辑 优化时间选择器(TimePicker)底部布局及按钮样式 统一 “测试运行” 快捷键,优化下拉菜单样式 重构触发器节点架构,清理技术债务 实现 WebHook 节点的变量同步功能 (WebHook 触发器)移除冗余的错误处理逻辑 (应用卡片)限制仅 “开始节点” 可启用切换功能 修复 “WebHook HTTP 方法大小写不敏感” 的问题 在应用日志中添加 “触发器来源” 字段 (工作流日志)增强日志 UI,支持排序与状态筛选 修复 “因竞争条件与视口错误导致工作流画布清空” 的问题 (WebHook 触发器)调整请求数组类型 修复国际化翻译路径缺失的键值 (WebHook)限制状态码范围为 200~399 (WebHook)删除冗余变量 (WebHook)修正内容类型(Content-Type) (WebHook)调用时验证 application/json 类型的参数 (工作流)增强 WebHook 状态码输入框,支持增减按钮 修复 UUID v7 相关问题 (WebHook)优化选中类型的 UI 样式 (WebHook)使用普通变量替代 InputVar (WebHook)切换内容类型时清空请求体变量 修复 “页面导航时同步空工作流草稿” 的问题 (触发器)支持 WebHook 上传文件 (触发器)将内容类型从 form 改为 application/octet-stream (触发器)实现插件模块选择器,遵循工具设计模式 修复模块选择器 UI 问题 (触发器)新增 WEBHOOK_REQUEST_BODY_MAX_SIZE 配置 优化触发器插件的 UI 布局与响应式表现 (触发器)重构 WebHook 服务 为工作流的触发器插件节点添加图标支持 实现触发器插件的前端集成 优化 “测试运行” 菜单及检查清单 UI 实现触发器插件支持,含实时状态同步 为触发器列表添加稳定排序,防止位置错乱 实现触发器插件的认证 UI 在应用级别初始化触发器状态,防止画布刷新导致的状态问题 调整 “滚动至选中节点” 的位置,使其定位到左上角区域 (触发器插件)支持 API 密钥(API Key) 修复工作流顶部栏问题 (WebHook)防止 SimpleSelect 组件重置用户选择 修复 “仅工作流应调用触发器 API” 的逻辑 优化提示框(Tooltip)与引导弹窗 UI 实现工作流的定时触发器支持 修复 BaseNode 中未向子节点传递 id 属性的问题 修复定时触发器问题 (定时触发器)默认设置为每日午夜触发 优化 WebHook 功能 (定时触发器)使用成熟库增强 Cron 解析器,完善测试覆盖 (工作流)修复 “知识管道重构后引导弹窗无法创建节点” 的问题 (重构 / 优化)实现 useState 延迟初始化,避免重复计算 重构:使用 @ns.route 装饰器优化标签 API 路由 (国际化)翻译 i18n 文件并更新类型定义 修复:启用 Pyright 类型检查,修正数据集控制器的类型错误 小修复:修正部分翻译(“trunk” 应使用本地化表述)及翻译拼写错误 修复 core/model_runtime
