> Discover all available pages from the documentation index: https://mastra.zisheng.pro/llms.txt # Run.resume() `.resume()` 方法使用新数据恢复已暂停的 workflow run,让你可以从特定步骤继续执行。 ## 使用示例 ```typescript const run = await workflow.createRun() const result = await run.start({ inputData: { value: 'initial data' } }) if (result.status === 'suspended') { const resumedResults = await run.resume({ resumeData: { value: 'resume data' }, }) } ``` ## 参数 **resumeData** (`z.infer`): 用于恢复已暂停步骤的数据 **step** (`Step | [...Step[], Step] | string | string[]`): 作为恢复执行起点的步骤。可以是 Step 实例、Step 数组、步骤 ID 字符串或步骤 ID 字符串数组 **requestContext** (`RequestContext`): 恢复执行时使用的 Request Context 数据 **retryCount** (`number`): 嵌套 workflow 执行的可选重试次数 **forEachIndex** (`number`): 指定已暂停 .foreach() 步骤中的某次迭代。传入要恢复的迭代从零开始的索引;其他迭代保持暂停。省略此字段可使用同一 resumeData 恢复该步骤所有已暂停的迭代。 **tracingContext** (`TracingContext`): 用于创建子 span 和添加 metadata 的 Tracing 上下文。使用 Mastra 的 tracing 系统时会自动注入。 **tracingContext.currentSpan** (`Span`): 用于创建子 span 和添加 metadata 的当前 span。可在执行期间用它创建自定义子 span 或更新 span 属性。 **tracingOptions** (`TracingOptions`): Tracing 配置选项。 **tracingOptions.metadata** (`Record`): 要添加到根 trace span 的 metadata。可用于添加用户 ID、会话 ID 或 feature flag 等自定义属性。 **tracingOptions.requestContextKeys** (`string[]`): 要提取为此 trace 的 metadata 的其他 RequestContext 键。支持使用点表示法访问嵌套值(例如 'user.id')。 **tracingOptions.traceId** (`string`): 此次执行使用的 trace ID(1-32 个十六进制字符)。提供后,此 trace 将归入指定的 trace。 **tracingOptions.parentSpanId** (`string`): 此次执行使用的父 span ID(1-16 个十六进制字符)。提供后,根 span 将创建为该 span 的子 span。 **tracingOptions.tags** (`string[]`): 应用于此 trace 的标签,即用于对 trace 进行分类和筛选的字符串标签。 **outputOptions** (`OutputOptions`): 输出配置选项。 **outputOptions.includeState** (`boolean`): 是否在结果中包含 workflow run 状态。 ## 返回值 **result** (`Promise>`): 解析为 workflow 执行结果的 promise,其中包含步骤输出和状态 **traceId** (`string`): 启用 Tracing 时与此次执行关联的 trace ID。可用它关联日志并调试执行流程。 **spanId** (`string`): 启用 Tracing 时与此次执行关联的根 span ID。可用于 span 级别的查找和关联。 ## 扩展使用示例 ```typescript if (result.status === 'suspended') { const resumedResults = await run.resume({ step: result.suspended[0], resumeData: { value: 'resume data' }, }) } ``` > **备注:** 仅有一个步骤暂停时,可以省略 `step` 参数,workflow 会自动恢复该步骤。对于有多个已暂停步骤的 workflow,必须明确指定要恢复的步骤。 ### 恢复单次 [`.foreach()`](https://mastra.zisheng.pro/reference/workflows/workflow-methods/foreach) 迭代 当 [`.foreach()`](https://mastra.zisheng.pro/reference/workflows/workflow-methods/foreach) 步骤在多次迭代中暂停时,使用 `forEachIndex`(从零开始)逐次恢复迭代,并为每次迭代提供不同的 `resumeData`。未被 `forEachIndex` 指定的迭代会保持暂停,直至恢复。 ```typescript // Resume only the second iteration (index 1) with its own data await run.resume({ step: 'approve', resumeData: { ok: true }, forEachIndex: 1, }) // Later, resume the first iteration with different data await run.resume({ step: 'approve', resumeData: { ok: false }, forEachIndex: 0, }) ``` 如果省略 `forEachIndex`,该步骤每个已暂停的迭代都会使用同一个 `resumeData` 恢复。 ## 相关内容 - [Workflows 概览](https://mastra.zisheng.pro/docs/workflows/overview) - [Workflow.createRun()](https://mastra.zisheng.pro/reference/workflows/workflow-methods/create-run) - [暂停与恢复](https://mastra.zisheng.pro/docs/workflows/suspend-and-resume) - [人机协同](https://mastra.zisheng.pro/docs/workflows/human-in-the-loop)