Agent 框架 02:Mastra——面向 TypeScript 生态的现代化 Agent 框架与工作流设计

Agent 框架 02:Mastra——面向 TypeScript 生态的现代化 Agent 框架与工作流设计
Asaakii在很长一段时间里,构建 AI Agent 几乎是 Python 生态的专属领地。然而在真实的业务开发中,大量互联网团队的业务主干、前端界面与微服务中台都是基于 Node.js 与 TypeScript 构建的。如果为了引入几个智能体功能而专门架设一套 Python 微服务,团队往往要背负跨语言维护、双重依赖体系以及 RPC 序列化开销等工程包袱。
Mastra 应运而生。它不是将 Python 库进行简单翻译的“二道贩子”,而是针对 TypeScript 开发者的习惯从零设计的现代化 Agent 框架。它将强类型验证库 Zod、基于有向图的 Workflow、企业级 Memory 与原生流式传输深度整合,为全栈工程师提供了一套丝滑的端到端开发体验。
核心设计哲学:类型安全与全栈一体化
Mastra 最显著的标签是**“编译期类型安全”**。它放弃了动态拼接字典的做法,把所有输入、输出与上下文全部纳管在 TypeScript 类型系统下:
flowchart TD
Init["顶层单例 new Mastra({ agents, workflows })"] --> RegAgent["Agent 智能体定义"]
Init --> RegWF["Workflow 有向图工作流"]
subgraph Tooling ["Zod 强类型工具契约"]
ZodIn["inputSchema: z.object(...)"] --> Exec["execute: async ({ context }) => ..."]
Exec --> ZodOut["outputSchema: z.object(...)"]
end
RegAgent --> Tooling
subgraph Runtime ["多端集成与运行时"]
Next["Next.js App Router (toDataStreamResponse)"]
Memory["跨会话持久化 Memory (threadId / resourceId)"]
Vector["向量检索 RAG (@mastra/vector-*)"]
end
Init --> Runtime
通过与 Vercel AI SDK 底层驱动(@ai-sdk/openai 等)的无缝协作,开发者可以在同一个 Monorepo 代码库中完成从前端 UI 交互到后端智能体调度的全流程。
核心概念原语
| 构件 | 运行时角色 | 说明 |
|---|---|---|
Agent |
智能体实体 | 挂载模型配置、提示词指令、专属工具集与记忆存储的独立执行单元 |
createTool |
工具构造器 | 基于 Zod Schema 声明严格出入参校验的函数封装,运行时自动推导参数类型 |
Workflow / Step |
有向图工作流 | 支持串行、条件分支与并行执行的有状态执行图,步骤间输出具备静态类型传递 |
Mastra |
容器中枢 | 项目根实例,统筹注册、发现与管理所有智能体与工作流 |
安装与工程初始化
在现有的 Node.js / TypeScript 项目中添加核心依赖:
1 | pnpm add @mastra/core @ai-sdk/openai zod |
最小运行示例
1 | import { Mastra } from "@mastra/core"; |
基于 Zod 的强类型工具声明
在 Mastra 中,定义工具不仅需要声明执行逻辑,还必须提供输入与输出的双向 Zod Schema。这不仅为大模型提供了准确的 JSON Schema 参数定义,还在本地代码中杜绝了 undefined 字段引发的运行时崩溃:
1 | import { createTool } from "@mastra/core/tools"; |
将工具注入 Agent 极其直接:
1 | const opsAgent = new Agent({ |
有向图工作流(Workflow):确定性流程编排
并非所有业务都适合让大模型完全自主“自由发挥”。Mastra 提供了图工作流(Workflow),允许将确定性的前置处理、大模型审查与后置落库组装为有序管道:
1 | import { Workflow, Step } from "@mastra/core/workflows"; |
跨会话记忆与 Next.js App Router 全栈集成
在全栈 Web 应用中,智能体通常需要通过 HTTP Server-Sent Events(SSE)向前端页面流式推送文字。Mastra 可以直接内嵌于 Next.js 的路由处理器中:
1 | // app/api/chat/route.ts |
前端结合 @ai-sdk/react 的 useChat 钩子,几行代码就能完成打字机流式界面的渲染。
综合评估与选型指引
优势
- TypeScript 生态头等公民:静态类型覆盖全面,IDE 自动补全极具生产力,彻底告别拼写错误;
- 前后端同一语言栈:Node.js / Next.js 全栈团队无需引入跨语言微服务架构;
- 结构紧凑一体化:将 Agent 核心、Zod 工具系统、图工作流与向量检索(RAG)打包在同一套体系内,接口一致性高。
局限
- Python 生态不可用:纯 TypeScript 实现,无法直接调用 Python 社区前沿的科学计算或本地训练权重;
- 社区沉淀仍处于快速演进期:框架较新,部分边缘 API 在小版本迭代中可能会有演进改动。
适用场景
- 基于 Next.js / Nuxt / Node.js 构建的全栈 SaaS 应用;
- 前端工程师或全栈团队希望快速落地具备工具调用的生产级智能体;
- 对编译期参数校验与代码规范有严格要求的企业级应用。











