Mastra 开发(01):TS 优先的 Agent 框架

QuibblerAgentQuibblerAgent 2026-11-11 约 16 分钟 5 次阅读

前四个系列——Agent 开发、上下文工程、EDD、本地部署——全部泡在 Python 生态里:LangGraph、LlamaIndex、Ollama,工具链用得很顺手。但这个系列要换枪了:TypeScript + Mastra。原因很直接:2026 年 TypeScript 已经是全栈默认语言之一,大量团队的现状是 Next.js 前端加 Node 后端,一条流水线一种语言;为了上 Agent 单独养一个 Python 微服务,换来的是两套依赖、两套 CI 和一条类型断裂的序列化边界。

Mastra 是 TypeScript Agent 框架目前的事实领跑者:ex-Gatsby 团队打造、YC W25、开源 Apache-2.0,把 agents、workflows、memory、tools、MCP、evals、tracing 装进同一个框架。本篇是系列第 1 篇,按"为什么 → 是什么 → 怎么选 → 怎么跑"组织:先论证为什么需要 TS Agent 框架,再画 Mastra 全景,对比 LangGraph 划清甜区,速览五大核心概念,最后跑通第一个 Agent 并给出 14 篇路线图。

1、为什么需要 TS Agent 框架

先摆问题。全栈 TS 团队要上 Agent,过去只有两条路。一是把 Agent 逻辑放进 Python 服务,FastAPI 加 LangGraph 几乎是标配,前端走 HTTP 调用;二是用 LangChain.js 之类的移植库在 Node 里硬写。

第一条路的代价是架构分裂:两套运行时、两套依赖管理、两套监控,工具定义每改一次都要跨服务同步接口。类型安全在边界断裂是这里最疼的一点:Python 侧用 Pydantic 定义工具入参,TS 前端还得手写一遍 TypeScript 类型,两边靠人肉约定保持一致。改了一边忘了另一边,就是运行时才爆出来的线上事故。

第二条路缺的是框架层。Vercel AI SDK 解决的是模型调用层——streaming、tool call 协议、多 provider 适配,做得很好;但它不管 Agent 的编排、记忆、评测和追踪,而这些恰恰是 Agent 从 demo 走向生产的主战场。中间空出来的位置,就是 Mastra 站的地方。

TS 原生框架最大的红利是Zod schema 贯穿工具与输出:同一个 Zod schema,前端拿它做表单校验,Agent 工具拿它定义入参出参,结构化输出拿它约束模型返回。类型从 UI 一路静态推导到模型输出,全程零手写同步——这是 Python 生态给不了的端到端体验,Pydantic 只覆盖了后端半截。

顺带说一句工程土壤:2026 年的 TS 工具链已经不是短板。Bun 和 pnpm 把 monorepo 工程化拉平,tRPC 让前后端接口全程类型化,剩下的缺口只有 Agent 框架这一块——补上它,整条链路才算真正闭环。

2、Mastra 框架全景

先给事实底座。Mastra 是开源框架(Apache-2.0),代码在 GitHub 仓库,官网文档齐全。团队来自 Gatsby:联合创始人 Sam Bhagwat 曾任 Gatsby 的 COO,Gatsby 当年融了 5000 万美元、最后卖身 Netlify。公司入选 YC W25,2026 年又拿下 Spark Capital 领投的 2200 万美元 A 轮,累计融资约 3500 万美元。版本方面,截至 2026 年 10 月,@mastra/core 稳定在 1.x 线,npm 最新 1.79.0;CLI 与脚手架 create-mastra 同步在 1.35.0,要求 Node 22.13 以上。

一句话定位:TS 优先、batteries-included 的一体化 Agent 框架——TypeScript 原生,七大件全配齐,装上电池就能跑。它的能力地图如下:

框架本体 @mastra/core(七大件)
├── Agent     —— 模型 + 工具 + 指令的封装
├── Tool      —— Zod schema 定义的工具
├── Workflow  —— 图式流程编排
├── Memory    —— 线程级记忆与语义检索
├── MCP       —— 标准协议接入外部工具
├── Evals     —— Agent 行为评测
└── Tracing   —— OpenTelemetry 链路追踪

解读一下:这七件套覆盖了 Agent 生产化的完整链路——跑(Agent、Tool)、编排(Workflow)、记(Memory)、连(MCP)、测(Evals)、看(Tracing)。本系列后面会逐个展开。

底座选型也值得说:模型接入直接复用 Vercel AI SDK 的 provider 生态,OpenAI、Anthropic、Google、本地 Ollama 一个 import 就切换;HTTP 服务层用 Hono;schema 层 Zod v3、v4 都支持。不在成熟层重复造轮子,把研发火力集中在 Agent 特有的问题上,这是它能一年多跑到 1.x 稳定线的原因之一。

3、与 LangGraph 的定位差异

