M
CodeMap
mastra/core
02 · modules

模块详解

packages/core/src/ 下有 56 个顶层目录。 其中 8 个承担了框架的核心抽象——DI 容器、Agent、工作流引擎、agentic 循环、中间件管线、模型层、存储、工具系统; 其余 48 个是支撑性子系统。卡片默认折叠,点击展开可看到关键源码路径、公开导出和内部依赖。

dependency map 点击节点滚动并展开卡片

Core Modules

8 · 按代码量排序
关键源码路径
agent/agent.tsagent/workflows/prepare-stream/agent/subagent.ts
关键源码文件
agent/agent.ts
Agent 主类(整个 core 最大的单文件)· 9,408L
agent/types.ts
Agent option/result 类型· 1,200L
agent/agent.types.ts
Execution options、delegation hooks、network options· 620L
agent/agent-legacy.ts
MastraLLMV1 旧版路径· 1,529L
agent/thread-stream-runtime.ts
subscribeToThread 用的 thread-scoped stream runtime· 2,023L
agent/trip-wire.ts
TripWire abort 机制(token/cost/step 限制)· 90L
agent/signals.ts
Agent signal 类型/创建· 590L
agent/durable/durable-agent.ts
DurableAgent 类(可持久化恢复的 agent)· 2,800L
agent/workflows/prepare-stream/index.ts
createPrepareStreamWorkflow 工厂· 196L
agent/workflows/prepare-stream/prepare-memory-step.ts
memory 加载 step· 226L
agent/workflows/prepare-stream/prepare-tools-step.ts
工具转换 step· 83L
agent/workflows/prepare-stream/map-results-step.ts
把 LLM 输出映射成 MastraModelOutput· 415L
agent/message-list/
子目录:MessageList、消息转换、prompt 构造、detection
agent/durable/workflows/
子目录:durable agent 的 workflow steps(goal、tool-call、llm-execution 等)
公开导出
class
Agent
核心类(generate/stream/streamUntilIdle/resume/network/approveNetworkToolCall/declineNetworkToolCall 等全套 API)
class
TripWire
安全断路器(token/cost/step 限制)
class
MessageList
消息管理器,含 AI SDK v4/v5 格式互转
class
TypeDetector
内容类型检测
class
DurableAgent
可持久化/恢复的 agent(从 @mastra/core/agent/durable 单独导入)
type
AgentConfig
Agent 构造参数类型
type
AgentExecutionOptions
执行选项类型
type
NetworkOptions
Agent network(多 agent 协作)配置
type
SubAgent
子 agent 类型
读源码提示

agent.ts 9408 行是整个 core 最大单文件,但实际执行逻辑大量委托出去:prepare-stream workflow(agent/workflows/prepare-stream/)在每次调用时构造,加载 memory、解析 tools、跑 input processors;真正的 LLM 循环交给 llm/model/model.loop.ts 里的 MastraLLMVNext → loop()。读 Agent 时重点看 agent.ts 里的 #execute() 私有方法和 generate()/stream() 如何构造 prepare-stream。另外注意:Agent 没有顶层 approve()/decline(),人审接口在 agent-controller(session approval)和 approveNetworkToolCall/declineNetworkToolCall(network 场景)。

模块内部结构
agent/
├── agent.ts              ← 9408L 主类(generate/stream/resume)
├── types.ts              ← AgentConfig、AgentResult 类型
├── trip-wire.ts          ← TripWire abort 机制
├── signals.ts            ← Agent signal 系统
├── durable/
│   ├── durable-agent.ts  ← 可持久化恢复的 Agent
│   └── workflows/        ← durable agent 内部 workflow steps
├── workflows/
│   └── prepare-stream/   ← 每次调用构造的 prepare workflow
│       ├── index.ts      ← createPrepareStreamWorkflow 工厂
│       ├── prepare-memory-step.ts
│       ├── prepare-tools-step.ts
│       └── map-results-step.ts
└── message-list/         ← MessageList、消息转换、prompt 构造
关键代码片段
关键源码路径
mastra/mastra.tsmastra/index.ts
关键源码文件
mastra/index.ts
Mastra 类 + Config 类型(不是纯 barrel,5870 行全在这里)· 5,870L
mastra/hooks.ts
createOnScorerHook helper· 177L
mastra/run-scope.ts
createRunScope、RunScope 类型· 90L
mastra/mastra-ctor-holder.ts
内部 holder,避免循环依赖· 31L
公开导出
class
Mastra
核心容器(getAgent/addAgent/getWorkflow/addWorkflow/getTool/getVector/getStorage/getLogger/startWorkers/shutdown 等)
iface
Config
Mastra 构造函数配置(泛型参数:TAgents/TWorkflows/TVectors/TTools/TMemory/...)
iface
MastraRecoveryConfig
durableAgents 恢复配置
读源码提示

