跳至主要內容

Mastra 類別

Mastra 類別是所有 Mastra 應用程式的中央協調器,負責管理 Agent、Workflow、儲存空間、記錄、可觀測性等。一般而言,你會建立單一 Mastra 實例來協調應用程式。

你可以將 Mastra 視為頂層註冊表,用來註冊需要在整個應用程式中存取的 Agent、Workflow、Tool 及其他元件。

使用範例
使用範例 的直接連結

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { PinoLogger } from '@mastra/loggers'
import { LibSQLStore } from '@mastra/libsql'
import { weatherWorkflow } from './workflows/weather-workflow'
import { weatherAgent } from './agents/weather-agent'

export const mastra = new Mastra({
workflows: { weatherWorkflow },
agents: { weatherAgent },
storage: new LibSQLStore({
id: 'mastra-storage',
url: ':memory:',
}),
logger: new PinoLogger({
name: 'Mastra',
level: 'info',
}),
})

如要透過 Workflow 排程器自動傳送延後的通知記錄及通知摘要,請啟用排程通知派送:

src/mastra/index.ts
export const mastra = new Mastra({
agents: { supportAgent },
storage,
notifications: {
dispatch: {
enabled: true,
cron: '*/1 * * * *',
batchSize: 100,
},
},
})

notifications.dispatch.enabled 允許內部派送器 Workflow 按預設 cron */1 * * * * 執行。派送器會從儲存空間讀取到期的通知記錄,按 agentIdresourceIdthreadId 將摘要分組,然後透過 Agent thread runtime 發出信號。它並非面向使用者的入口點。派送排程(以及支援它的 Workflow 排程器)會在首次出現延後或摘要通知時才按需啟動,因此從不延後通知的應用程式完全不會執行排程器。

建構函式參數
建構函式參數 的直接連結

有關所有可用設定選項的詳細文件,請參閱設定參考

agents?:

Record<string, Agent>
= {}
要註冊的 Agent 實例,以名稱作為鍵

tools?:

Record<string, ToolApi>
= {}
要註冊的 Tool 實例。鍵是 `getTool()` 使用的註冊鍵,值則是 Tool 實例。使用 `getToolById()` 按內在 ID 查找,並使用 `listTools()` 讀取註冊表。

storage?:

MastraCompositeStore
用來保存資料的儲存引擎實例

vectors?:

Record<string, MastraVector>
向量儲存實例,用於語意搜尋及向量式 Tool(例如 Pinecone、PgVector 或 Qdrant)

logger?:

Logger
= INFO 層級的控制台記錄器
使用 new PinoLogger() 建立的記錄器實例

idGenerator?:

(context?: IdGeneratorContext) => string
自訂 ID 產生器函式。Agent、Workflow、記憶體及其他元件會用它產生唯一識別碼。它會接收可選的上下文,例如 idType、source、entityId 及 threadId,以支援可感知上下文的 ID 格式。

workflows?:

Record<string, Workflow>
= {}
要註冊的 Workflow。結構為鍵值組合,鍵是 Workflow 名稱,值是 Workflow 實例。

tts?:

Record<string, MastraVoice>
用於語音合成的文字轉語音 Provider

observability?:

ObservabilityEntrypoint
用於追蹤及監察的可觀測性設定

environment?:

string
部署環境名稱(例如 productionstagingdevelopment)。設定後,它會自動附加至所有可觀測性信號,讓你毋須在每次呼叫時傳入 tracingOptions.metadata.environment,亦可按環境篩選信號。如未設定,則回退至 process.env.NODE_ENV;若兩者均未設定,便維持 undefined。每次呼叫的 tracingOptions.metadata.environment 永遠優先。

deployer?:

MastraDeployer
用於管理部署的 MastraDeployer 實例。

server?:

ServerConfig
伺服器設定,包括連接埠、主機、逾時、API 路由、middleware、CORS 設定,以及 Swagger UI、API 請求記錄和 OpenAPI 文件的建置選項。

mcpServers?:

Record<string, MCPServerBase>
此物件的鍵是註冊鍵(供 getMCPServer() 使用),值是 MCPServer 實例或繼承 MCPServerBase 的類別。每個 MCPServer 都必須有 id 屬性。你可使用 getMCPServer() 按註冊鍵擷取伺服器,或使用 getMCPServerById() 按其內在 id 擷取。

bundler?:

BundlerConfig
= { externals: [], sourcemap: false, transpilePackages: [], dynamicPackages: [] }
資產 bundler 的設定,提供 externals、sourcemap、transpilePackages 及 dynamicPackages 選項。

