Mastra 类
Mastra 类是所有 Mastra 应用中的中央协调器,用于管理 Agent、Workflow、Storage、日志、可观测性等。通常,你会创建单个 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 scheduler 自动交付延迟通知记录和通知摘要,请启用定时通知分发:
src/mastra/index.ts
export const mastra = new Mastra({
agents: { supportAgent },
storage,
notifications: {
dispatch: {
enabled: true,
cron: '*/1 * * * *',
batchSize: 100,
},
},
})
notifications.dispatch.enabled 允许内部 dispatcher Workflow 使用默认 cron */1 * * * * 运行。dispatcher 从 Storage 读取到期通知记录,按 agentId、resourceId 和 threadId 对摘要分组,并通过 Agent thread runtime 发出 signal。它不是面向用户的入口。分发计划(及其底层 Workflow scheduler)会在出现第一个延迟通知或摘要通知时延迟激活,因此从不延迟通知的应用不会运行 scheduler。
构造函数参数构造函数参数的直接链接
所有可用配置选项的详细文档,请参阅配置参考。
agents?:
Record<string, Agent>
= {}
要注册的 Agent 实例,以名称作为键
tools?:
Record<string, ToolApi>
= {}
storage?:
MastraCompositeStore
用于持久化数据的 Storage engine 实例
vectors?:
Record<string, MastraVector>
用于语义搜索和基于 vector 的 Tool 的 vector store 实例(例如 Pinecone、PgVector 或 Qdrant)
logger?:
Logger
= Console logger with INFO level
使用 new PinoLogger() 创建的 Logger 实例
idGenerator?:
(context?: IdGeneratorContext) => string
自定义 ID 生成器函数。供 Agent、Workflow、Memory 和其他组件生成唯一标识符。接收 idType、source、entityId 和 threadId 等可选上下文,以支持上下文感知的 ID 格式。
workflows?:
Record<string, Workflow>
= {}
要注册的 Workflow。采用键值对结构,键为 Workflow 名称,值为 Workflow 实例。
tts?:
Record<string, MastraVoice>
用于语音合成的 text-to-speech Provider
observability?:
ObservabilityEntrypoint
用于 tracing 和监控的可观测性配置
environment?:
string
部署环境名称(例如
production、staging、development)。设置后,会自动附加到所有可观测性 signal,以便按环境筛选,而无需在每次调用时传递 tracingOptions.metadata.environment。未设置时回退到 process.env.NODE_ENV;两者均未设置时保持 undefined。每次调用传入的 tracingOptions.metadata.environment 始终优先。deployer?:
MastraDeployer
用于管理部署的 MastraDeployer 实例。
server?:
ServerConfig
Server 配置,包括 port、host、timeout、API route、middleware、CORS 设置,以及 Swagger UI、API 请求日志和 OpenAPI 文档的构建选项。
mcpServers?:
Record<string, MCPServerBase>
一个对象,其中键为注册键(供 getMCPServer() 使用),值为 MCPServer 实例或扩展 MCPServerBase 的类。每个 MCPServer 都必须具有 id 属性。可使用 getMCPServer() 按注册键获取 server,或使用 getMCPServerById() 按固有 id 获取。
bundler?:
BundlerConfig
= { externals: [], sourcemap: false, transpilePackages: [], dynamicPackages: [] }
asset 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>
= {}
要注册的 Memory 实例。已存储的 Agent 可以引用这些实例,并在运行时解析。采用键值对结构,键为注册键,值为 Memory 实例。
notifications?:
object
通知 signal 分发的运行时配置。
object
dispatch?:
NotificationDispatchConfig
延迟通知和通知摘要的定时分发配置。默认启用分发。
object
enabled?:
boolean
设为
false 可停用自动定时通知分发。cron?:
string
内部通知 dispatcher Workflow 使用的 cron 计划。
batchSize?:
number
每次分发 run 最多处理的到期通知记录数。
versions?:
VersionOverrides
sub-agent 委派的全局版本覆盖。当 supervisor Agent 委派给 sub-agent 时,这些覆盖决定使用该 sub-agent 的哪个已存储版本,而不是代码中定义的默认版本。需要配置 Editor package。详情请参阅 Editor 版本控制。
VersionOverrides
agents?:
Record<string, VersionSelector>
Agent ID 到版本选择器的映射。每个选择器都可以按 ID 或发布状态指定特定版本。
VersionSelector
versionId?:
string
要使用的特定版本的 ID。
status?:
'draft' | 'published'
选择具有此发布状态的最新版本。
workers?:
MastraWorker[] | false
配置在此 Mastra 实例中运行哪些 Worker。省略时,Mastra 会根据 PubSub 和配置自动创建默认 Worker。传入
false 可禁用所有事件处理(适用于单独运行独立 Worker 的情况)。传入 MastraWorker[] 可添加自定义 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
显式启用或禁用 scheduler。
方法方法的直接链接
recoverAllDurableAgents()recoveralldurableagents的直接链接
重新驱动所有已注册 durable Agent 中的每个孤立 running durable-Agent run。当 recovery.durableAgents 为 'auto' 时,会在启动时自动调用。也可以直接调用以手动恢复,或从定时任务中调用。
需要持久化 Storage。使用内存 store 时,进程重启后没有可恢复的内容。
const result = await mastra.recoverAllDurableAgents()
// { agents: 2, recovered: 3, succeeded: 3, failed: 0 }
返回值:
agents:
number
扫描的 durable Agent 数量。
recovered:
number
重新驱动的 run 总数。
succeeded:
number
成功重新启动的 run 数量。
failed:
number
重新启动时抛出错误的 run 数量。