Mastra 是一个以 TypeScript 为第一语言的 AI Agent 应用开发框架,用来构建具备工具调用、多轮记忆、RAG 检索与确定性工作流编排的智能体服务。它要解决的问题很具体:在 JS/TS 技术栈里做 Agent 应用,以往需要自行拼装模型 SDK、参数校验库、状态存储、流程编排与日志追踪,少则五六个库,多则十几个,组合出来的系统在类型安全与可观测性上都难做扎实。Mastra 把 Agent、工具、工作流、记忆、RAG 与评测收敛进一个框架,代码全程 TypeScript,工具入参与出参用 Zod schema 声明,错误在编译期暴露而不是运行时才出现。 Mastra 复用 Vercel AI SDK 的模型接口,OpenAI、Anthropic、Google 与开源模型均可直接接入。项目于 2025 年初开源,采用 Apache 2.0 协议;0.2.0 重构后 API 趋于稳定,并提供了从本地调试(mastra dev)到生产部署(Vercel、Netlify、Cloudflare、Docker 与 Mastra Cloud)的完整链路。 下文按五步组织:为什么需要它、安装与环境配置、10 分钟跑通第一个带工具的 Agent、核心能力拆解、生产部署与监控。
掌握 Mastra 意味着拿到一套 TypeScript 原生的 Agent 生产化能力栈:类型安全的工具调用、确定性工作流、记忆与可观测性开箱即用,这是 AI 应用工程师在 JS/TS 生态里最直接的上手路径。
目录
速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。
为什么需要 Mastra:JS/TS 生态缺少原生 Agent 生产框架
在 JS/TS 生态中构建生产级 Agent,传统方式是自研拼装。Vercel AI SDK 只解决模型接入与流式传输,不提供状态管理;对话记忆要另接 Redis 或数据库;工具调用要自己写参数校验与重试;多步骤流程要自行设计状态机;排查问题要自建 trace 链路。每一步都有可行方案,但组合起来的代码量、调试成本与团队心智负担都很高。Python 生态有 LangChain 等成熟框架,但 TS 团队整体迁移到 Python 栈会带来额外的运维与人才成本。
Mastra 把这些能力全部收进一个框架。Agent 类提供统一入口:instructions 定义角色设定,model 切换模型,tools 挂载类型安全的工具,memory 接管历史上下文;Workflow 提供确定性的多步编排;所有工具输入输出由 Zod schema 声明,编译期即可发现参数错误。生产路径同样完整:本地 mastra dev 面板可交互调试,生产可部署到 Vercel、Cloudflare、Docker,或直接使用 Mastra Cloud 托管,并内置 OpenTelemetry 观测能力。
与同类工具的气质差异在于:LangChain.js 是从 Python 移植的庞大抽象体系,概念多、类型约束弱;Mastra 的 API 是原生 TS 风格,更接近 Vercel AI SDK 的简洁,但比 AI SDK 多出 Agent 生命周期、记忆、工作流与可观测性这一整层——AI SDK 更适合作为 Mastra 的模型层,而非替代品。
安装与环境配置:3 步就绪
步骤一·安装:使用官方脚手架创建项目。交互式界面可选择示例模板与集成项,自动生成 agents/、workflows/ 目录与 mastra.config.ts 配置文件;也可在既有项目中手动安装核心包。
步骤二·配置:在项目根目录创建 .env 文件,设置模型供应商密钥。脚手架会同时生成 .env.example 说明需要哪些变量。
步骤三·验证:启动本地调试服务器,在浏览器打开调试面板,确认项目注册的 agent 出现在列表中且可以对话。
环境要求:Node.js 18 及以上;脚手架会自动安装 @mastra/core、AI SDK provider(如 @ai-sdk/openai)与 zod。
# 1) 脚手架创建项目(交互式选择集成与示例)npm create mastra@latestcd my-mastra-appnpm install # 2) 配置模型密钥cp .env.example .env# 编辑 .env,填入 OPENAI_API_KEY=sk-xxx(或其他 provider 对应变量) # 3) 启动本地调试(默认 http://localhost:4111)npm run dev# 等价命令:npx mastra dev
快速上手:10 分钟跑通第一个带工具的 Agent
思路:先创建一个 Agent(模型 + 指令),再用 createTool 定义一个带 Zod schema 的工具,把工具挂载到 Agent 上,最后通过调试面板或编程式调用验证 Agent 能自主调用工具并给出答案。
步骤一:在 agents/ 目录新建文件定义 Agent 与工具。工具必须声明输入与输出 schema,execute 函数接收类型推导后的 context,返回值会送回模型作为工具调用结果。
步骤二:在 mastra.config.ts 中注册 agent,使调试面板与部署流程能发现它。
步骤三:npm run dev 启动后在 playground 选择该 agent 并发送「北京天气怎么样?」,观察工具调用轨迹与回答;或在任意 TS 入口调用 generate() 编程式使用。
跑通后,回答会包含工具返回的「24 度、多云」信息。进阶方向:给 Agent 配置 memory 实现多轮记忆,或再挂一个工具让模型在多个工具间做选择。
// my-mastra-app/src/agent.tsimport { Agent, createTool } from '@mastra/core';import { openai } from '@ai-sdk/openai';import { z } from 'zod'; const weatherTool = createTool({ id: 'get-weather', inputSchema: z.object({ city: z.string().describe('城市名') }), outputSchema: z.object({ degrees: z.number(), description: z.string() }), execute: async ({ context }) => { // 生产环境在此调用真实天气 API return { degrees: 24, description: '多云' }; },}); export const assistant = new Agent({ name: 'assistant', instructions: '你是天气助手,必须使用天气工具回答城市天气。', model: openai('gpt-4o'), tools: { getWeather: weatherTool },}); // 在 mastra.config.ts 中注册:// import { defineConfig } from '@mastra/core';// import { assistant } from './src/agent';// export default defineConfig({ agents: { assistant } }); // 编程式调用:// const result = await assistant.generate('北京天气怎么样?');// console.log(result.text);
核心能力详解:5 大支柱
支柱一·Agent:统一的智能体容器。instructions + model + tools + memory 四要素组合,generate() 一次调用完成「接收→思考→工具调用→应答」全流程。多个 Agent 可在 Mastra 实例中注册并通过 API 路由暴露,彼此隔离、独立部署。
支柱二·Tools:类型安全的工具系统。createTool 强制声明 inputSchema 与 outputSchema(Zod),execute 收到的 context 自带类型推导;模型产出的工具参数在进入 execute 前经过运行时校验,失败会自动反馈模型重试。工具挂载后自动适配各家模型的 function calling 协议,切换模型供应商无需改工具代码。
支柱三·Workflow:确定性编排。以 step 为最小单位的图式工作流,支持顺序、并行、条件分支、重试与超时。与让模型自由发挥的 Agent 不同,Workflow 适合业务路径固定的场景(先检索、再写作、再审核),关键步骤可控、可观测、可重放。
支柱四·Memory 与 RAG:记忆组件提供线程(thread)级别的会话隔离与多轮上下文管理,storage 可接 PostgreSQL、LibSQL 或内存实现;RAG 工具链提供文档加载、分块、向量化与检索,向量库支持 PG、Qdrant、Chroma 等适配器,适合搭建「私有知识库 + 检索增强应答」。
支柱五·可观测性与评测:内置 OpenTelemetry 追踪,mastra dev 面板展示每次调用的工具轨迹、Token 用量与耗时;@mastra/evals 提供事实一致性、有害性等自动评测指标,可接入 CI 防止回归。
生产部署与监控:从上线到运维
部署方式一·Mastra Cloud:官方托管平台,连接 GitHub 仓库后自动构建部署 Agent/Workflow 服务,自带内置 playground、追踪、用量统计与密钥管理,适合不想维护基础设施的团队;提供免费额度用于 PoC,升级按用量计费。
部署方式二·自托管与边缘部署:@mastra/deployer 系列支持 Vercel、Netlify、Cloudflare Workers 与 Docker。以 Vercel 为例,在 mastra.config.ts 中配置 VercelDeployer 并设置 token 与项目名,执行构建与部署命令即可上线;Docker 场景下框架输出标准 Node.js 服务镜像,适合已有 Kubernetes 或自有服务器的团队。
可观测性:无论哪种部署,建议开启 OpenTelemetry 导出,将追踪接入 Sentry、Datadog 或 Grafana 等 APM 体系;生产环境要为模型调用设置超时与重试,为每个工具调用记录输入输出日志,作为审计与调优依据;Evals 评测纳入 CI,在每次改动后自动检查回答质量。
<p class="para-label">避坑清单:</p>
<ul class="dash-list"><li>0.2.0 是破坏性重构:网上大量 0.1.x 教程中的 Agent/Tool 写法已失效,先确认官方文档版本号再照抄代码。</li><li>mastra dev 只是本地调试面板:生产部署必须走构建与 deployer 流程,不要把 dev 服务直接暴露公网。</li><li>Memory 默认存进程内存:不配置 storage 时重启即丢历史,生产务必接 PostgreSQL 或 LibSQL 持久化。</li><li>工具参数校验依赖 Zod:schema 缺失或版本与 @mastra/core 不匹配会让工具调用在运行时静默失败,升级框架时同步升级 zod。</li></ul>
| 维度 | Mastra | LangChain.js | Vercel AI SDK | LlamaIndex.TS |
|---|---|---|---|---|
| 定位 | TS 原生 Agent 全栈框架(编排+记忆+RAG+部署) | 多语言 LLM 框架的 JS 移植,集成广 | 模型接入 + 流式 UI 的工具链 | 数据/RAG 为中心的 TS 框架 |
| 编排范式 | Agent 类 + 确定性 Workflow(步骤图) | LCEL 链式 + AgentExecutor,抽象多 | 无编排层,函数与工具即插即用 | 索引 + 查询引擎 + Agent Pipeline |
| 类型约束 | 强:Zod schema 贯穿工具/参数/响应 | 弱:类型松散,多数组件无 schema | 强:输入输出类型推导完整 | 中:围绕数据对象有类型,抽象偏 Python |
| 学习曲线 | 中:概念少,Agent 心智模型清晰 | 高:抽象层级多,概念繁复 | 低:贴近原生函数式开发 | 中:RAG 概念密集,需理解向量索引 |
| 生态集成 | 模型走 AI SDK(全主流)+ 向量库/存储适配器 | 数百集成:模型、向量库、工具链 | 模型 provider 全覆盖 + React/Vue 流式组件 | 数据源连接器丰富,RAG 一体化 |
| 生产部署 | 自带 Deployer(Vercel/Netlify/CF/Docker)+ Cloud | 无内置部署,需自行容器化 | 无框架层,依赖 Vercel 平台能力 | 需自行搭配后端与部署 |
| License | Apache 2.0 | MIT | Apache 2.0 | MIT |
| 适合谁 | TS 全栈团队,要快速生产化 Agent | 需要海量第三方集成的高级玩家 | 在现有 Web 应用中加 AI 能力 | 知识库/检索增强问答为主的项目 |
选型建议:Mastra 适合 TypeScript 技术栈、想用一套框架覆盖从 Agent 开发到生产部署的团队,开箱即用的记忆、工作流与观测能明显缩短交付周期;LangChain.js 生态最广但抽象重,适合需要特殊集成的场景;Vercel AI SDK 适合只要模型接入与流式 UI、自行管理状态的前端团队;LlamaIndex.TS 在文档检索类应用中更顺手。
版本迭代
Mastra 于 2025 年初公开首个版本,此后保持每月级迭代节奏。0.1.x 完成 Agent、工具、工作流基础能力的验证;0.2.0 是一次面向生产化的破坏性重构,重写 Agent 与工具 API,同时推出 Mastra Cloud 与部署器生态,确立了当前 API 风格(截至训练数据,可能已有更新版本)。
| 版本 | 时间 | 变化 | 提升 |
|---|---|---|---|
| v0.1.x | 2025-02 | 首个公开版本 | Agent/工具/Workflow 基础 API 定型,mastra dev 本地调试面板 |
| v0.2.0 | 2025-06 | API 全面重构与生产化 | Agent 构造简化、createTool 函数式工具定义、Workflow 增强、引入部署器与 Mastra Cloud |
| v0.2.x | 2025-07 起 | 补丁稳定化与生态扩展 | 各模块 bug 修复、RAG/记忆组件完善、部署器支持面持续扩大 |
Mastra 是框架而非模型,没有 MMLU 类公开评测分数,版本差异主要体现在开发者体验与生产链路上。0.1.x 到 0.2.0 的迁移成本集中在工具与 Agent 的构造写法,官方提供迁移指南;截至训练数据,0.2.x 是稳定的落地基线,新项目应直接基于 0.2.x 起步。
AI 应用场景
智能客服与内部支持 Agent
阶段:Agent 编排 / 工具调用
解决的问题:传统客服基于关键词与规则库,无法处理开放问答与跨系统查询。Mastra 的 Agent 通过 Tools 连接工单系统、CRM 与知识库 API,问答时自动判断调用哪个工具,配合 RAG 检索内部文档;类型安全的工具 schema 保证传给内部 API 的参数在编译期和运行时都被校验,不会越界。
具体案例:某 SaaS 团队以官方客服示例为模板构建工单 Agent,接入 Jira 与内部 FAQ 库:Agent 先做 RAG 检索(百毫秒级返回 top-k 文档),未命中再调工单创建工具并给出处理建议;常见问题响应从人工平均 2 小时降为实时,工具参数错误率因 schema 校验趋近于零,脚手架加 playground 让原型在 1 天内跑通。
内容生产工作流(研究→写作→审核)
阶段:Workflow 编排 / 确定性流程
解决的问题:直接用 LLM 写内容时流程散乱、质量不稳定,审核靠人工复制粘贴。Mastra Workflow 把「主题研究→大纲→初稿→审核」固化为步骤图,各步骤可指定不同模型与工具(搜索工具、风格检查工具),失败自动重试,审核不通过走分支重写,关键路径完全可控。
具体案例:市场团队每周生产 20 篇产品文案,接入后从「人工逐条提示词操作」变为一条 Pipeline 自动执行,单篇产出时间从约 40 分钟降至 10 分钟以内,重写分支让终稿一次通过率稳定在 90% 左右;每次运行的步骤耗时与 Token 消耗在调试面板可追溯。
数据问答与内部知识助手
阶段:RAG 管道构建
解决的问题:业务数据分散在表格与文档中,非技术人员无法自助查询。Mastra RAG 把各类数据源分块向量化,Agent 用检索与数据库工具回答「上季度退货率」这类问题,工具层对查询参数做 schema 校验,防止危险查询。
具体案例:电商运营团队将订单数据导入 PG 向量库并向业务同学开放问答入口,问数任务从数据组排期(2-3 天)变为即时回答;SQL 类工具只暴露白名单操作,RAG 回答附来源引用便于核对。
常见误区
误区LangChain.js 是 JS 生态的老牌框架,Mastra 无非是用 TS 重写一遍,功能都差不多,选哪个没区别。
正解Mastra 是独立设计而非移植。它原生以 TypeScript 类型系统为骨架,工具输入输出强制 Zod schema,编译期拦截错误;同时把记忆、RAG、工作流、可观测性与部署链路打包进同一框架。LangChain.js 的优势在集成生态的广度,但类型一致性与原生 TS 体验不如 Mastra,两者设计哲学不同。
为何常见:LangChain 名声最响,很多人先入为主把一切 JS 编排框架都归为「它的 TS 版」,忽略了 Mastra 从零设计的类型安全与生产化路径。
误区网上三个月前的 Mastra 教程很多,API 差别应该不大,直接抄就能跑通。
正解Mastra 0.2.0 是一次破坏性重构,Agent 构造方式、工具定义(createTool)与 Workflow 注册均有变化,0.1.x 代码直接搬会报错。学习时务必对照官方文档标注的版本号,新项目一律基于当前文档与 0.2.x 起步。
为何常见:框架迭代快、教程滞后是常态;Mastra 对外宣传的 API 形态在重构后变化很大,不标注版本号的文章极易误导读者。
误区开发时用 npx mastra dev 起服务,线上也这么跑,再加个端口暴露出去就行。
正解mastra dev 是面向本地调试的 playground,默认只监听 localhost:4111,仅适合开发期交互测试。生产环境需要先构建产物,再用 @mastra/deployer 部署到 Vercel、Cloudflare、Docker 或 Mastra Cloud,才能获得路由、鉴权、伸缩与日志能力。
为何常见:脚手架把 dev 脚本写进了 package.json,新手误以为这就是官方推荐的生产启动方式;dev 面板的交互体验又强化了「开箱即用」的错觉。
误区给 Agent 挂了 Memory 组件,对话历史就会永久保存,用户下次来还能接着聊。
正解Memory 组件默认使用进程内存存储,服务重启即丢数据。生产环境必须为 Memory 配置持久化 storage(如 PostgreSQL 或 LibSQL),并配合线程(threadId)做会话隔离,否则多用户会话会互相污染上下文。
为何常见:「记忆」这个词容易被理解成持久存储,而框架默认为了开箱即用选择了内存实现,不细读文档很容易踩坑。
面试题
Q1. Mastra 是一个什么样的框架?
- A.PyTorch 深度学习训练框架
- B.TS 优先的 AI Agent 开发框架← 正确答案
- C.前端 React UI 组件库
- D.轻量级数据库客户端
答案:B。Mastra 定位为 TypeScript 优先的 AI Agent 应用开发框架,覆盖 Agent、工具、Workflow、记忆与 RAG;它不做模型训练、不是 UI 库也不是数据库工具,排除 A、C、D。
Q2. 创建新 Mastra 项目的官方推荐命令是?
- A.npm create mastra@latest← 正确答案
- B.pip install mastra
- C.docker pull mastra
- D.cargo new mastra
答案:A。Mastra 是 TS/JS 生态,官方脚手架为 create-mastra,通过 npm create mastra@latest 调用;pip 与 cargo 属于 Python/Rust 生态,Mastra 也没有官方 Docker 镜像拉取方式。
Q3. Mastra 采用的开源协议是?
- A.Apache 2.0 宽松商用← 正确答案
- B.GPL 3.0 强传染性
- C.MIT 极简宽松
- D.BSD 3-Clause 条款
答案:A。官方仓库使用 Apache 2.0 协议,允许商用、修改与再分发,且无需像 GPL 那样传染衍生作品;MIT 与 BSD 协议本身宽松,但并非 Mastra 实际采用的协议。
Q4. 在 Mastra 中定义工具(Tool)时,输入输出结构用什么声明?
- A.Joi,项目常用的校验库
- B.Zod,与核心包内建集成← 正确答案
- C.Yup,表单校验生态
- D.无需声明,运行时推导
答案:B。createTool 的 inputSchema 与 outputSchema 使用 Zod(zod 库),类型推导与运行时校验一体;Joi/Yup 没有官方集成,不声明 schema 则拿不到类型推导与自动重试能力。
Q5. 本地调试 Mastra Agent 的 playground 默认访问地址是?
- A.http://localhost:8080
- B.http://localhost:3000
- C.http://localhost:4111← 正确答案
- D.http://localhost:5173
答案:C。npx mastra dev 启动本地调试服务并默认监听 4111 端口,可交互测试 Agent、查看工具调用轨迹;8080/3000 是常见 Web 服务端口,5173 是 Vite 默认端口,均非 Mastra 调试面板端口。
Q6. 多用户场景下,Mastra 推荐用哪个参数隔离不同会话?
- A.userContext(会话上下文)
- B.threadId(线程会话 ID)← 正确答案
- C.sessionStore(全局会话)
- D.globalContext(全局上下文)
答案:B。Mastra 以线程(thread)为单位组织对话历史,generate(input, { threadId }) 通过线程 ID 隔离会话;userContext、sessionStore、globalContext 都不是官方 API 参数。
Q7. Mastra 的核心能力包括哪些?
- A.Agent 编排与工具调用← 正确答案
- B.Workflow 确定性工作流← 正确答案
- C.记忆与 RAG 检索能力← 正确答案
- D.大模型预训练与微调
答案:ABC。Agent 编排、Workflow、记忆与 RAG 都是 Mastra 内置能力;Mastra 只消费已训练好的模型,不提供预训练或微调功能,模型训练不在框架边界内。
Q8. 关于 Mastra 0.2.0 重构,正确的说法有?
- A.简化了 Agent 的构造方式← 正确答案
- B.引入 createTool 函数式工具定义← 正确答案
- C.移除了全部 TypeScript 类型
- D.强化了工具参数的类型约束← 正确答案
答案:ABD。0.2.0 是面向生产化的破坏性重构,简化 Agent 构造、引入 createTool,同时强化类型约束;移除 TypeScript 类型与重构目标相反,属错误项。
Q9. Mastra 与 Vercel AI SDK 的关系是?
- A.完全替代,不可同时使用
- B.复用模型接口,补齐编排层← 正确答案
- C.SDK 是 Mastra 的子模块
- D.仅组件层会有功能重叠
答案:B。Mastra 的模型接入复用 AI SDK 的 provider 体系(如 @ai-sdk/openai),在其上补充 Agent、工具、Workflow、记忆等编排能力;二者是复用与互补关系而非替代或从属,实际项目中经常同时出现。
Q10. 生产部署 Mastra 应用的合法方式包括?
- A.直接用 mastra dev 暴露公网
- B.用官方 deployer 部署 Vercel← 正确答案
- C.使用 Docker 容器自托管← 正确答案
- D.使用 Mastra Cloud 托管← 正确答案
答案:BCD。dev 模式仅限本地调试,直接暴露生产会带来鉴权、伸缩与稳定性问题;官方 deployer、Docker 自托管与 Mastra Cloud 都是受支持的生产路径,分别对应 Serverless、自有基础设施与全托管三种运维模式。
参考来源
- webpageMastra 官网产品介绍、博客与 Cloud 入口