工作流
理解可视化节点、类型化变量、触发器与版本生命周期
工作流用有向节点图编排确定性的多步骤任务。开始节点定义输入,处理中间节点变换或调用能力,输出节点定义最终结果。
两种开始方式
- 用户输入:生成可交互的运行表单,适合人工发起。
- 触发器:由 API 调用、
cron定时任务或 Webhook 启动,适合集成与自动化。
每个工作流只能有一个开始节点,且开始节点不能删除(在画布上删除会被拒绝并提示)。
类型化数据流
当前定义格式为 schema_version: 2。节点输出保留原生对象与数组,不再隐式转为 JSON 字符串;schema_version: 1 的旧定义在节点间传递的是 JSON 字符串,两者不兼容。变量引用由编辑器的变量选择器完成;发布前检查清单会报告不存在的引用、缺失输入与类型不匹配(Type mismatch: expected X, got Y),作为调试与发布前的排查依据。
旧定义处理(部分未实现)。 v1 与 v2 不兼容(v1 在节点之间传递 JSON 字符串),代码里记录了「打开旧定义后必须重新保存才能运行」的意图,但目前后端与编辑器都没有真正实施这道校验:后端的 WORKFLOW_SCHEMA_VERSION 常量只有声明、未参与任何校验,编辑器中对应的也只是一条注释,运行按钮不会因为版本号被禁用。因此打开历史工作流时请手动保存一次再运行,否则可能拿到与 v1 语义不符的结果。
节点与容器
节点分为模型、逻辑、转换和扩展四类:模型类调用 LLM 或媒体生成;逻辑类做条件、分类、迭代/循环与人工审批;转换类处理代码、模板、文件与变量;扩展类接入子工作流、Agent、工具、知识库与输出(answer 节点定义最终结果)。迭代遍历数组;循环重复执行直到条件满足;两者都是容器节点,内部子图有独立开始与退出节点。画布上的注释节点(comment)只是文档元素,不参与执行规划(NON_EXECUTABLE_NODE_TYPES = {"comment"})。完整字段见工作流节点参考。
运行、调试与观测
草稿可以调试运行(POST /api/v1/workflows/{id}/debug,执行的是当前草稿而不是已发布版本);只有已发布(published)工作流才能正式运行,未发布时运行接口直接拒绝。状态分运行级与节点级两层,含义不同,排查问题时不要混用:
- 运行状态:
pending、running、waiting(等待人工审批)、success、failed、cancelled、timeout。 - 节点状态:
pending、running、waiting、success、failed、skipped(条件未命中或被跳过)。
运行抽屉展示输入、结果、节点追踪、Token、耗时、错误与匹配分支;等待审批的运行停在 waiting,提交反馈才继续(见 编排工作流)。正式运行是异步的:接口只返回 run_id,任务投递到 workflow 队列由主 Worker 执行(见 系统架构),队列没有消费者时运行会一直停在 pending。
发布、版本与恢复
发布时自动创建版本快照,并把该版本设为已发布(published)。恢复旧版本时,当前版本先被归档为备份(标记 archived_reason=rollback_backup),再把目标版本复制成一个新的已发布版本,因此版本历史不会被抹掉,原版本记录也不会被覆盖。发布页可选择表单与结果或结果与详情两种呈现模式:前者只展示输入、状态与最终结果,后者优先展示结果并允许展开节点级执行轨迹。
这篇文章对你有帮助吗?