1552 字
约 5 分钟
0
PaiFlow 插件架构思考:为什么要用 Link 连接外部能力

PaiFlow 插件架构思考:为什么要用 Link 连接外部能力

在工作流系统里,Workflow Engine 更像汽车的发动机,负责节点调度、流程流转和变量传递。

但真正的业务系统,不可能只靠工作流和 LLM。

我们还需要调用天气、TTS、OCR、搜索、文件服务、企业内部接口,甚至 MCP。

如果这些能力全部直接写进 Workflow Engine,系统很快就会变成这样:

Workflow
├── TTS SDK
├── OCR SDK
├── 搜索 SDK
├── 天气 API
├── 企业内部 RPC
└── MCP

Workflow 会越来越重,维护成本也会越来越高。

所以 PaiFlow 把这部分能力单独拆出来,形成了 Link 插件服务

可以简单理解为:

Link 是 Workflow 和外部能力之间的统一连接层。


Workflow 应该关心的是:

我要调用什么工具?
参数是什么?
结果交给哪个节点?

而不应该关心:

URL 是什么?
GET 还是 POST?
参数放 Query 还是 Body?
怎么鉴权?
底层到底是 HTTP、RPC 还是 MCP?

这些事情全部交给 Link。

于是整体架构变成:

Workflow
   ↓
 Link
   ↓
外部能力

这背后最重要的思想就是:

业务编排和外部能力解耦。


工具管理

首先要告诉系统:

现在有哪些工具可以使用。

比如一个天气工具,需要保存:

工具名称
工具 ID
工具描述
参数
返回值
调用地址
HTTP Method
版本
鉴权方式

这些信息通常通过 OpenAPI Schema 描述,并保存到数据库中。

所以可以把工具管理理解成:

给每个工具建立一份机器可以理解的“使用说明书”。


工具执行

Workflow 真正运行到插件节点时,只需要告诉 Link:

toolId
operationId
version
参数

Link 再根据工具 Schema 找到:

调用哪个地址
使用什么 Method
参数放在哪里
需要什么 Header
是否需要鉴权

最后构造真实请求并执行。

整个过程就是:

Workflow
   ↓
PluginNode
   ↓
Link
   ↓
读取 Tool Schema
   ↓
解析 OpenAPI
   ↓
构造 HTTP 请求
   ↓
执行外部工具
   ↓
返回 Workflow

3. Schema 为什么重要

Link 能做到统一执行各种工具,关键就在 Schema。

Schema 可以理解成:

工具和系统之间的契约。

例如:

server = https://api.xxx.com
method = POST
path = /tts
text = string
text = required

有了这份描述以后,执行器不需要提前知道这是 TTS、天气还是 OCR。

它只需要:

读取 Schema
↓
解析 Schema
↓
按照 Schema 执行

这就是典型的:

契约驱动执行。

以后增加新工具时,不一定需要修改 Workflow Engine,只需要增加新的工具定义。


4. 为什么还需要 toolId、operationId 和 version

可以这样理解:

toolId
= 哪个工具

operationId
= 工具里的哪个能力

version
= 使用哪个版本

比如:

toolId = weather

里面可能有:

currentWeather
weatherForecast
airQuality

这些就是不同的 operation。

而 version 解决的是兼容问题。

比如天气 API 从:

v1

升级到了:

v2

老工作流仍然可以继续使用 v1,新工作流使用 v2。

所以:

版本化可以降低工具升级对已有工作流的影响。


5. Redis、MySQL、HTTP Executor 分别是什么角色

这些组件不要和 Link 的核心思想混在一起。

可以简单理解:

MySQL
= 保存工具档案

Redis
= 缓存工具配置,提高查询速度

Schema Parser
= 读取工具说明书

HttpExecutor
= 真正发送 HTTP 请求

它们只是 Link 不同层次的实现组件。

真正核心仍然是:

统一描述
+
统一执行

6. 什么时候适合使用这种架构

当系统开始出现大量外部能力时,就非常适合增加一层 Link。

典型场景包括:

  • 工作流需要接入很多第三方 API;
  • 工具数量会不断增加;
  • 同一个工具可能存在多个版本;
  • 希望工具可以动态创建,而不是每增加一个工具就修改 Workflow;
  • 未来可能同时接 HTTP、RPC、MCP 等不同协议;
  • 希望统一做鉴权、限流、超时、日志和安全治理。

如果系统只有两三个非常固定的内部接口,而且以后基本不会变化,那么直接调用反而可能更简单。

所以 Link 并不是为了“多一层架构”。

它真正适合解决的是:

外部能力越来越多以后,如何控制复杂度。


7. 最值得沉淀的几个架构思想

PaiFlow 的 Link 背后,其实可以抽象出几条很通用的软件设计思想:

Workflow
→ 业务编排

Link
→ 能力适配与路由

Tool Schema
→ 能力契约

Schema Parser
→ 契约解释

Executor
→ 底层执行

MySQL
→ 元数据持久化

Redis
→ 性能优化

External Tool
→ 真正的能力提供者

其中最重要的一句话是:

上层只表达“我要做什么”,中间层负责解决“具体怎么做”。

这也是 Link 真正的价值。


总结

PaiFlow 的 Link 不是某一个具体插件。

它更像是一套:

外部能力接入基础设施。

Workflow 负责流程,Link 负责连接工具。

通过统一的 Tool Schema 和执行协议,不管下面接的是天气、TTS、OCR、HTTP API,还是未来的 MCP,对 Workflow 来说都可以表现成一个统一的 Tool。

这就是插件架构真正想解决的问题:

不是怎么调用一个 API,而是当未来有一百个 API 时,系统依然能够保持清晰。

PaiFlow 插件架构思考:为什么要用 Link 连接外部能力
http://www.clxhxhhr.top/posts/646/
作者
clxstart
发布于
2026-09-16
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。