Block 系统
Block 是外脑编辑器中的功能单元,类似编程中的函数。每个 Block 执行特定任务并产生输出,多个 Block 组合在一起构成完整的 AI 工作流。
Block 分类
外脑编辑器提供 16 种 Block,分为五大类:
AI Block
通过 AI 模型生成内容或提供 AI 相关能力。
| Block | 说明 |
|---|---|
| Generation | 调用 AI 模型生成文本、图片等内容(可开模型工具/生图) |
| Structure | 调用 AI 模型生成结构化 JSON 数据 |
| Decision | 对判断说明逐题做是否/候选/评分的类型化判断(决策模型) |
| Tools | 声明工具调用能力,为 AI 模型提供工具 |
| Allow Tools | 声明 skill 文档允许使用的工具 |
| Tool | 调用已安装的 Tool Template(工具模板)作为子流程 |
控制流 Block
控制执行流程:分支、循环、并行、跳转。
| Block | 说明 |
|---|---|
| If-Else | 根据条件执行不同分支(容器节点,支持 AI Prompt 条件) |
| Loop | 循环执行子内容,支持计次、列表遍历和条件循环(容器节点) |
| Promise | 并行执行多个分支,支持 race/all 策略(容器节点) |
| Flow | 调用外部文档作为子工作流 |
| Exit | 提前终止文档执行(可配合 Output 覆盖输出字段) |
数据 Block
处理数据和代码逻辑。
| Block | 说明 |
|---|---|
| Code | 在沙箱中执行 JavaScript/TypeScript 代码 |
| Database | 对项目数据库执行查询、插入、更新、删除操作 |
| Knowledge Base Search | 对项目知识库做语义检索,输出最相关的内容 |
交互 Block
处理用户交互和输入。
| Block | 说明 |
|---|---|
| Ask | 暂停执行等待用户输入 |
| Input | 定义文档的输入参数(文档结构节点) |
输出声明
| 能力 | 说明 |
|---|---|
| Output | 声明工作流对外的最终输出结构(编辑器底部面板,非插入式 Block) |
模型内置工具(web_search / file_search / code_interpreter 等)不再作为独立 Block,统一在 Generation Block 的「模型工具」中配置。
Block 生命周期
每个 Block 经历以下阶段:
- 创建 - 在文档中通过
/菜单插入 Block - 配置 - 设置 Block 的参数(如模型选择、代码编写等)
- 运行 - 文档执行时按顺序运行每个 Block
- 输出 - Block 产生输出变量,供后续 Block 引用
节点类型
Block 按执行行为分为四种节点类型:
数据节点
产生独立输出,执行时发送 block_start → block_chunk(流式)→ block_complete 事件。
包括:Generation、Structure、Decision、Code、Ask、Flow、Tool、Tools、Database、Knowledge Base Search
容器节点
管理子节点执行,设置作用域变量。
包括:Loop、If-Else、Promise
嵌套规则:
- 容器节点可以包含任意数据节点和其他容器节点
- Ask Block 不可嵌套在 Promise 分支中(因为并行执行时无法暂停等待用户输入)
- Exit Block 不可嵌套在 Promise 分支中
- Loop 的循环变量(
count、item、index)仅在容器内部可见
声明节点
只声明配置不执行逻辑。
包括:Tools、Allow Tools、Input(文档结构节点)
叶子节点
无输出,用于流程控制。
包括:Exit
输出变量
每个 Block 执行后会产生输出变量,可通过 @blockName > variableName 语法在后续 Block 引用。
变量可见性由 checkShow 属性控制:
after- 执行完成后,在 Block 之后的任意位置可引用(大多数 Block)inside- 仅在容器节点内部可引用(如 Loop 的item、index)
部分 Block 支持动态变量,根据配置参数决定是否暴露特定变量。例如:
- Generation Block 的
thinking变量仅在选择支持思考的模型时可用 - Database Block 的
rows变量仅在操作类型为query时可用 - If-Else / Loop / Promise 的
decision判断详情变量仅在开启「输出判断详情」开关时产出
详细的变量系统说明请参考 变量系统。
Block 类型快速参考
| Block | Type Key | 输出变量 | 节点类型 |
|---|---|---|---|
| Generation | generation | __default__、thinking、tool_calls、image、images | 数据 |
| Structure | structure | __default__ + 动态 Schema 字段 | 数据 |
| Decision | decision | 各判断项标识、__jev__、__default__、error | 数据 |
| Tools | tools | 无 | 声明 |
| Allow Tools | allowTools | 无 | 声明 |
| Tool | tool | 按 visible_outputs 映射过滤后的输出 | 数据 |
| If-Else | ifElse | 无(开「输出判断详情」后有 decision) | 容器 |
| Loop | loop | count、item、index(decision,仅循环内) | 容器 |
| Promise | promise | __default__、count、status、failed、cancelled(decision) | 容器 |
| Flow | flow | __default__ + 动态输出(子文档声明 Output 时仅声明字段) | 数据 |
| Exit | exit | 无 | 叶子 |
| Code | codeBlock | __default__、output、logs、errors | 数据 |
| Database | database | __default__、rows、total、row、success、deletedId | 数据 |
| Knowledge Base Search | knowledgeBaseSearch | __default__、results、total | 数据 |
| Ask | ask | __default__、question、answer | 数据 |
| Input | input | 动态(根据输入类型) | 声明 |