Workflows
Mastra 从 src/mastra/workflows/ 下的 .ts 和 .js 文件中发现项目级 Workflow。此约定并不局限于某个 Agent:每个包含默认导出的文件都会成为已注册的 Workflow,文件名则成为 Workflow 键。
本页介绍基于文件的约定。有关步骤、schema、控制流、流式传输、状态和 Workflow 执行,请参阅 Workflow 概览。
快速开始快速开始的直接链接
在 src/mastra/workflows/ 下创建文件,使用 createWorkflow() 构建 Workflow,然后将其默认导出。
src/mastra/workflows/daily-report.ts
import { createStep, createWorkflow } from '@mastra/core/workflows'
import { z } from 'zod'
const collectInputs = createStep({
id: 'collect-inputs',
inputSchema: z.object({ topic: z.string() }),
outputSchema: z.object({ topic: z.string(), audience: z.string() }),
execute: async ({ inputData }) => ({
topic: inputData.topic,
audience: 'engineering',
}),
})
const writeSummary = createStep({
id: 'write-summary',
inputSchema: z.object({ topic: z.string(), audience: z.string() }),
outputSchema: z.object({ report: z.string() }),
execute: async ({ inputData }) => ({
report: `Daily report about ${inputData.topic} for ${inputData.audience}.`,
}),
})
const dailyReport = createWorkflow({
id: 'daily-report',
inputSchema: z.object({ topic: z.string() }),
outputSchema: z.object({ report: z.string() }),
})
.then(collectInputs)
.then(writeSummary)
.commit()
export default dailyReport
Mastra 会以 daily-report 键注册此 Workflow。
与代码配置的优先级与代码配置的优先级的直接链接
基于文件的 Workflow 会与在 new Mastra() 中注册的 Workflow 合并。如果键冲突,代码中注册的 Workflow 优先。