Mastra 类在 index.ts 里是个 5870 行的大类,但绝大多数方法是注册/查找(getAgent、addAgent、listAgents、getWorkflow...)。执行期 primitives 通过 request-context 反向拿到 Mastra 实例(di/RequestContext),所以运行时依赖是反的。它主要是注册期的大管家 + 后台服务(worker、scheduler、server)的宿主。顶层 @mastra/core 只 re-export Mastra 和 Config,其他都走子路径(@mastra/core/agent 等)。

关键代码片段
关联设计决策:composite-storage
关键源码路径
workflows/workflow.tsworkflows/engine/execution-engine.ts
关键源码文件
workflows/workflow.ts
Workflow 主类 + Step 工厂(createStep)+ Run 类 + mapVariable· 4,400L
workflows/default.ts
DefaultExecutionEngine(pull-based step 执行)· 1,174L
workflows/types.ts
Workflow 类型(ExecutionEngine、OutputWriter、StepFlowEntry...)· 1,183L
workflows/handlers/control-flow.ts
branch/loop/foreach/parallel 控制流 handler· 1,378L
workflows/handlers/entry.ts
entry step handler· 791L
workflows/handlers/step.ts
普通 step handler· 649L
workflows/evented/workflow.ts
Evented Workflow(push-based,实时事件处理)· 2,369L
workflows/evented/workflow-event-processor/index.ts
主事件 processor 循环· 2,966L
workflows/create.ts
createWorkflow() 工厂(内部使用)· 115L
workflows/step.ts
Step 类型/构造器· 193L
公开导出
class
Workflow
工作流定义 & 运行入口(then/branch/parallel/foreach/loop/commit/execute/stream/watch)
fn
createStep
步骤工厂(5 个重载)
fn
createWorkflow
简洁工厂函数
class
DefaultExecutionEngine
默认 pull-based DAG 执行引擎
class
Run
单次 workflow run
fn
mapVariable
变量映射(step 间数据传递)
type
WorkflowRunState
运行状态类型
type
WorkflowResult
结果类型
读源码提示

Workflow 本身不内置 LLM 概念,但和 Agent/loop 的耦合极深:Agentic Loop 的每轮迭代就是一次 Workflow 执行。两套引擎并存:DefaultExecutionEngine(pull-based,传统 workflow 用)和 evented/(push-based,实时事件处理)。Step 可以是普通函数、LLM step、或另一个 Workflow,这是 agentic-loop > agentic-execution 嵌套的基础。读源码时 workflow.ts 4400 行是入口,但真正的执行流程在 handlers/ 和 evented/workflow-event-processor/ 里。

模块内部结构
workflows/
├── workflow.ts           ← 4400L 主类 + createStep + Run
├── default.ts            ← DefaultExecutionEngine(pull-based)
├── types.ts              ← ExecutionEngine、StepFlowEntry 类型
├── create.ts             ← createWorkflow() 工厂
├── step.ts               ← Step 类型/构造器
├── handlers/
│   ├── control-flow.ts   ← branch/loop/foreach/parallel
│   ├── entry.ts          ← entry step handler
│   └── step.ts           ← 普通 step handler
└── evented/
    ├── workflow.ts        ← Evented Workflow(push-based)
    └── workflow-event-processor/
        └── index.ts       ← 主事件 processor 循环
