Workflow
Mastra 會在 src/mastra/workflows/ 下的 .ts 和 .js 檔案中探索項目層級的 Workflow。此慣例不限於單一 Agent:每個含有預設匯出的檔案都會成為已註冊的 Workflow,而檔案名稱會成為 Workflow 的鍵。
本頁說明檔案式慣例。如需了解步驟、結構描述、控制流程、串流、狀態及 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 優先。