Appearance
变量赋值节点
定义
变量赋值节点用于向可写入变量进行赋值操作,已支持以下可写入变量:
- 会话变量
- 循环变量
通过变量赋值节点,你可以将对话型工作流内任意节点的输出值写入会话变量,实现跨轮次对话的状态持久化,或在任务循环中动态更新循环变量。

配置说明
基础配置
| 配置项 | 说明 |
|---|---|
| 赋值目标 | 选择要写入的变量,支持会话变量和循环变量 |
| 赋值来源 | 选择上游节点的输出变量,或直接输入固定值 |
| 赋值方式 | 支持覆盖(直接替换原值)和追加(拼接到原值末尾,仅 String/Array 类型支持) |
赋值方式说明
| 赋值方式 | 适用类型 | 说明 |
|---|---|---|
| 覆盖 | 所有类型 | 用新值完全替换变量当前值 |
| 追加 | String、Array | 将新值拼接到变量末尾,不清除历史内容 |
对 Array 类型变量使用追加时,新元素会被 push 到数组末尾;对 String 类型使用追加时,新字符串直接拼接在原字符串后。

指定变量写入模式
目标变量的数据类型将影响变量的写入模式。以下是不同变量间的写入模式:
- 目标变量的数据类型为
String
- 覆盖,将源变量直接覆盖至目标变量
- 清空,清空所选中变量中的内容
- 设置,手动指定一个值,无需设置源变量
- 目标变量的数据类型为
Number
- 覆盖,将源变量直接覆盖至目标变量
- 清空,清空所选中变量中的内容
- 设置,手动指定一个值,无需设置源变量
- 数字处理,对目标变量进行
加减乘除操作
- 目标变量的数据类型为
Object
- 覆盖,将源变量直接覆盖至目标变量
- 清空,清空所选中变量中的内容
- 设置,手动指定一个值,无需设置源变量
- 目标变量的数据类型为
Array
- 覆盖,将源变量直接覆盖至目标变量
- 清空,清空所选中变量中的内容
- 追加,在目标的数组变量中添加一个新的元素
- 扩展,在目标的数组变量中添加新的数组,即一次性添加多个元素

典型使用场景
场景一:记录用户偏好,跨轮次持久引用
需求: 用户在第一轮对话中告知语言偏好(如「请用英文回复我」),后续所有轮次均需遵守该偏好。
配置思路:
- 在应用中预先创建会话变量
language_preference(String 类型,默认值为空) - 使用参数提炼节点从用户输入中提取偏好值
- 通过变量赋值节点将提取结果写入
language_preference(赋值方式:覆盖) - 在模型节点的系统提示词中引用
{conversation.language_preference}
开始节点 → 参数提炼节点(提取 language_preference)
→ 变量赋值节点(写入会话变量)
→ 模型节点(提示词中引用偏好变量)
→ 直接回复节点场景二:在任务循环中动态更新循环变量
需求: 在任务循环中,每轮处理完成后需要将中间结果写回循环变量,供下一轮逻辑判断使用。
配置思路:
- 任务循环节点接收数组输入,循环变量为
item - 子流程内通过代码节点或模型节点处理
item - 使用变量赋值节点将处理结果写回循环变量(赋值方式:覆盖)
- 后续子流程节点引用更新后的循环变量继续处理
场景三:暂存文件引用,供后续节点复用
需求: 用户上传文件后,工作流多个分支均需访问该文件,避免重复传递。
配置思路:
- 创建会话变量
uploaded_file(File 类型) - 在对话开始时,通过变量赋值节点将用户上传的文件写入
uploaded_file - 后续任意节点均可通过
{conversation.uploaded_file}引用该文件
常见问题
Q:变量赋值节点执行后,当前轮对话能立即读取到新值吗?
可以。赋值完成后,同一工作流执行链路中后续节点均可读取到最新值。
Q:会话变量的默认值在什么时候生效?
仅在变量从未被赋值时生效。一旦通过变量赋值节点写入过值,默认值不再起作用,除非显式将变量重置为默认值。
Q:能否在一个变量赋值节点中同时对多个变量赋值?
支持。一个变量赋值节点可配置多条赋值规则,按配置顺序依次执行。