关键代码片段
关联设计决策:workflow-as-loop
关键源码路径
loop/index.tsloop/agentic-loop-workflow.ts
关键源码文件
loop/loop.ts
loop() 顶层入口函数,构造 MastraModelOutput 流· 177L
loop/workflows/stream.ts
workflowLoopStream() — 驱动 agentic loop 的 ReadableStream· 378L
loop/workflows/agentic-loop/index.ts
createAgenticLoopWorkflow() 外层循环(迭代直到 done)· 317L
loop/workflows/agentic-execution/index.ts
createAgenticExecutionWorkflow() 单轮迭代· 139L
loop/workflows/agentic-execution/llm-execution-step.ts
LLM 调用 step(最大执行 step 文件)· 2,192L
loop/workflows/agentic-execution/tool-call-step.ts
工具调用 step(含 foreach 并发)· 1,303L
loop/workflows/agentic-execution/llm-mapping-step.ts
LLM 输出映射 step· 576L
loop/workflows/agentic-execution/goal-step.ts
Goal 检查 step· 511L
loop/network/index.ts
networkLoop() — 多 agent 网络执行· 2,716L
loop/network/validation.ts
Network 校验/配置· 824L
loop/shared/stream-until-idle-helpers.ts
streamUntilIdle helpers· 517L
公开导出
fn
loop
顶层入口函数,接受 LoopOptions,返回 MastraModelOutput 流
fn
networkLoop
多 agent 网络执行(被 Agent.network() 调用)
fn
createAgenticLoopWorkflow
外层循环 workflow(迭代终止条件控制)
fn
createAgenticExecutionWorkflow
单次迭代 workflow(LLM + tool calls + mapping)
type
ReasoningLevel
Reasoning 等级类型
读源码提示

理解 Mastra 执行模型的关键模块。注意:createPrepareStreamWorkflow 不在 loop/ 下,而在 agent/workflows/prepare-stream/。loop.ts 本身只有 177 行,真正逻辑在 workflows/ 子目录。agentic-execution 单轮的 step 顺序是:llmExecutionStep → map-tool-calls → foreach(toolCallStep) → llmMappingStep → backgroundTaskCheckStep → signalDrainStep → isTaskCompleteStep → goalStep。loop() 只依赖 stream/processors/observability 等少数模块,不直接依赖 agent/——反向依赖由 llm/model.loop.ts(MastraLLMVNext)桥接。

模块内部结构
loop/
├── loop.ts                     ← 177L 顶层入口函数
├── workflows/
│   ├── stream.ts               ← workflowLoopStream() 驱动流
│   ├── agentic-loop/
│   │   └── index.ts            ← 外层 dowhile 循环
│   └── agentic-execution/
│       ├── index.ts            ← 单轮 DAG 定义
│       ├── llm-execution-step.ts  ← 2192L LLM 调用
│       ├── tool-call-step.ts   ← 1303L 工具执行
│       ├── llm-mapping-step.ts ← 输出映射
│       └── goal-step.ts        ← 目标评估
├── network/
│   ├── index.ts                ← networkLoop() 多 agent 网络
│   └── validation.ts           ← 网络配置校验
└── shared/
    └── stream-until-idle-helpers.ts
关键代码片段
关键源码路径
processors/index.tsprocessors/runner.ts
关键源码文件
processors/index.ts
定义 Processor 接口、BaseProcessor、所有 context/args 类型,re-export 内置 processors· 890L
processors/runner.ts
ProcessorRunner — 编排多个 processor 调用顺序(核心执行器)· 2,293L
processors/step-schema.ts
Processor step 的 Zod schemas· 640L
processors/processors/structured-output.ts
StructuredOutputProcessor· 394L
processors/processors/response-cache.ts
ResponseCache + buildResponseCacheKey· 505L
processors/processors/tool-search.ts
ToolSearchProcessor· 654L
processors/processors/pii-detector.ts
PIIDetector· 1,023L
processors/processors/moderation.ts
ModerationProcessor· 466L
processors/processors/prompt-injection-detector.ts
PromptInjectionDetector· 409L
processors/memory/message-history.ts
MessageHistory processor· 323L
processors/memory/working-memory.ts
WorkingMemory processor· 282L
processors/memory/semantic-recall.ts
SemanticRecall processor· 691L
公开导出
iface
Processor
处理器接口(10+ lifecycle hooks)
class
BaseProcessor
抽象基类
class
ProcessorRunner
管线执行器
class
StructuredOutputProcessor
结构化输出(注入 response_format)
class
ResponseCache
LLM 响应缓存
class
MessageHistory
对话历史注入
class
WorkingMemory
工作记忆
class
SemanticRecall
语义召回
class
SkillsProcessor
Skill 提示注入
class
ToolSearchProcessor
工具检索(动态选择工具)
class
CostGuardProcessor
成本保护
class
TokenLimiterProcessor
Token 限制
class
PIIDetector
PII 检测
class
ModerationProcessor
内容审核
class
PromptInjectionDetector
Prompt 注入检测
type
InputProcessorOrWorkflow
Processor 实例或 Workflow 都可作为 input processor
type
OutputProcessorOrWorkflow
同上,output 侧
读源码提示

