---
myst:
  html_meta:
    "moi:status": "draft"
---

# 工作流

数据在 Catalog 登记后仍是原始形态——PDF、表格、音视频都还不能被 AI 直接检索。把它们解析、切分、向量化,加工成 AI 可用的数据,这件事由**工作流**承担。一条工作流,就是一份"如何加工这批数据"的定义:一组算子(算子),加上数据在算子之间流动的顺序。

## 先分清三个词

"工作流"常被混用,先把它和两个近义词分开:

| 说的是 | 到底指什么 |
|---|---|
| **工作流** | 一份**定义**——记录加工步骤与顺序的文件,存放在 Catalog;不启动就只是躺着,不产生任何动作。 |
| **一次运行** | 这份定义被启动后的**一次执行**;每启动一次,就多一条工作流作业。 |
| **画布** | 只是**编辑**这份定义的方式之一,不是工作流本身。 |

记住这条区分:后面一旦出问题,第一个要问的就是——是这份定义写错了,还是这一次执行坏了。

## 它在整张图的位置

工作流处在数据从"原始"走向"可用"的中间一段:

**Catalog 登记的原始数据 → 工作流加工 → 知识库 / 智能体**

上游,它按地址从 Catalog 取到要加工的数据;下游,它把产物写回 Catalog 并登记血缘,知识库和智能体再从那里取用。工作流自己不保管数据,它只负责"加工"这一段动作。

## 同一份定义,三种方式都能搭

工作流的门槛之所以低,关键在一点:加工步骤被写成一份**数据**(定义文件),而不是一段只有工程师能改的程序。于是同一份定义,三种方式都能产出——

- 业务人员在**画布**上拖拽算子、连线;
- 工程师直接编写**定义文件**;
- 或用**自然语言**描述需求,由内置 AI 生成,再接着调。

三种方式产出的是同一种定义文件,跑起来完全一样。这就是工作流把"数据处理"从工程师专属,降到"讲得清需求就能搭"的原因:用自然语言配上平台封装好的算子,拼出处理各类数据的流程——结构化数据交给 SQL 算子,非结构化数据交给解析、切分等算子,特殊需要还可写自定义算子。

## 能启动,不等于结果对

调度引擎严格按定义执行,但它不理解业务意图:定义里接错的线、填错的参数,都会被原样跑完。所以一份**能保存、能启动**的工作流,不代表它**能产出正确结果**。结果对不对,要在工作流作业里逐一核对——定位失败的具体方法,见[运行与调试](../../../guides/ai-studio/processing/run-debug.md)。

## 延伸阅读

- [架构与核心概念](../index.md):工作流在整个平台中的位置
- 上游数据从哪来:[Catalog](catalog.md);加工产物去哪:[知识库](knowledge-bases.md)
- 动手建、跑、排查:[指南 · 工作流](../../../guides/ai-studio/processing/workflow.md)
- 想先跑一遍感受:[快速开始](../../quickstart.md)
