Workflow
Mastra 會從 src/mastra/workflows/ 下的 .ts 和 .js 檔案探索專案層級的 Workflow。此慣例不限於單一 Agent:每個具有 default export 的檔案都會成為已註冊的 Workflow,而檔名會成為 Workflow key。
本頁說明檔案式慣例。若要了解 step、schema、控制流程、串流、state 與 Workflow 執行,請參閱 Workflow 概觀。
快速開始「快速開始」的直接連結
在 src/mastra/workflows/ 下建立檔案,使用 createWorkflow() 建立 Workflow,並將它 default export。
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 key 註冊此 Workflow。
與程式碼設定的優先順序「與程式碼設定的優先順序」的直接連結
檔案式 Workflow 會與透過 new Mastra() 註冊的 Workflow 合併。若 key 發生衝突,以程式碼註冊的 Workflow 優先。