Processor 接口定义在 index.ts 本身(不是单独的 types 文件),890 行。10+ 个 hooks 分阶段:processInput/processLLMRequest(请求侧)、processLLMResponse/processOutput/processOutputStream(响应侧)、processAPIError(错误处理)、computeStateSignal(状态信号)、processInputStep/processOutputStep(step 粒度)、processDataParts(流数据处理)。Processor 本身可以是类实例或 Workflow(复用 DAG 能力)。读源码时先从内置 processor 反向理解接口比直接看 interface 更直观——24 个内置 processor 都在 processors/processors/ 和 processors/memory/ 下。

关键代码片段
关联设计决策:processor-pipeline
关键源码路径
llm/llm.tsllm/model-router.ts
关键源码文件
llm/index.ts
barrel export· 187L
llm/model/router.ts
ModelRouterLanguageModel — provider/model-id 字符串解析· 608L
llm/model/model.loop.ts
MastraLLMVNext — 桥接 Agent → loop(),不导出· 382L
llm/model/model.ts
MastraLLMV1(旧版 AI SDK v4 路径)· 1,055L
llm/model/provider-registry.ts
PROVIDER_REGISTRY(Proxy)、GatewayRegistry 类、parseModelString· 930L
llm/model/provider-registry.json
静态 provider 数据(JSON)
llm/model/provider-types.generated.d.ts
生成的 provider 类型声明· 5,137L
llm/model/resolve-model.ts
resolveModelConfig()· 139L
llm/model/embedding-router.ts
ModelRouterEmbeddingModel· 289L
llm/model/gateways/azure.ts
AzureOpenAIGateway· 626L
llm/model/gateways/models-dev.ts
ModelsDevGateway· 422L
llm/model/aisdk/v7/model.ts
AI SDK v7 model wrapper· 251L
公开导出
class
ModelRouterLanguageModel
"provider/model-id" 字符串解析为 LanguageModel
class
GatewayRegistry
Gateway 认证 & provider 注册
const
PROVIDER_REGISTRY
provider 注册表(Proxy 包装)
fn
parseModelString
解析 provider/model-id 字符串
fn
resolveModelConfig
动态模型配置解析
class
MastraGateway
Mastra 托管 gateway
class
NetlifyGateway
Netlify gateway
class
AzureOpenAIGateway
Azure OpenAI gateway
class
ModelRouterEmbeddingModel
Embedding router
class
MastraLLMVNext
Agent → loop() 的胶水(不导出,agent 直接 import)
type
LanguageModel
MastraLanguageModel 别名
读源码提示

关键理解点:MastraLLMVNext(model.loop.ts)虽然在 llm/ 下但不从 llm/index.ts 导出,agent/agent.ts 直接 import 它。这个类包装 AI SDK LanguageModel,但把 doStream 路由进 Mastra 自己的 loop(),而不是直接调 AI SDK——这是 agent.generate() 最终跑三层 workflow 的入口。router.ts 的 ModelRouterLanguageModel 做字符串解析和 provider 动态 import(冷启动成本来源)。gateway 认证、API key 轮换、fallback 链都在 router/gateway 层。注意 llm/ 还同时支持 AI SDK v4/v5/v6/v7(aisdk/ 子目录各版本 wrapper)。

