755 字
约 2 分钟
1
AI Agent 工作流引擎到底是怎么跑起来的

AI Agent 工作流引擎到底是怎么跑起来的

在完成 DSL 的生成和解析之后,真正的问题才开始:

流程已经描述出来了,但它到底怎么一步一步执行?

一个工作流引擎,核心其实就 5 个东西。

1. DSL:描述流程长什么样

DSL 负责定义节点、连线、输入和输出。

例如:

START
  ↓
LLM
  ↓
TTS
  ↓
END

DSL 只负责描述流程,不负责真正执行。


2. WorkflowEngine:决定谁先执行

WorkflowEngine 是整个工作流的调度中心。

它主要负责:

当前执行哪个节点
↓
节点执行完成
↓
判断执行结果
↓
找到下一个节点
↓
继续执行

所以可以简单理解成:

WorkflowEngine 负责控制流程怎么走。


3. NodeExecutor:负责真正干活

不同节点有不同的执行器。

例如:

START
→ StartNodeExecutor

LLM
→ LlmNodeExecutor

TTS
→ TtsNodeExecutor

END
→ EndNodeExecutor

WorkflowEngine 不关心 LLM 怎么调用模型。

它只负责找到对应的 Executor:

NodeExecutor executor = getExecutor(node.getType());

executor.execute(node);

这样以后增加 HTTP、插件、代码节点,只需要增加新的 Executor。


4. VariablePool:负责节点之间传数据

节点之间不会直接互相调用。

例如:

START
 ↓
LLM
 ↓
TTS

START 输入:

介绍一下 Java

放入 VariablePool:

start.userInput = "介绍一下 Java"

LLM 执行时读取:

{{start.userInput}}

LLM 输出:

Java 是一种编程语言...

再次存入:

llm.output = "Java 是一种编程语言..."

TTS 再读取:

{{llm.output}}

所以:

VariablePool 就是整个工作流的数据中转站。


5. NodeRunResult:告诉引擎执行结果

节点执行完成后,不能只返回 true 或 false。

还需要告诉 WorkflowEngine:

成功
失败
需要重试
需要中断
走失败分支

因此一般会有:

NodeRunResult

例如:

SUCCESS
ERR_RETRY
ERR_INTERRUPT
ERR_FAIL_CONDITION

WorkflowEngine 根据这个状态决定下一步怎么走。


整个执行流程

把所有东西串起来就是:

DSL
 ↓
WorkflowEngine
 ↓
找到 NodeExecutor
 ↓
从 VariablePool 解析输入
 ↓
执行节点
 ↓
得到 NodeRunResult
 ↓
输出写回 VariablePool
 ↓
找到下一个节点
 ↓
继续执行

举个例子:

用户输入
  ↓
START
  ↓
LLM
  ↓
TTS
  ↓
END

实际运行过程:

用户输入:“介绍 Java”
        ↓
START 保存输入
        ↓
LLM 读取输入
        ↓
生成文本
        ↓
文本写入 VariablePool
        ↓
TTS 读取文本
        ↓
生成音频
        ↓
END 返回结果

总结

一个 AI 工作流引擎最核心的就是:

DSL
负责描述流程

WorkflowEngine
负责调度流程

NodeExecutor
负责执行节点

VariablePool
负责传递数据

NodeRunResult
负责告诉引擎下一步怎么走

理解这 5 个东西,基本就理解了工作流引擎最核心的执行机制。

AI Agent 工作流引擎到底是怎么跑起来的
http://www.clxhxhhr.top/posts/641/
作者
clxstart
发布于
2026-09-16
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。