Tool Block(工具模板调用)
调用已安装到当前项目的 Tool Template(工具模板),作为子流程执行并返回过滤后的输出。
功能说明
Tool Block 是数据节点,它通过安装关系引用一个 Tool Template:运行时验证「项目已安装该模板」后,从模板锁定的部署版本加载 snapshot 并执行,把模板声明的 visible_outputs 映射过滤后注册为本 Block 的输出变量。
它解决的是「把现成工具装配进工作流」:模板由管理员在工具模板库统一维护(含版本与部署快照),项目安装后即可在文档中通过 Slash 菜单插入对应的 Tool Block。
与 Flow Block 的区别:
| Flow | Tool | |
|---|---|---|
| 引用方式 | 直接指定目标文档(targetDocumentId / targetDeploymentId) | 通过「项目 + 模板」安装关系间接引用锁定版本 |
| 输入 | inputJSON 手动传参 | 可见输入表单 + 模板 hidden_input_defaults 自动合并 |
| 输出 | 收集子文档全部数据节点(或 Output 声明字段) | 只暴露模板 visible_outputs 映射的字段 |
| 异步 | 支持 await=false(fire-and-forget) | 不支持,始终等待完成 |
| 密钥 | — | 按 requiredConfigs 预检项目密钥,缺失/未加密时明确报错 |
使用场景
- 复用平台工具:调用管理员上架的标准化工具(如数据转换、第三方 API 封装),无需自己搭工作流
- 版本稳定:模板升级不影响已插入的 Tool Block——它锁定在安装时的部署版本
- 受控输入输出:模板作者决定哪些输入对使用者可见、哪些输出暴露,界面按清单自动生成表单
配置参数
| 属性名 | 类型 | 说明 | 默认值 |
|---|---|---|---|
templateId | string | 工具模板 ID(必填,缺失时运行报错) | — |
templateSlug / templateName | string | 模板标识/名称(展示用缓存) | — |
templateVersion | string | 模板版本(展示用缓存) | — |
lockedDeploymentId | string | 锁定的部署版本 ID(快照来源) | — |
sourceType | 'template' | 'package' | 来源:模板库直装 / 工具包内文件 | — |
inputJSON | string | 可见输入参数(JSON 序列化,编辑器表单生成) | '{}' |
配置面板上方展示模板信息卡片(名称、版本、描述),下方按模板 manifest 的可见输入清单自动生成表单(布尔用开关、数字用数字输入、其余用文本框,带描述与必填标记)。若模板已卸载会提示「未找到对应的安装记录」。
输出变量
输出按模板的 visible_outputs 映射过滤:只有映射表中声明的 name(映射自子流程输出的 mappedFrom)会注册为变量。
| 变量名 | 类型 | 说明 |
|---|---|---|
{输出名} | 按 manifest 声明 | 每条 visible_outputs 映射对应一个变量 |
运行时约束
- 适用文档类型:普通文档(document)。不可用于 skill 文档。
- 必须先安装:执行时校验
projectId + templateId的安装关系,未安装/已卸载会报错「Tool 未安装或已卸载」。 - 密钥预检:模板声明的
requiredConfigs会在执行前检查项目密钥(存在且值可用),缺失或加密未配置会明确报错,不会带病执行。 - 调用上限:与 Flow 共用调用追踪器——总调用次数、单模板调用次数超过上限时报错(防止无限递归);循环引用检测以
templateId为键,检测到A → B → A式回路时报错终止。
注意事项
- Tool Block 的 Slash 菜单项是动态生成的:来自当前项目已安装的工具模板清单,没有安装任何模板时菜单里不会出现 Tool 项。
- 模板升级后,已插入的 Tool Block 不会自动跟随新版本;需要重新插入或更新安装版本。
- 模板的隐藏输入(
hidden_input_defaults)由模板作者在管理端配置,使用者不可见、不可覆盖,运行时自动合并。