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 * * * * 執行。派送器會從儲存空間讀取到期的通知記錄,按 agentId、resourceId 及 threadId 將摘要分組,然後透過 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
部署環境名稱(例如
production、staging、development)。設定後,它會自動附加至所有可觀測性信號,讓你毋須在每次呼叫時傳入 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
BackgroundTaskManagerConfig
enabled?:
boolean
啟用背景工作派送。
globalConcurrency?:
number
所有 Agent 合計可同時執行的工作數目上限。
perAgentConcurrency?:
number
每個 Agent 可同時執行的工作數目上限。
backpressure?:
'queue' | 'reject' | 'fallback-sync'
達到並行處理上限時的行為。
defaultTimeoutMs?:
number
預設工作逾時(毫秒)。
defaultRetries?:
RetryConfig
預設重試設定。
scheduler?:
object
object
enabled?:
boolean
明確啟用或停用排程器。
方法方法 的直接連結
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
重新啟動時擲回錯誤的執行數目。