跳至主要內容

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