```mdx
---
title: "变量分配器"
description: "管理对话流应用中的持久性会话变量"
icon: "pen-to-square"
---

变量分配器节点通过写入会话变量来管理对话流应用中的持久数据。与每次执行时重置的常规工作流变量不同，会话变量会在整个聊天会话中保持存在。

<Frame caption="变量分配器节点配置">
  <img src="https://assets-docs.dify.ai/2024/11/83d0b9ef4c1fad947b124398d472d656.png" alt="变量分配器界面" />
</Frame>

## 会话变量与工作流变量

**工作流变量**仅在单次工作流执行期间存在，并在工作流完成后重置。

**会话变量**在同一聊天会话中的多个对话轮次中保持存在，使状态交互和上下文记忆成为可能。

这种持久性支持上下文对话、用户个性化、状态工作流以及跨多个用户交互的进度跟踪。

## 配置

配置要更新的会话变量并指定其源数据。您可以在单个节点中分配多个变量。

<Frame caption="变量分配配置界面">
  <img src="https://assets-docs.dify.ai/2024/11/ee15dee864107ba5a93b459ebdfc32cf.png" alt="变量分配配置" />
</Frame>

**变量** - 选择要写入的会话变量

**设置变量** - 从上游工作流节点中选择源数据

**操作模式** - 确定如何更新变量（覆盖、追加、清除等）

## 操作模式

不同的变量类型根据其数据结构支持不同的操作：

<Tabs>
  <Tab title="字符串变量">
    **覆盖** - 用新内容替换整个字符串值
    
    **清除** - 清空变量，设为空或空白
    
    **设置** - 手动输入固定值
  </Tab>
  
  <Tab title="数字变量">
    **覆盖** - 完全替换数字值
    
    **清除** - 设为空或空状态
    
    **设置** - 手动输入特定数字值
    
    **算术** - 加、减、乘或除当前值
  </Tab>
  
  <Tab title="对象变量">
    **覆盖** - 用新数据替换整个对象
    
    **清除** - 清空对象，移除所有属性
    
    **设置** - 手动定义对象结构和值
  </Tab>
  
  <Tab title="数组变量">
    **覆盖** - 用新数据替换整个数组
    
    **清除** - 清空数组，移除所有元素
    
    **追加** - 在数组末尾添加一个项目
    
    **扩展** - 从另一个数组中添加多个项目
    
    **移除** - 从首位或末位删除项目
  </Tab>
</Tabs>

数组操作在构建记忆系统、清单和随时间增长的对话历史记录中尤其强大。

## 常见实现模式

### 智能记忆系统

构建自动检测并存储对话中重要信息的聊天机器人：

<Frame caption="智能记忆系统工作流">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/8d0492814b1515f50e87b2900ff400db.png" alt="智能记忆实现" />
</Frame>

系统分析用户输入以获取可记忆的事实，提取结构化信息，并将其附加到持久记忆数组中，以便在未来的对话中引用。

### 用户偏好存储

存储用户偏好，如语言设置、通知偏好或显示选项：

<Frame caption="用户偏好管理">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/1867d608a7d009431b73377ed65b427b.png" alt="用户偏好工作流" />
</Frame>

使用**覆盖**模式捕获用户输入的初始偏好，然后在所有后续的LLM响应中引用它们以进行个性化互动。

### 渐进式清单

构建跟踪多个对话轮次中的完成状态的引导式工作流：

<Frame caption="渐进式清单实现">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/c4362b01298b12e7d6fcd9e798f3165a.png" alt="渐进式清单工作流" />
</Frame>

使用数组会话变量来跟踪已完成的项目。变量分配器在每一轮更新清单，而LLM引用它来引导用户完成剩余的任务。

## 最佳实践

**选择合适的数据类型** - 对于不断增长的集合使用数组，对于结构化数据使用对象，对于单一值使用简单类型。

**使用描述性变量名** - 清晰命名会话变量以指示其用途和内容。

**处理数据增长** - 监控数组和对象的大小，以防止长时间对话中过度使用内存。

**初始化变量** - 设置会话变量的初始值，以防止未定义的行为。

**适时清除** - 在开始新流程或会话时使用清除操作重置变量。
```