跳至主要內容

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 優先。