扣子工作流中变量流转需分三步:全局变量在智能体设置中配置但须经变量节点显式读取或设置;局部变量通过输出映射与jsonpath路径(如$.data.name)传递;大模型输出需先清洗再解析json,否则导致数据断裂。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在扣子工作流中实现稳定的数据流转,关键在于搞清变量从哪来、到哪去、怎么传——不是所有节点都能直接读取全局变量,也不是所有输出都能被下游自动识别。
全局变量在哪设置
进入智能体编辑页 → 点击左上角「设置」齿轮图标 → 在弹出菜单中选择「全局变量」选项卡。
点击「+ 添加变量」,输入变量名(必须以字母开头,仅含字母、数字、下划线,长度1–20字符)和初始值,例如:【user_role】 填入 "guest",【api_timeout】 填入 3000。
注意:这里配置的变量对当前智能体下所有工作流生效,但不会自动注入到任意节点内部——必须通过变量节点显式引入。
变量节点:把全局变量“拉进”工作流
方法一:拖入「变量」节点 → 在右侧配置面板中,「操作类型」选「读取」→ 「变量名」填你刚在设置里定义的名称,如 user_role → 「输出参数名」设为 workflow_role(这个名字将用于后续节点引用)。
方法二:若需在工作流中动态修改并持久化回全局作用域,变量节点「操作类型」选「设置」→ 「变量名」仍填 user_role → 「输入参数」绑定上游节点输出,例如 {{代码节点.output.new_role}}。
这一步不可跳过。没有变量节点,哪怕你在设置里写了100个全局变量,工作流里的LLM、代码、插件节点都完全感知不到它们的存在。
局部变量传递:靠连线和上下文路径
第一步:确保上游节点已启用「输出变量映射」。例如API节点返回 { "data": { "id": 123, "name": "Alice" } },需在该节点配置中手动指定输出路径为 $.data。
第二步:下游节点输入框内点击「+」→ 选择「引用变量」→ 展开树状结构,找到前序节点名 → 展开其输出字段,勾选 $.data.name 即可将值传入。
第三步:若需在代码节点中处理嵌套结构,务必使用标准 JSONPath 表达式。写成 data.name 会报错;必须写成 $.data.name 或直接绑定整个 $.data 对象再用 Python 解析。
常见错误:两个并行分支各自更新同一全局变量,未加锁也无合并策略,后执行的分支会直接覆盖前一个值。
大模型输出变量的特殊处理
大模型节点的 output 永远是字符串类型,即使 Prompt 要求返回 JSON 数组,实际收到的是 "```json[{'a':1}]```" 这类带包裹的文本。
在后续代码节点中,第一行必须做清洗和解析:
let cleaned = {{大模型节点.output}}.replace(/```json\s*/gi, '').replace(/```\s*/g, '').trim();
const parsed = JSON.parse(cleaned);
不这样做,直接对 parsed[0] 取值会得到 "{" 字符,而非对象——这是60%以上数据断裂问题的根源。