关键代码片段
关键源码路径
storage/index.tsstorage/types.ts
关键源码文件
storage/index.ts
barrel export· 16L
storage/base.ts
MastraCompositeStore 类、MastraStorage 别名、normalizePerPage· 614L
storage/types.ts
22+ 子域类型,整个 core 最大类型文件· 3,086L
storage/constants.ts
表名、默认值、MIME types 常量· 792L
storage/factory-storage.ts
InMemoryStore 工厂· 403L
storage/filesystem-db.ts
Filesystem-backed DB· 293L
storage/filesystem-versioned.ts
版本化 filesystem storage· 774L
storage/domains/
子目录:22+ 个子域(agents/workflows/schedules/memory/threads/blobs/...)各自 base/inmemory/filesystem
公开导出
class
MastraCompositeStore
复合存储基类,含 22+ 子域访问器和 init()/close()
type
MastraStorage
MastraCompositeStore 别名
type
StorageDomains
所有域接口映射
const
InMemoryStore
默认内存实现(工厂)
iface
WorkflowsStorage
workflow 状态存储域
iface
MemoryStorage
对话 memory 存储域
iface
AgentsStorage
agent 运行状态存储域
iface
ScoresStorage
eval score 存储域
iface
BlobsStorage
blob 存储域
iface
ThreadStateStorage
thread state 存储域
内部依赖模块
读源码提示

Storage 是被依赖最多的底层模块,自己只依赖 base.ts(MastraBase),几乎零跨模块依赖。设计上每个子域(storage/domains/<name>/)独立提供 base/inmemory/filesystem 三套实现——你可以 workflow 状态用 Postgres(外部包)、blob 用 S3、memory 用 Redis、其他用 InMemory,混搭运行。types.ts 3086 行是整个 core 最大的类型文件。读源码时 base.ts 只有 614 行(主要是域访问器和 init/close),真正的域接口定义全在 types.ts 和 domains/ 下。

关键代码片段
关联设计决策:composite-storage
关键源码路径
tools/tool.tstools/index.ts
关键源码文件
tools/index.ts
barrel export· 54L
tools/tool.ts
Tool 类 + createTool() 工厂· 605L
tools/types.ts
ToolAction、ToolExecutionContext、ToolHook 等类型· 733L
tools/validation.ts
工具输入校验、ValidationError· 702L
tools/payload-transform.ts
工具 payload transform 策略· 234L
tools/tool-builder/builder.ts
CoreToolBuilder — 把 Vercel/Provider tools 转为 Mastra tools· 1,068L
tools/builtin/ask-user.ts
askUserTool(HITL 提问)· 139L
tools/builtin/submit-plan.ts
submitPlanTool· 138L
tools/builtin/task-tools.ts
taskWriteTool/taskUpdateTool/taskCompleteTool/taskCheckTool· 665L
tools/code-mode/code-mode.ts
Code-mode 工具· 147L
公开导出
class
Tool
工具类
fn
createTool
工厂函数
const
askUserTool
内置:向用户提问(HITL)
const
submitPlanTool
内置:提交计划等审批
const
taskWriteTool
内置:写任务输出
const
taskCompleteTool
内置:标记任务完成
class
CoreToolBuilder
Vercel/Provider tool 转换
class
ValidationError
工具输入校验错误
type
ToolAction
工具执行函数类型
type
CoreTool
工具核心类型
读源码提示

Tools 代码量不大(5712 行),但它和 loop/agent 的交互点很关键:工具可以声明 requireApproval(中断 loop 等人审)、suspend(SuspendOptions 类型来自 workflows/,把 agent 睡眠等外部事件唤醒)、background(由 tool-loop-agent 后台跑)。这些扩展点不是 if/else 加在 Tool 类里,而是通过 agentic-execution workflow 的 tool-call-step 分支实现——durable execution 天然支持中途停下来。tool-builder/builder.ts 1068 行负责把 Vercel AI SDK 工具和其他 provider 工具转成 Mastra Tool,是生态兼容层。

关键代码片段
关联设计决策:workflow-as-loop

Secondary Modules