scorers?:

Record<string, Scorer>
= {}
用於評估 Agent 回應及 Workflow 輸出的 Scorer

processors?:

Record<string, Processor>
= {}
用於轉換 Agent 輸入及輸出的輸入/輸出 Processor

gateways?:

Record<string, MastraModelGateway>
= {}
要註冊的自訂模型 gateway,用於透過替代 Provider 或私有部署存取 AI 模型。結構為鍵值組合,鍵是註冊鍵(供 getGateway() 使用),值是 gateway 實例。

memory?:

Record<string, MastraMemory>
= {}
要註冊的記憶體實例。已儲存的 Agent 可以參照這些實例,並在 runtime 解析。結構為鍵值組合,鍵是註冊鍵,值是記憶體實例。

notifications?:

object
通知信號派送的 runtime 設定。
object

dispatch?:

NotificationDispatchConfig
延後通知及通知摘要的排程派送設定。派送預設為啟用。
object

enabled?:

boolean
設定為 false,即可停用自動排程通知派送。

cron?:

string
內部通知派送器 Workflow 使用的 Cron 排程。

batchSize?:

number
每次派送執行最多可處理的到期通知記錄數目。

versions?:

VersionOverrides
子 Agent 委派的全域版本覆寫。當 supervisor Agent 委派工作給子 Agent 時,這些覆寫會決定使用該子 Agent 的哪個已儲存版本,而非程式碼所定義的預設版本。必須設定 editor package。詳情請參閱 Editor 版本控制
VersionOverrides

agents?:

Record<string, VersionSelector>
Agent ID 至其版本選擇器的對應表。每個選擇器可按 ID 或發佈狀態指定特定版本。
VersionSelector

versionId?:

string
要使用的特定版本 ID。

status?:

'draft' | 'published'
選取具有此發佈狀態的最新版本。

workers?:

MastraWorker[] | false
設定哪些 worker 在此 Mastra 實例中執行。如省略,Mastra 會根據你的 PubSub 及設定自動建立預設 worker。傳入 false 可停用所有事件處理(適合另外執行獨立 worker 時使用)。傳入 MastraWorker[] 可加入自訂 worker——它們會與自動建立的預設 worker 合併,而與預設 worker 具有相同 name 的自訂 worker 會取代該預設 worker。

backgroundTasks?:

BackgroundTaskManagerConfig
設定 Agent 的背景工作執行方式。所有選項請參閱背景工作設定參考
BackgroundTaskManagerConfig

enabled?:

boolean
啟用背景工作派送。

globalConcurrency?:

number
所有 Agent 合計可同時執行的工作數目上限。

perAgentConcurrency?:

number
每個 Agent 可同時執行的工作數目上限。

backpressure?:

'queue' | 'reject' | 'fallback-sync'
達到並行處理上限時的行為。

defaultTimeoutMs?:

number
預設工作逾時(毫秒)。

defaultRetries?:

RetryConfig
預設重試設定。

scheduler?:

object
設定用於 cron 驅動 Workflow 觸發程序的排程器 worker。任何 Workflow 宣告 schedule 時便會自動啟用。請參閱排程 Workflow
object

enabled?:

boolean
明確啟用或停用排程器。

recovery?:

MastraRecoveryConfig
= { durableAgents: 'off' }
啟動時復原孤立 Agent 及 Workflow 執行的行為。請參閱崩潰復原
object

durableAgents?:

'auto' | 'off'
設定為 'auto',可在伺服器啟動時自動重新驅動孤立且處於 RUNNING 狀態的 durable Agent 執行。復原會再次發出 LLM 呼叫並重新執行 Tool 呼叫,因此 Tool 必須具備冪等性。請參閱崩潰復原

方法
方法 的直接連結

recoverAllDurableAgents()
recoveralldurableagents 的直接連結

重新驅動所有已註冊 durable Agent 中每個孤立且處於 running 狀態的 durable Agent 執行。當 recovery.durableAgents'auto' 時,系統會在啟動時自動呼叫此方法。你亦可直接呼叫它,以手動復原或從排程工作執行復原。

此方法需要持久儲存空間。如使用記憶體內儲存空間,程序重新啟動後便沒有內容可供復原。

const result = await mastra.recoverAllDurableAgents()
// { agents: 2, recovered: 3, succeeded: 3, failed: 0 }

傳回:

agents:

number
已掃描的 durable Agent 數目。

recovered:

number
已重新驅動的執行總數。

succeeded:

number
成功重新啟動的執行數目。

failed:

number
重新啟動時擲回錯誤的執行數目。