Agent 系列第 25 篇的框架对比表里给过一句话结论:Mastra 是"TS 原生、batteries-included"。从 TS 视角展开,核心差异可以压成两组词:约定优先 vs 图即代码,DX 优先 vs 控制权优先。

LangGraph 的哲学是图即代码:在 StateGraph 上显式声明节点和边,状态对象贯穿全图,任意转移边、循环、检查点都能精确表达。代价是样板多、心智模型重——你得先学会图,再学会 Agent。Mastra 反过来:new Agent 三行就能跑,顺序、条件分支、并行、人机协同这些常见编排在 Workflow 里是现成原语,需要更细控制时再把图展开。

维度 Mastra LangGraph
语言 TypeScript 原生 Python 为主,JS 版跟随
核心抽象 Agent 约定 + Workflow StateGraph 状态图
上手成本 低,脚手架开箱即用 中,先懂图再懂 Agent
Schema Zod 贯穿前后端 Pydantic,止步后端
控制粒度 常见模式已封装 任意边与状态转移
生态配套 七件套一体化 LangChain 全家桶

各自的甜区很清楚:做复杂多阶段研究流水线、需要精确控制每一步转移与回溯,LangGraph 依然是天花板;把 Agent 能力快速嵌进现有 TS 产品、团队没有专职 AI 工程师,Mastra 的上手速度优势明显。两者也不互斥:不少团队 Python 侧跑 LangGraph 做重流程,TS 侧用 Mastra 做产品集成,各守各的甜区。

4、核心概念速览

五大概念,每个一段简介,后续各有专篇展开。

Agent 是框架的一等公民:模型、工具集、指令(instructions)三件东西打包成一个对象。generate() 同步拿结果,stream() 流式输出,模型何时调工具由框架的工具循环驱动。多 Agent 组网与交接也建立在它上面。

Tool 用 createTool 定义:Zod 的 inputSchema、outputSchema 约束入参出参,execute 里写业务逻辑。schema 即文档即校验——模型读 description 决定何时调用,编辑器里全程类型推导。

Workflow 做图式编排:把多个 step 按 DAG 连起来,支持条件分支、并行、失败重试。亮点是 suspend 与 resume:流程可以挂起等人审批再继续,这是人机协同的原生原语。

Memory 以**线程(thread)**为单位组织对话历史:resourceId 标用户、threadId 标会话,两级隔离。存储后端可换 LibSQL、Postgres 等,向量检索可挂载,长对话压缩、语义回忆都封装在统一接口后面。

MCP(Model Context Protocol)让 Mastra 作为 client 接入任意外部 MCP 服务器,一份配置把第三方工具变成 Agent 工具;方向反过来也行——把 Mastra 服务本身暴露成 MCP server 给其他客户端用。协议细节见 MCP 规范。

5、生态三件套

学 Mastra 要先分清三个东西:框架本体、开发工作台、部署形态。

第一件是框架本体:@mastra/core 加 CLI 包 mastra,npm create mastra@latest 一条命令装好。脚手架会生成 agent 定义、注册 Mastra 实例的入口文件和开发配置,还能顺手集成 Next.js 前端模板。

第二件是 Mastra Dev,本地开发工作台:项目里跑 mastra dev,服务起在 4111 端口,浏览器打开就是 Playground——和 Agent 对话调试、直接调用工具、查看每一步的 trace,代码改动热更新。它的体验接近"Agent 版的数据库 GUI",用过一次基本回不去。

第三件是部署:mastra build 产出基于 Hono 的独立 Node 服务,PM2、Docker 随便托管;官方 deployer 可以打包成 Vercel、Cloudflare 等 Serverless 函数;另有官方托管云负责运行时与状态。本地调试、自托管、托管云三条路,按团队规模选。

选型建议很朴素:个人项目和中小团队直接上 Vercel 或 Cloudflare 的 deployer,零运维;有合规或数据边界要求的,走自托管 Node 服务;等多 Agent 需要共享运行时和状态时,再评估托管云。三条路之间迁移的成本不高,因为产物始终是同一套 @mastra/core 代码。

6、第一个 Agent 实测

从安装开始,一条命令拉起项目:

npm create mastra@latest weather-bot
cd weather-bot

解读:脚手架生成标准目录,agent 与工具定义放在 src/mastra/ 下,依赖自动安装,.env 里填上 OPENAI_API_KEY 即可就绪。核心代码只有一个工具加一个 Agent,如下:

import { Agent } from '@mastra/core/agent';
import { createTool } from '@mastra/core/tools';
import { openai } from '@ai-sdk/openai';
import { z } from 'zod';

const weatherTool = createTool({
  id: 'get-weather',
  description: '查询指定城市的实时天气',
  inputSchema: z.object({ city: z.string() }),
  execute: async ({ context }) => {
    // 演示用假数据,生产环境换真实天气 API
    return { city: context.city, temp: 18, condition: '晴' };
  },
});

