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 经历以下阶段:
- 创建 - 在文档中通过
/菜单插入 Block - 配置 - 设置 Block 的参数(如模型选择、代码编写等)
- 运行 - 文档执行时按顺序运行每个 Block
- 输出 - Block 产生输出变量,供后续 Block 引用
节点类型
Block 按执行行为分为三种节点类型:
数据节点
产生独立输出,执行时发送 block_start → block_chunk(流式)→ block_complete 事件。
包括:Generation、Structure、Code、Ask、Flow、Tools、Database
容器节点
管理子节点执行,设置作用域变量。
包括:Loop、If-Else、Promise
嵌套规则:
- 容器节点可以包含任意数据节点和其他容器节点
- Ask Block 不可嵌套在 Promise 分支中(因为并行执行时无法暂停等待用户输入)
- Loop 的循环变量(
count、item、index)仅在容器内部可见
叶子节点
无输出,用于结构或流程控制。
包括:Exit、Input(文档结构节点)
输出变量
每个 Block 执行后会产生输出变量,可通过 @blockName > variableName 语法在后续 Block 中引用。
变量可见性由 checkShow 属性控制:
after- 执行完成后,在 Block 之后的任意位置可引用(大多数 Block)inside- 仅在容器节点内部可引用(如 Loop 的item、index)
部分 Block 支持动态变量,根据配置参数决定是否暴露特定变量。例如:
- Generation Block 的
thinking变量仅在选择支持思考的模型时可用 - Database Block 的
rows变量仅在操作类型为query时可用
详细的变量系统说明请参考 变量系统。
Block 类型快速参考
| Block | Type Key | 输出变量 | 节点类型 |
|---|---|---|---|
| Generation | generation | __default__、thinking、tool_calls、image、images | 数据 |
| Structure | structure | __default__ + 动态 Schema 字段 | 数据 |
| Tools | tools | __default__ + 动态工具变量 | 数据 |
| If-Else | ifElse | condition、result | 容器 |
| Loop | loop | count、item、index | 容器 |
| Promise | promise | __default__、count、status、failed、cancelled | 容器 |
| Flow | flow | __default__ + 动态输出 | 数据 |
| Exit | exit | 无 | 叶子 |
| Code | codeBlock | __default__、output、logs、errors | 数据 |
| Database | database | __default__、rows、total、row、success、deletedId | 数据 |
| Ask | ask | __default__、question、answer | 数据 |
| Input | input | 动态(根据输入类型) | 叶子 |