48 · 参考清单
Module Role LoC
workspace/ Workspace/knowledge 抽象,agent 间共享的 state sandbox(19,640 行,最大的 secondary 模块) 19,640
agent-controller/ AgentController,session 管理、approval/decline/suspend/resume 交互式运行 8,484
stream/ 流式输出抽象:MastraModelOutput、ChunkType、AI SDK adapters、caching-transform 7,687
channels/ AgentChannels — Slack/Discord/WhatsApp 等多通道输出集成 5,349
evals/ 评测框架:MastraScorer 基类、hooks、scoreTraces、collect-tool-mocks 5,112
_types/ 内部共享类型(无 index.ts,直接消费) 4,700
browser/ MastraBrowser 抽象、browser-context processor(Playwright 集成) 4,402
observability/ OpenTelemetry tracing/metrics/logging:Span、SpanType、NoOpObservability 3,721
datasets/ DatasetsManager,评测数据集管理 3,692
memory/ MastraMemory 基类、MemoryConfig、thread/resource 管理、working-memory utils 3,143
events/ PubSub 事件总线:EventEmitterPubSub、PubSub 接口、事件类型 2,748
background-tasks/ BackgroundTaskManager,async/dispatched 后台工作 2,311
a2a/ Agent-to-Agent 协议(Google A2A spec)客户端 1,938
schedules/ Schedules 类,agent/workflow 调度管理 1,732
notifications/ 通知派发:delivery policy、notification workflow 1,144
tool-provider/ ToolProvider 接口,外部工具源动态注册(MCP 等) 1,047
vector/ MastraVector 基类,向量存储抽象 952
agent-builder/ Builder 模式程序化构建 Agent 实例 875
signals/ SignalProvider 基类、WebhookSignalProvider、signal 类型 795
worker/ MastraWorker 接口、OrchestrationWorker、SchedulerWorker、BackgroundTaskWorker 781
server/ MastraServerBase、ApiRoute、Middleware、StudioConfig 741
mcp/ Model Context Protocol:MCPServerBase、MCP 客户端集成 669
skills/ resolveAgentSkills、mergeWorkspaceSkills、SkillInput 类型 610
editor/ IMastraEditor 接口,代码编辑器抽象 531
tool-loop-agent/ ToolLoopAgentLike compat adapter(human-out-of-the-loop) 433
telemetry/ Feature telemetry(trackFeatureUsage) 417
processor-provider/ ProcessorProvider 接口,动态注册 processor 417
coding-agent/ Coding-agent prompt 构建(SWE-agent 风格) 343
logger/ IMastraLogger、ConsoleLogger、DualLogger、NoopLogger 289
license/ LicenseClient 商业 license 校验 285
utils/ 工具函数(makeCoreTool、deepMerge、createMastraProxy)——注意 src/utils.ts 647 行在 src 根 253
test-utils/ 内部测试辅助工具 216
cache/ InMemoryServerCache、MastraServerCache 接口 153
hooks/ AvailableHooks 枚举(ON_SCORER_RUN 等)、registerHook 151
harness/ 测试 harness(re-exports AgentController) 147
integration/ Integration 抽象基类 140
bundler/ IBundler 接口(部署打包用) 85
types/ DynamicArgument<T, TRequestContext> 等全局共享类型 84
relevance/ Relevance scorer for agents 60
auth/ Re-exports @internal/auth(Fine-Grained Authorization、ActorSignal) 57
features/ coreFeatures set — 特性开关注册表 30
tts/ MastraTTS、TTSConfig 接口 24
deployer/ IDeployer 接口(extends IBundler) 23
action/ MastraPrimitives 类型——传给各组件的 primitives 中央 bag 20
schema/ Standard schema 类型(StandardSchemaWithJSON、toStandardSchema) 16
error/ MastraError、ErrorDomain、ErrorCategory 枚举 12
request-context/ AsyncLocalStorage 请求上下文(拿 Mastra 实例)+ key 常量 9
di/ RequestContext 依赖注入 token 8
voice/ Re-exports @internal/voice(AISDKSpeech、MastraVoice) 8
run/ Run types(无 index.ts) 5

Secondary 模块只做清单级展示,深度阅读请沿着 Core Module 卡片里的「内部依赖模块」链接跳转。