export const weatherAgent = new Agent({
  name: 'weather-agent',
  instructions: '你是天气助手,回答前必须先查实时数据',
  model: openai('gpt-4o'),
  tools: { weatherTool },
});

这段代码有两个要点。其一,context.city 自动推导为 string,是 Zod schema 带来的类型红利;其二,openai('gpt-4o') 一个工厂函数接好 provider,换模型只改一个字符串。跑起来同样直接:

const result = await weatherAgent.generate(
  '北京今天适合穿外套吗?',
);
console.log(result.text);

Agent 会在需要时自动调用工具、拿回数据再组织回答:result.text 是最终自然语言,result.toolCalls 能看到中间的调用记录。最后是工作台模式:

npx mastra dev

启动后浏览器访问 http://localhost:4111,在 Playground 里选中 weather-agent 直接对话,右侧能看到完整的工具调用轨迹——比对着 console.log 猜流程强一个量级。

注意:Mastra 处在 1.x 快速迭代期,minor 版本间偶有 API 调整。本文代码以 1.79 版为基准,动手前建议先过一眼官方文档对应章节。

7、系列路线图

系列共 14 篇,四条主线推进:

  • 第 1 篇:全景导览(本篇)
  • 第 2 篇:环境搭建——脚手架与项目结构
  • 第 3 篇:Agent 核心——模型、指令与生成模式
  • 第 4 篇:Tool 开发——Zod schema 与错误处理
  • 第 5 篇:结构化输出——outputSchema 实战
  • 第 6 篇:Memory——线程记忆与语义检索
  • 第 7 篇:Workflow 基础——图式编排入门
  • 第 8 篇:Workflow 进阶——suspend 与人机协同
  • 第 9 篇:MCP——接入外部工具服务器
  • 第 10 篇:多 Agent 协作——组网与交接
  • 第 11 篇:Evals——给 Agent 写回归测试
  • 第 12 篇:Tracing——OpenTelemetry 可观测
  • 第 13 篇:部署——Node 服务与 Serverless
  • 第 14 篇:实战——生产级 Agent 从零到上线

节奏是:先把单 Agent 跑透(第 2~5 篇),再解决状态与编排(第 6~8 篇),然后打通外部世界(第 9~10 篇),最后补齐工程化(第 11~14 篇)。每篇都有可运行代码,实战篇合成一个完整项目。

8、总结

本篇做了四件事:论证了全栈 TS 团队为什么值得一个原生 Agent 框架——类型安全端到端、不用引入第二技术栈;给出 Mastra 的定位与版本事实——ex-Gatsby 团队、1.x 稳定线、七大件一体化;用"约定优先 vs 图即代码"划清了它与 LangGraph 的甜区;最后用二十行代码跑通了第一个带工具的 Agent。

判断自己该不该入 TS 栈,问三个问题:团队主力语言是不是 TypeScript;Agent 是嵌进现有产品,还是独立的研究流水线;有没有精力维护第二个技术栈。对于 Next.js 加 Node 的产品团队,建议直接花半天跑通本文的 weather-bot,再用 Mastra Dev 工作台玩一天,体感会比任何横评文章都准;对于重 Python 的算法团队,LangGraph 依然是主场,Mastra 值得了解但不必迁移。下一篇我们从脚手架生成的项目结构开始,把每一层代码摊开讲。

相关推荐

获取系统SDK版本、判断手机ROM
精选Code

获取系统SDK版本、判断手机ROM

Build获取系统SDK版本Android中部分API的使用,需要在特定的SDK版本之后才能使用,因此在兼容老版本SDK的时候,经常需要判断API的版本。各种Android版本的对应关系参考《Android各版本对应的SDK版本》判断手机ROM有时候需要判断手机系统的ROM,检测ROM是MIUI、EMUI还是Flyme,可以使用getprop命令,去系统build.prop文件(关于build.p

4.2k
AndroidStudio中各种中文乱码问题
精选Code

AndroidStudio中各种中文乱码问题

AndroidStudio中各种中文乱码问题1、编译Java错误信息乱码在出现这个Annotation processors must be explicitly declared now...问题的时候,正好也发现AndroidStudio Build Output错误信息都乱码。经常遇到各种问题,习惯了,现在遇到的问题,都是以后的答案。 1.1、修改项目build.gradle(无效)在整个p

2.8k
Multi-Agent 详解:多智能体协作架构与实践
精选Agent

Multi-Agent 详解:多智能体协作架构与实践

一个智能体配上一套工具,已经能完成相当多任务。但让它同时“当产品经理、写后端、跑测试、做代码评审”,很快就会露馅:上下文里塞满了互相干扰的指令,十几件工具的清单来回切换,任务做到一半忘了开头。解法看起来很自然——像人类团队一样分工:让多个智能体各司其职,由一个协调者调度,这就是 Multi-Agent(多智能体)系统。它也是 2026 年智能体工程里讨论度最高、误用率也最高的架构。本文按“架构模式…

122