扣子coze的AI工作流搭建技术,开源项目FlowGram流程搭建引擎

参考

github.com/bytedance/f...

flowgram.ai/guide/intro...

site.logic-flow.cn/article/low...

mp.weixin.qq.com/s/9aWQv4tnk...

扣子及AI 工作流搭建技术-刘文成.pdf

前前文:免费使用满血版DeepSeek-R1的多种方案大语言模型(LLM)应用开发平台

介绍

FlowGram 是一套基于节点编辑的流程搭建引擎,帮助开发者快速创建固定布局或自由连线布局的流程,并提供一套交互的最佳实践, 很适合有明确输入和输出的可视化工作流。

Github: github.com/bytedance/f...

官网:flowgram.ai/

已服务字节内部30+项目,包含扣子工作流、飞书低代码平台工作流、飞书多维表格工作流等。

布局(固定布局与自由布局)

固定布局(Fixed Layout)与自由布局(Free Layout)的核心区别体现在节点约束、交互逻辑、适用场景三个维度,以下是具体对比:

一、交互行为差异

|------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|
| 特性 | 固定布局(Fixed Layout) | 自由布局(Free Layout) |
| 节点移动 | 受网格 / 预设位置约束(如 vertical-fixed-layout.ts 实现垂直对齐) | 无约束,任意坐标拖拽(free-layout-core 支持自由坐标) |
| 连接逻辑 | 自动吸附至节点锚点(输入 / 输出端口对齐) | 支持自由路径连线(可弯曲、任意角度) |
| 复合节点 | 内置分支 / 循环等层级结构(如 WorkflowNodeEntity 的子节点递归) | 纯扁平结构,无内置层级(需手动通过节点嵌套模拟) |
| 对齐辅助 | 网格线、吸附提示(代码中 LayoutService 提供对齐算法) | 无辅助线,完全自由摆放 |

二、典型应用场景

固定布局(适合结构化流程)

  • 流程图 / 逻辑图:如审批流程、算法步骤(代码中 fixed-layout-demo.gif 展示分支节点嵌套)。

  • 模块化配置:AI 提示词链的分层配置(@flowgram.ai/fixed-layout-editor 支持输入输出端口绑定)。

  • 特点:强制规范结构,适合需要清晰层级和数据流的场景(如代码生成、自动化任务编排)。

自由布局(适合创意 / 复杂连接)

  • 思维导图:节点无规则关联(free-layout-demo.gif 展示发散式连接)。

  • AI 工作流:多模型组合的复杂调用(free-layout-core 支持任意节点间的动态连线)。

  • 特点:无约束的创作空间,适合探索性、非结构化的流程设计。

三、代码实现差异(关键文件对比)

|--------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|
| 功能模块 | 固定布局实现(fixed-layout-core | 自由布局实现(free-layout-core |
| 布局算法 | VerticalFixedLayout.ts 实现垂直方向自动排版 | FreeLayoutService.ts 仅记录节点坐标,无自动排版 |
| 节点数据结构 | 支持 blocks 嵌套(树形结构,如子画布节点) | 扁平的 nodes + edges (JSON 结构无层级) |
| 交互约束 | NodeDragger 限制移动范围(allowDrag 配置) | FreeNodeDragger 完全开放移动(无坐标限制) |
| 连接线 | EdgeAutoAlign 自动拉直(fixed-layout-editor 默认样式) | CubicBezierEdge 支持曲线(自由布局默认样式) |

四、输出数据对比(JSON 结构)

固定布局(含层级)

json 复制代码
{
  "nodes": [
    {
      "id": "root",
      "type": "flow",
      "blocks": [  
        { "id": "step1", "label": "开始" },
        { 
          "id": "branch", 
          "type": "if", 
          "blocks": [{"id": "then", "label": "条件成立"}]  
        }
      ]
    }
  ]
} 

自由布局(纯扁平)

json 复制代码
{
  "nodes": [
    { "id": "node1", "x": 100, "y": 50, "label": "A" },
    { "id": "node2", "x": 300, "y": 200, "label": "B" }
  ],
  "edges": [
    { "source": "node1", "target": "node2", "path": "M100,50 Q200,125 300,200" }  // 贝塞尔曲线坐标
  ]
}

五、如何选择?

  • 选固定布局:需要强制规范结构、层级嵌套(如流程图、低代码表单)。

  • 选自由布局:追求灵活性、创意连接(如 AI 多模态流程、思维导图)。

💡 实际案例:

  • 固定布局:文档中的「审批流程」示例,节点必须按顺序排列,分支结构清晰。

  • 自由布局:AI 提示词生成器,用户可随意连接「主题」「修饰词」「输出格式」节点。

通过 npx @flowgram.ai/create-app 初始化项目时,可直接选择 fixed-layout-simple 或 free-layout-simple 模板体验差异

复合节点(条件、循环、错误监控)

一、条件组件(Condition)

二、循环组件(Loop)

三、错误监控组件(Try Catch)

四、大模型组件(LLM)

♾️、自定义节点

表单与变量

参考:

flowgram.ai/guide/advan...

flowgram.ai/guide/advan...

变量引擎是 Flowgram 提供的一个可选内置功能,可以帮助 Workflow 设计时更高效地实现变量信息编排。它可以实现以下功能:

作用域约束控制、变量信息树的维护、变量类型自动联动推导

FlowGram技术设计

如官网所讲

  • CanvasEngine:画布引擎负责绘制"点-线"构成的图, 保障大规模节点时的流畅性

  • NodeEngine: 节点引擎提供 渲染、校验、数据修改等表单能力

  • VariableEngine: 变量引擎引入作用域模型, 抽象各业务场景的变量

  • Material: 物料库包含默认 ICON 等 UI, 业务接入后可覆盖扩展

变量引擎

flowgram.ai/guide/conce...

非常建议看官方说明。

画布引擎、节点引擎、ECS、IOC、等

参考官方学习

画布引擎:flowgram.ai/guide/conce...

节点引擎:flowgram.ai/guide/conce...

ECS:flowgram.ai/guide/conce...

IOC:flowgram.ai/guide/conce...

对比ReactFlow:flowgram.ai/guide/conce...

附件

如果你看了前面的参考,就知道这是3月8日第19届D2终端技术大会中工程研发专场中《扣子及AI 工作流搭建技术-刘文成》的分享。也是在这个时间之后FlowGram才开源。

相关推荐
jingling5551 分钟前
面试版-前端开发核心知识
开发语言·前端·javascript·vue.js·面试·前端框架
拾光拾趣录6 分钟前
CSS 深入解析:提升网页样式技巧与常见问题解决方案
前端·css
莫空00007 分钟前
深入理解JavaScript属性描述符:从数据属性到存取器属性
前端·面试
guojl8 分钟前
深度剖析Kafka读写机制
前端
FogLetter8 分钟前
图片懒加载:让网页飞起来的魔法技巧 ✨
前端·javascript·css
Mxuan9 分钟前
vscode webview 插件开发(精装篇)
前端
Mxuan10 分钟前
vscode webview 插件开发(交付篇)
前端
Mxuan11 分钟前
vscode 插件与 electron 应用跳转网页进行登录的实践
前端
拾光拾趣录11 分钟前
JavaScript 加载对浏览器渲染的影响
前端·javascript·浏览器
Codebee12 分钟前
OneCode图表配置速查手册
大数据·前端·数据可视化