Mastra:TypeScript 原生的 AI Agent 与工作流框架|部署与使用全指南
本文基于 Mastra 官方仓库
mastra-ai/mastra撰写,核心包@mastra/core最新版本为 1.79.0(2026 年 10 月)。仓库约 29,000+ GitHub stars,主分支每日活跃更新(最近一次提交为 2026-10-26)。采用双许可:主体 Apache License 2.0,ee/目录为 Mastra Enterprise License(详见第十一章)。

Mastra 是一个用 TypeScript 打造 AI 应用与 Agent 的全栈框架:模型路由(40+ 提供商)、Agent、图式工作流、记忆、RAG、评估(evals)、可观测性与本地开发服务器一应俱全,可以直接嵌入 React/Next.js/Node 应用,也可以作为独立 Server 部署到任意 Node.js 兼容环境。它由 Y Combinator W25 批次团队开发,让你从原型到生产全程使用一套现代 TypeScript 技术栈。
一、项目介绍与适用场景
Mastra 的核心思想是:把成熟的 AI 工程模式(Agent、workflow、RAG、memory、evals)做成 TypeScript 里"开箱即用"的组件,并用本地 dev server(mastra dev,内建 Studio 可视化界面)把"编写—调试—测试—部署"闭环跑通。
适用人群与场景:
不适合的场景:
需要 Python 生态(LangChain Python 生态库)的团队——Mastra 是 TypeScript 原生框架;
纯推理批处理等不涉及 Agent/工作流的任务,直接调模型 SDK 更简单;
极度排斥"框架"抽象、只想裸调模型 API 的小项目。
二、核心功能逐条拆解
Model Routing 模型路由:通过统一接口接入 40+ 提供商(OpenAI、Anthropic、Gemini、Grok/xAI 等),Agent 的
model直接写'provider/model-name',切换模型不改业务代码,可用模型目录见 https://mastra.ai/models 。Agents:用
new Agent({ id, name, instructions, model, tools })定义自主 Agent;Agent 自主决定调用哪些工具、迭代多少轮,直到产出最终答案或满足停止条件。通过agent.generate()(完整返回)或agent.stream()(流式)调用。Workflows 图式工作流:
createStep+createWorkflow定义步骤与流程,支持.then()串联,以及.branch()、.parallel()、.dowhile()等控制流;步骤输入输出用 Zod schema 约束,可长期暂停(suspend)等待人工输入后再恢复。Human-in-the-loop:工作流可挂起(
suspended状态)等待用户输入或审批;借助 storage 记录执行快照,进程重启后仍可恢复现场。Memory 记忆:为 Agent 提供会话历史、线程(thread)、资源(resource)与工作记忆(working memory);可配置 LibSQL(本地文件库)、PostgreSQL、MongoDB、Upstash 等多种存储后端。
RAG:从 API、数据库、文件等来源检索数据注入上下文,配套 vector store 与检索 API,构建知识问答类 Agent。
MCP 支持:可以把 Mastra 项目中的 Agent、工具暴露为 Model Context Protocol Server,供 Claude、Cursor 等任意 MCP 客户端调用;也可在工具中接入外部 MCP Server。
可观测性(Observability):内置 traces、spans、metrics、logs 与 feedback 采集,便于追踪每次 Agent 调用;生产环境可路由到 ClickHouse/DuckDB 等 OLAP 后端。
Evals 评估体系:对 Agent 输出打分、构建数据集(dataset)、跑实验(experiment)并对比不同模型/提示词的效果,形成"评测—迭代"闭环(官方提供完整的 build-an-eval-loop 指南)。
Studio 本地可视化:
mastra dev启动本地开发服务器(Studio 界面),在浏览器中构建、测试、调试 Agent、Workflow 与工具,查看工具调用与响应细节。多形态部署:
mastra build构建后可部署为独立 Server(内建 Hono 驱动)、集成进 Next.js/Astro 应用,或使用官方 deployer 一键部署到 Vercel、Netlify、Cloudflare;也可用 Mastra Cloud 平台托管。框架集成:官方提供 Next.js、React+Vite、Astro、Express、SvelteKit、Hono 等集成指南,前端可搭配 Vercel AI SDK UI / CopilotKit 渲染对话界面。
三、全套官方链接
官方未提供单独的"在线 Demo"站点;官方 YouTube 频道(https://youtube.com/@mastra-ai )与平台演示视频可作为可视化参考。
四、硬件与环境前置要求
五、多平台部署步骤
5.1 Windows
# 1. 安装 Node.js 22.13+(winget 或官网安装包)
winget install OpenJS.NodeJS.LTS
# 2. 创建 Mastra 项目
npm create mastra@latest
# 3. 按交互提示输入项目名与模型提供商(openai / anthropic / google / xai)
# 4. 进入项目并启动 dev server
cd my-mastra-app
npm run dev
# 打开 http://localhost:4111 使用 Studio
5.2 macOS / Linux
# 1. Node 22.13+(nvm 示例)
nvm install 22 && nvm use 22
# 2. 推荐方式:脚手架创建项目(会安装 Mastra skills、按需初始化 Git)
npm create mastra@latest
# pnpm / Yarn / Bun 同理:pnpm create mastra@latest 等
# 也可直接指定提供商:npm create mastra@latest my-app -- --llm openai
# 3. 进入项目并启动
cd my-mastra-app
npm run dev
5.3 手动集成到已有项目
# 在既有 Node/TS 项目中安装核心包
npm install @mastra/core @mastra/libsql
npm install -D mastra # mastra CLI(dev/build/deploy 命令)
npm install zod # schema 定义
按官方约定把代码放在 src/mastra/ 下(index.ts 导出 Mastra 实例),然后:
npx mastra dev # 本地开发服务器 + Studio(默认 http://localhost:4111)
npx mastra build # 生产构建
5.4 Docker 部署(独立 Server)
官方提供 mastra build 产出可部署的 Node Server(内建 Hono),容器化方式如下(官方部署文档模式):
FROM node:22-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build # 内部执行 mastra build
EXPOSE 4111
CMD ["node", ".mastra/output/index.mjs"]
具体构建产物路径与启动入口以
mastra build的官方输出与 https://mastra.ai/docs/deployment/mastra-server 为准。
docker build -t my-mastra-app .
docker run -d -p 4111:4111 --env-file .env --name mastra-app my-mastra-app
5.5 部署到云平台
# Vercel(官方内置 deployer)
npx mastra deploy vercel
# Cloudflare
npx mastra deploy cloudflare
# Netlify
npx mastra deploy netlify
官方还支持 AWS(Bedrock AgentCore、EC2、Lambda)、Azure App Services、DigitalOcean、Kubernetes(含 Helm)、Render、Neon、Inngest(workflow runner)、Temporal 等,集成指南见 https://mastra.ai/integrations 。注意:云 Serverless 平台部署时必须配置持久化 storage(见第六章),默认内存存储重启即丢。
5.6 源码运行仓库本身(参与开发)
git clone https://github.com/mastra-ai/mastra.git
cd mastra
# 参考仓库 DEVELOPMENT.md 安装依赖并运行测试
Mastra 的 PR 仅限协作者提交,普通贡献者通过高质量 issue 参与即可。
六、配置文件全部参数解释
Mastra 的"配置"主要是 TypeScript 代码中的 Mastra 实例与环境变量,没有单一 YAML/JSON 配置文件。
6.1 Mastra 实例关键配置
6.2 存储后端参数
本地开发与 mastra dev 共用同一个库文件时,官方建议使用绝对路径(相对路径会因各进程工作目录不同而错开)。
6.3 环境变量
6.4 完整示例:src/mastra/index.ts(带注释)
import { Mastra } from '@mastra/core'
import { LibSQLStore } from '@mastra/libsql'
import { testAgent } from './agents/test-agent'
import { testWorkflow } from './workflows/test-workflow'
export const mastra = new Mastra({
// 注册 Agent 与 Workflow
agents: { testAgent },
workflows: { testWorkflow },
// 持久化存储:本地用 LibSQL 文件库;生产换 PostgresStore
// 注意:与 mastra dev 同库时使用绝对路径
storage: new LibSQLStore({
id: 'mastra-storage',
url: 'file:/absolute/path/to/your/project/mastra.db',
}),
})
生产环境(PostgreSQL):
import { PostgresStore } from '@mastra/pg'
export const mastra = new Mastra({
storage: new PostgresStore({
id: 'mastra-storage',
connectionString: process.env.DATABASE_URL,
}),
// ...agents / workflows
})
还可使用 MastraCompositeStore 按"域"分流存储:例如默认走 LibSQL、workflows 域走 PostgreSQL、observability 域走 ClickHouse(见官方 composite storage 文档)。
七、启动、后台常驻、开机自启、改端口
7.1 前台启动
npm run dev # 开发模式,启动 mastra dev(Studio 默认 http://localhost:4111)
npx mastra build # 生产构建
npm run start # 启动构建产物(以项目 package.json 实际脚本为准)
7.2 systemd 常驻 + 开机自启(Linux 生产)
# /etc/systemd/system/mastra-app.service
[Unit]
Description=Mastra App Server
After=network-online.target
[Service]
Type=simple
User=deploy
WorkingDirectory=/opt/mastra-app
EnvironmentFile=/opt/mastra-app/.env
ExecStart=/usr/bin/node .mastra/output/index.mjs
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mastra-app
journalctl -u mastra-app -f
7.3 Supervisor / PM2
# PM2(Node 生态常用)
npm install -g pm2
pm2 start .mastra/output/index.mjs --name mastra-app
pm2 startup && pm2 save # 开机自启
7.4 Windows
原生开发用 npm run dev 即可;常驻可用"任务计划程序"设置开机运行,或用 NSSM 将 Node 进程包装为 Windows 服务;生产建议 WSL2 + systemd(同 7.2)。
7.5 Docker Compose 自启
services:
mastra-app:
build: .
restart: unless-stopped
ports:
- "4111:4111"
env_file: .env
postgres:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_PASSWORD: example
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
7.6 改端口与反向代理
mastra dev 默认端口为 4111(Studio 访问地址 http://localhost:4111 ),端口参数以 npx mastra dev --help 的官方输出为准。生产 Server 的端口由部署环境(如 PORT)控制,反代示例:
server {
listen 443 ssl;
server_name mastra.example.com;
location / {
proxy_pass http://127.0.0.1:4111;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; # 支持流式/WebSocket
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
八、功能实操教程
8.1 定义并测试第一个 Agent
src/mastra/agents/test-agent.ts:
import { Agent } from '@mastra/core/agent'
export const testAgent = new Agent({
id: 'test-agent',
name: 'Test Agent',
instructions: 'You are a helpful assistant.',
model: 'openai/gpt-4o', // 格式:'provider/model-name',模型目录见 mastra.ai/models
})
注册后在代码中调用:
const agent = mastra.getAgentById('test-agent')
const response = await agent.generate('Help me organize my day')
console.log(response.text)
或在 Studio(http://localhost:4111 )中直接对话测试,并查看工具调用与响应详情。
8.2 接入不同模型提供商
// Anthropic(需 ANTHROPIC_API_KEY)
model: 'anthropic/claude-sonnet-4-5'
// Grok / xAI(需 XAI_API_KEY)
model: 'xai/grok-3'
// Ollama 本地模型(无需云端 Key,按模型路由文档配置本地端点)
// Google Gemini(需 GOOGLE_GENERATIVE_AI_API_KEY)
model: 'google/gemini-2.5-pro'
'provider/model-name' 由 Mastra model router 解析,换模型只改这一行。
8.3 创建 Workflow(createStep + createWorkflow)
import { createWorkflow, createStep } from '@mastra/core/workflows'
import { z } from 'zod'
const step1 = createStep({
id: 'step-1',
inputSchema: z.object({ message: z.string() }),
outputSchema: z.object({ formatted: z.string() }),
execute: async ({ inputData }) => ({
formatted: inputData.message.toUpperCase(),
}),
})
export const testWorkflow = createWorkflow({
id: 'test-workflow',
inputSchema: z.object({ message: z.string() }),
outputSchema: z.object({ output: z.string() }),
})
.then(step1) // 串联;还可用 .branch()/.parallel()/.dowhile() 等控制流
.commit() // 结束定义
// 运行
const run = await testWorkflow.createRun()
const result = await run.start({ inputData: { message: 'Hello world' } })
if (result.status === 'success') console.log(result.result)
8.4 持久化 Memory(LibSQL → Postgres)
// 本地:LibSQL 文件库
import { LibSQLStore } from '@mastra/libsql'
storage: new LibSQLStore({ id: 's', url: 'file:./mastra.db' })
// 生产:PostgreSQL
import { PostgresStore } from '@mastra/pg'
storage: new PostgresStore({ id: 's', connectionString: process.env.DATABASE_URL })
配置后 Agent 的消息历史、线程与工作记忆在重启后依然保留,Studio 也能跨会话查看状态。
8.5 给 Agent 加工具
import { createTool } from '@mastra/core/tools'
import { z } from 'zod'
const weatherTool = createTool({
id: 'get-weather',
description: 'Get current weather for a city',
inputSchema: z.object({ city: z.string() }),
outputSchema: z.object({ temp: z.number() }),
execute: async ({ inputData }) => ({ temp: 25 }), // 替换为真实 API 调用
})
// 在 Agent 中挂载
new Agent({ id: 'a', name: 'A', instructions: '...', model: 'openai/gpt-4o', tools: { weatherTool } })
Agent 会在需要时自主调用该工具;工具内部也可以调用其他 Agent(Agents-as-tools)。
8.6 用 Evals 建立评测闭环
在 Mastra 平台/Studio 中:创建数据集 → 运行实验 → 对比模型表现。官方 eval-loop 指南的典型流程:
把生产 trace 添加进 dataset(见下图 1);
发起实验(run experiment),指定模型与评分器(见下图 2);
查看实验结果与判定原因(见下图 3);
横向对比不同模型实验的得分(见下图 4),据此换模型或改提示词。




8.7 Client SDK 调用(前后端分离)
前端/其他服务可通过 Mastra Client 调用已注册的 Agent 与 Workflow(见官方 @mastra/client-js 文档),或在 Next.js route handler 中直接 mastra.getAgentById('x').generate(...),配合 Vercel AI SDK UI 流式渲染对话。
九、全套报错故障排查
十、升级、回滚与卸载
10.1 版本查看
npm ls @mastra/core mastra
npx mastra --version # CLI 版本(以官方命令输出为准)
10.2 升级
# 升级核心包与 CLI
npm install @mastra/core@latest @mastra/libsql@latest
npm install -D mastra@latest
# 脚手架项目可用官方文档指引的 npx 命令更新依赖
npx npm-check-updates -u '@mastra/*' && npm install
升级后运行本地测试并在 Studio 中回归验证 Agent/Workflow 行为。
10.3 回滚到指定版本
npm install @mastra/core@1.78.0 # 回到指定版本
git checkout <上一个正常 tag/commit> # 项目代码配合回滚
生产部署建议锁定 package-lock.json 并在 CI 中固定版本,回滚即重新部署上一个构建产物。
10.4 完整卸载清单
# 1. 卸载 npm 依赖
npm uninstall @mastra/core @mastra/libsql mastra
# 2. 删除项目
rm -rf my-mastra-app
# 3. 清理本地数据
rm -f mastra.db # LibSQL 本地库
docker compose down -v # 若使用 Docker Compose,含 Postgres 卷
# 4. 清理环境变量与全局工具
# 从 .env / 系统环境中移除 OPENAI_API_KEY、DATABASE_URL 等
npm uninstall -g pm2 # 若安装了 PM2
十一、商用许可与合规风险提示
双许可结构(以仓库 LICENSE.md 为准):仓库绝大部分代码采用 Apache License 2.0(Copyright (c) 2025 Kepler Software, Inc.),可自由商用、修改与分发,义务为保留版权与 NOTICE;任何名为
ee/的目录(如packages/core/src/auth/ee/、@mastra/core/auth/ee、agent-builderee/等)为 Mastra Enterprise License 的 source-available 代码——开发与测试可免费使用,生产使用需购买有效的企业许可。商用前务必核对你用到的模块是否位于ee/目录。商标:"Mastra" 名称与 Logo 归 Kepler Software, Inc. 所有,二次分发产品不得使用官方品牌背书。
模型 API 费用:Mastra 本身开源免费,但所有模型调用按 OpenAI/Anthropic/xAI/Google 等提供商的定价计费;evals 与高并发生产会显著放大 token 成本,建议设置用量告警。Mastra Cloud(托管 Server/Studio/可观测性)为平台付费服务,以官方定价为准。
数据隐私与出网:Agent 调用会把 prompt 与上下文发送给你选择的模型提供商;可观测性数据(traces/logs)若启用云端采集,也会离开本机。涉及个人数据或行业合规(GDPR、金融、医疗)时,评估数据流向,必要时自建 Ollama 本地模型与自托管存储(Postgres 等)。
生产环境风险:默认内存存储仅适合开发;生产必须配置持久化 storage 并启用备份。Agent 的自主行为(写邮件、删数据)应在 instructions 与工具权限上做护栏,配合 Human-in-the-loop(suspend/resume)对高风险写操作做人工审批。
ee/目录的企业特性在未取得许可的情况下用于生产可能构成许可违约,部署前请逐项确认。
附录:命令速查
# ===== 初始化 =====
npm create mastra@latest # 脚手架创建项目
npm create mastra@latest my-app -- --llm openai # 指定提供商
npm install @mastra/core @mastra/libsql # 手动集成
npm install -D mastra zod
# ===== 开发 =====
npm run dev # 启动 mastra dev(Studio: http://localhost:4111)
npx mastra build # 生产构建
npx mastra deploy vercel # 部署到 Vercel(cloudflare / netlify 同理)
# ===== 调用 =====
# agent.generate('...') / agent.stream('...') # 直接调用 Agent
# workflow.createRun() → run.start({ inputData }) # 运行 Workflow
# mastra.getAgentById('id') / mastra.getWorkflow('id')
# ===== 存储 =====
# 本地:LibSQLStore({ url: 'file:./mastra.db' })(与 dev 共用时用绝对路径)
# 生产:PostgresStore({ connectionString: process.env.DATABASE_URL })
# ===== 运维 =====
npm ls @mastra/core # 查看版本
npm install @mastra/core@latest # 升级
npm install @mastra/core@1.78.0 # 回滚
docker compose up -d # 容器化部署(restart: unless-stopped 自启)