Skip to content

Block 系统

Block 是外脑编辑器中的功能单元,类似编程中的函数。每个 Block 执行特定任务并产生输出,多个 Block 组合在一起构成完整的 AI 工作流。

Block 分类

外脑编辑器提供 12 种 Block,分为四大类:

AI Block

通过 AI 模型生成内容。

Block说明
Generation调用 AI 模型生成文本、图片等内容
Structure调用 AI 模型生成结构化 JSON 数据
Tools为 AI 模型提供工具调用能力

控制流 Block

控制执行流程:分支、循环、并行、跳转。

Block说明
If-Else根据条件执行不同分支(容器节点)
Loop循环执行子内容,支持计次和列表遍历(容器节点)
Promise并行执行多个分支,支持 race/all 策略(容器节点)
Flow调用外部文档作为子工作流
Exit提前终止文档执行

数据 Block

处理数据和代码逻辑。

Block说明
Code在沙箱中执行 JavaScript/TypeScript 代码
Database对项目数据库执行查询、插入、更新、删除操作

交互 Block

处理用户交互和输入。

Block说明
Ask暂停执行等待用户输入
Input定义文档的输入参数(文档结构节点)

Block 生命周期

每个 Block 经历以下阶段:

  1. 创建 - 在文档中通过 / 菜单插入 Block
  2. 配置 - 设置 Block 的参数(如模型选择、代码编写等)
  3. 运行 - 文档执行时按顺序运行每个 Block
  4. 输出 - Block 产生输出变量,供后续 Block 引用

节点类型

Block 按执行行为分为三种节点类型:

数据节点

产生独立输出,执行时发送 block_startblock_chunk(流式)→ block_complete 事件。

包括:Generation、Structure、Code、Ask、Flow、Tools、Database

容器节点

管理子节点执行,设置作用域变量。

包括:Loop、If-Else、Promise

嵌套规则

  • 容器节点可以包含任意数据节点和其他容器节点
  • Ask Block 不可嵌套在 Promise 分支中(因为并行执行时无法暂停等待用户输入)
  • Loop 的循环变量(countitemindex)仅在容器内部可见

叶子节点

无输出,用于结构或流程控制。

包括:Exit、Input(文档结构节点)

输出变量

每个 Block 执行后会产生输出变量,可通过 @blockName > variableName 语法在后续 Block 中引用。

变量可见性由 checkShow 属性控制:

  • after - 执行完成后,在 Block 之后的任意位置可引用(大多数 Block)
  • inside - 仅在容器节点内部可引用(如 Loop 的 itemindex

部分 Block 支持动态变量,根据配置参数决定是否暴露特定变量。例如:

  • Generation Block 的 thinking 变量仅在选择支持思考的模型时可用
  • Database Block 的 rows 变量仅在操作类型为 query 时可用

详细的变量系统说明请参考 变量系统

Block 类型快速参考

BlockType Key输出变量节点类型
Generationgeneration__default__thinkingtool_callsimageimages数据
Structurestructure__default__ + 动态 Schema 字段数据
Toolstools__default__ + 动态工具变量数据
If-ElseifElseconditionresult容器
Looploopcountitemindex容器
Promisepromise__default__countstatusfailedcancelled容器
Flowflow__default__ + 动态输出数据
Exitexit叶子
CodecodeBlock__default__outputlogserrors数据
Databasedatabase__default__rowstotalrowsuccessdeletedId数据
Askask__default__questionanswer数据
Inputinput动态(根据输入类型)叶子

AI Workflow Editor