Skip to content

模板字符串语法

This content is not available in your language yet.

自动化节点的几乎所有文本字段(HTTP body、URL、命令行参数、LLM prompt、通知文案 …) 都支持模板字符串:用 {{#nodeId.varName.path#}} 嵌入上游节点的输出,运行时引擎 (pkg/engine/workflow/resolver.go)会按节点输出 namespace 解析并替换。

{{#nodeId.varName.path.to.field#}}
含义例子
nodeId上游节点的内部 id(不是 label)findUser
varName节点输出的 namespace(由节点类型决定)records / body / output
path嵌套对象的字段路径,可选data.items[0].name

包围标记是 {{##}}(两个 {/} + 一个 #)—— 这跟 Vue 模板的 {{ }} 故意错开,避免在 mdx / 文档里被误解析。

引用查找记录节点的第一条记录

Section titled “引用查找记录节点的第一条记录”
https://api.example.com/users/{{#findUser.records[0].id#}}

findUser 是一个 FindRecords 节点(id 由你在画板上设),它的输出 namespace 是 records(一个数组)。[0] 取第一条,.id 取那条记录的 id 字段。

{
"name": "{{#findUser.records[0].name#}}",
"age": {{#findUser.records[0].age#}}
}

IfElse 节点会标记 case id 给下游用:

当前分支:{{#myIfElse.case#}}
请基于以下数据写一段摘要:
记录数:{{#findUser.records.length#}}
第一条标题:{{#findUser.records[0].title#}}

不同节点类型的 varName 不一样:

节点主 namespace形状
FindRecordsrecordsArray<{id, ...cells}>
CreateRecord / UpdateRecordrecord{id, ...cells}
HttpRequestbody / status / headersstring / number / object
LLMoutputstring
CommandLinestdout / stderr / exitCodestring / number
TriggerRecordrecord / event触发那行 + ‘create’/‘update’/‘delete’
TriggerWebhookbody / headers / query外部 POST 进来的原样
IfElsecase命中的 case id
Loopitem / index当前循环值 + 序号

完整 schema 见 节点参考页 或仓库内 pkg/engine/workflow/executors.go

{{#查找记录.records[0].id#}} ← 错,"查找记录" 是 label
{{#findUser.records[0].id#}} ← 对,nodeId 是画板上节点配置里的 id

节点 id 在节点头浮窗能看到;新建节点时引擎按 <type>_<rand> 生成(如 findRecords_abc), 可以手动改成短名(推荐)。

FindRecords 输出是数组,不能直接 .id,要 [0].id

{{#findUser.id#}} ← 错,records 是数组,没有顶层 id
{{#findUser.records[0].id#}} ← 对

❌ 字符串字段没套引号(JSON 上下文)

Section titled “❌ 字符串字段没套引号(JSON 上下文)”
{ "name": {{#findUser.records[0].name#}} } ← 错,渲染出 { "name": Alice } 不是合法 JSON
{ "name": "{{#findUser.records[0].name#}}" } ← 对

节点只能引用上游(执行顺序在自己前面的)节点。BFS 引擎按图遍历,到本节点 执行时只有上游变量在 scope 里。下游节点的引用会渲染成空字符串。

如果上游节点在 IfElse 的某个分支里,且当前执行没走那条分支,引擎会把整条边 标 skipped,被它引用就拿不到值。这种情况下变量渲染为空串。

  1. 试运行:编辑器右下角运行历史面板里展开节点查看 input / output; 变量没解析对会肉眼可见。
  2. 变量选择器:节点配置面板里 hover 输入框右上角的 { } 按钮,会弹出 一个变量树,从上游节点的输出 schema 里点选 —— 避免手敲拼错节点 id
  3. JSON 转义:自动化引擎不对模板做 JSON 转义。如果上游变量本身就是字符串 且可能含双引号 / 换行,建议用 JSON.stringify() 风格的中间节点(CommandLine 走 echo + jq 或 LLM 包一层)。