---
title: 变量
---

import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Image } from '@/components/ui/image'

变量模块在执行过程中更新工作流变量。变量必须首先在工作流的变量部分中初始化，然后您可以使用此模块在工作流运行时更新其值。

<div className="flex justify-center">
  <Image
    src="/static/blocks/variables.png"
    alt="变量模块"
    width={500}
    height={350}
    className="my-6"
  />
</div>

<Callout>
  在工作流中的任何地方使用 `<variable.variableName>` 语法访问变量。
</Callout>

## 概述

变量模块使您能够：

<Steps>
  <Step>
    <strong>更新工作流变量</strong>：在执行过程中更改变量值
  </Step>
  <Step>
    <strong>存储动态数据</strong>：将模块输出捕获到变量中
  </Step>
  <Step>
    <strong>维护状态</strong>：跟踪计数器、标志和中间结果
  </Step>
</Steps>

## 如何使用变量

### 1. 在工作流变量中初始化

首先，在工作流的变量部分（可通过工作流设置访问）中创建您的变量：

```
customerEmail = ""
retryCount = 0
currentStatus = "pending"
```

### 2. 使用变量模块更新

使用变量模块在执行过程中更新这些值：

```
customerEmail = <api.email>
retryCount = <variable.retryCount> + 1
currentStatus = "processing"
```

### 3. 随处访问

在任何模块中引用变量：

```
Agent prompt: "Send email to <variable.customerEmail>"
Condition: <variable.retryCount> < 5
API body: {"status": "<variable.currentStatus>"}
```

## 示例用例

### 循环计数器和状态

<div className="mb-4 rounded-md border p-4">
  <h4 className="font-medium">场景：跟踪循环迭代的进度</h4>
  <ol className="list-decimal pl-5 text-sm">
    <li>在工作流中初始化：`itemsProcessed = 0`, `lastResult = ""`</li>
    <li>循环迭代项目</li>
    <li>在循环内：代理处理当前项目</li>
    <li>在循环内：变量模块更新 `itemsProcessed = <variable.itemsProcessed> + 1`</li>
    <li>在循环内：变量模块更新 `lastResult = <agent.content>`</li>
    <li>下一次迭代：访问 `<variable.lastResult>` 与当前结果进行比较</li>
  </ol>
</div>

### 重试逻辑

<div className="mb-4 rounded-md border p-4">
  <h4 className="font-medium">场景：跟踪 API 重试尝试</h4>
  <ol className="list-decimal pl-5 text-sm">
    <li>在工作流中初始化：`retryCount = 0`</li>
    <li>API 模块尝试请求</li>
    <li>如果失败，变量递增：`retryCount = <variable.retryCount> + 1`</li>
    <li>条件检查 `<variable.retryCount>` \< 3 以重试或失败</li>
  </ol>
</div>

### 动态配置

<div className="mb-4 rounded-md border p-4">
  <h4 className="font-medium">场景：为工作流存储用户上下文</h4>
  <ol className="list-decimal pl-5 text-sm">
    <li>在工作流中初始化：`userId = ""`，`userTier = ""`</li>
    <li>API 获取用户资料</li>
    <li>变量存储：`userId = <api.id>`，`userTier = <api.tier>`</li>
    <li>代理使用 `<variable.userTier>` 个性化响应</li>
    <li>API 使用 `<variable.userId>` 进行日志记录</li>
  </ol>
</div>

## 输出

- **`<variables.assignments>`**：包含此块中所有变量分配的 JSON 对象

## 最佳实践

- **在工作流设置中初始化**：在使用变量之前，始终在工作流的变量部分创建它们
- **动态更新**：使用变量块根据块输出或计算结果更新值
- **在循环中使用**：非常适合在迭代中跟踪状态
- **命名清晰**：使用明确的名称，例如 `currentIndex`，`totalProcessed`，或 `lastError`
