生产 Agent 运行时:Agno 与 Mastra


文档摘要

生产 Agent 运行时:Agno 与 Mastra 本节摘要:LangGraph、AutoGen、CrewAI 都是「框架重型」——它们给你图、链、角色、流程等丰富的抽象,代价是启动开销与学习曲线。但有一类团队只想要「在我的运行时里,快速跑起一个 Agent 循环」,于是他们够向了 Agno(Python) 或 Mastra(TypeScript)——两者都主动放弃了部分框架拥有的原语,换来了原始速度与对宿主技术栈更紧的贴合。Agno(前身为 Phi-data)主打微秒级 Agent 实例化:文档标的约 2μs 实例化、每 Agent 约 3.

生产 Agent 运行时:Agno 与 Mastra

本节摘要:LangGraph、AutoGen、CrewAI 都是「框架重型」——它们给你图、链、角色、流程等丰富的抽象,代价是启动开销与学习曲线。但有一类团队只想要「在我的运行时里,快速跑起一个 Agent 循环」,于是他们够向了 Agno(Python)Mastra(TypeScript)——两者都主动放弃了部分框架拥有的原语,换来了原始速度与对宿主技术栈更紧的贴合。Agno(前身为 Phi-data)主打微秒级 Agent 实例化:文档标的约 2μs 实例化、每 Agent 约 3.75 KiB 内存、约 23 个模型提供者,生产路径是无状态、会话作用域的 FastAPI 后端——每个请求起一个全新 Agent,会话状态存数据库。Mastra 构建在 Vercel AI SDK 之上,三个原语(Agents、Tools、Workflows)、统一模型路由器(2026 年 3 月 94 个提供者 3300+ 模型)、复合存储(记忆/工作流/可观测性各走不同后端,大规模可观测性推荐 ClickHouse),并自带 Mastra Studio 本地调试 UI。本节吃透两者的定位差异、何时选哪个,以及三种选型陷阱:为速度而速度、生态锁定、企业许可证混淆。读完本节,你能按技术栈、延迟预算、运维形态在 Agno、Mastra、LangGraph、厂商 SDK 间做出选择。

对应原课程:Phase 14 · Lesson 18 · agno-and-mastra-runtimes(原英文 phases/14-agent-engineering/18-agno-and-mastra-runtimes/docs/en.md)。前置:第 01 节(Agent 循环)、第 13 节(LangGraph)。

学习目标

阅读完本节,你应当能够:

  1. 识别 Agno 的性能目标,以及这些目标在何种工作负载下才真正重要。
  2. 说出 Mastra 的三个原语(Agents、Tools、Workflows)与所支持的服务器适配器。
  3. 解释为什么无状态、会话作用域的 FastAPI 后端是 Agno 推荐的生产路径。
  4. 解释 Mastra 的统一模型路由器复合存储解决了什么问题。
  5. 为给定技术栈(Python 优先 vs TypeScript 优先)在 Agno 与 Mastra 间做选择。

一、问题与直觉

LangGraph、AutoGen、CrewAI 解决的是「如何把复杂的多智能体协作表达清楚」——图、Actor、角色流程。但有一类生产场景问的是完全不同的问题:「我只是要快速、低开销地在每个请求里起一个 Agent,跑完就销毁。」

这类场景的典型:聊天扇入(每秒上千个短命 Agent)、评估流水线(并发跑成百上千个 Agent 评测样本)。这里,Agent 的实例化成本单次内存占用直接决定了你能扛多少并发;框架抽象的丰富度反而是负担。

Agno 与 Mastra 都不打算成为 LangGraph。它们在三个维度上竞争:语言贴合(Agno 给 Python 团队,Mastra 给 TypeScript 团队)、运行时人体工学(Agno 近零开销,Mastra 与 Vercel 生态集成)、可观测性(两者都接 Langfuse/Phoenix/Opik,但 Mastra Studio 是一等公民)。

Agno

  • Python 运行时,前身为 Phi-data。
  • 口号:「没有图、链或繁复模式——纯 Python。
  • 性能目标(出自其文档):约 2μs Agent 实例化、每 Agent 约 3.75 KiB 内存、约 23 个模型提供者
  • 生产路径:无状态、会话作用域的 FastAPI 后端。每个请求起一个全新 Agent;会话状态存在数据库里(第 07 节的「外部存储」思想)。
  • 原生多模态(文本、图像、音频、视频、文件)与 agentic RAG。

速度目标在你有每秒上千个短命 Agent(聊天扇入、评估流水线)时才重要。如果一个 Agent 要跑 10 分钟,实例化是 2μs 还是 2ms 根本无所谓——瓶颈在 LLM 调用,不在框架。

Mastra

  • TypeScript,构建在 Vercel AI SDK 之上。
  • 三个原语:AgentsTools(Zod 类型化)、Workflows
  • 统一模型路由器——2026 年 3 月,94 个提供者、3300+ 模型,一个客户端全访问。
  • 复合存储:记忆、工作流、可观测性各走不同后端;大规模可观测性推荐 ClickHouse
  • Apache 2.0,但 ee/ 目录在 source-available 企业许可证下。
  • 服务器适配器:Express、Hono、Fastify、Koa;一等公民地集成 Next.js 与 Astro。
  • 自带 Mastra Studio(localhost:4111)用于调试。
  • 1.0(2026 年 1 月)时 22k+ GitHub star、每周 30 万+ npm 下载。

定位

两者都不试图成为 LangGraph,它们竞争的是:

  • 语言贴合 —— Agno 给 Python 优先团队;Mastra 给 TypeScript 优先团队。
  • 运行时人体工学 —— Agno = 近零开销;Mastra = 与 Vercel 生态集成。
  • 可观测性 —— 两者都接 Langfuse/Phoenix/Opik(第 24 节),但 Mastra Studio 是一等公民。

何时选哪个

  • Agno —— Python 后端、大量短命 Agent、强性能要求、FastAPI 技术栈。
  • Mastra —— TypeScript 后端、Next.js/Vercel 部署、要多厂商统一模型路由、Zod 类型化工具。
  • LangGraph(第 13 节)—— 当持久状态与显式图推理比原始速度更重要。
  • OpenAI / Claude Agent SDK(第 16~17 节)—— 当你想要厂商产品化的形状。

⚠️ 三种选型陷阱:① 为速度而速度——工作负载是「每请求一次慢 Agent 调用」却选 Agno,因为「2μs 听起来很酷」;此时开销根本不是瓶颈。② 生态锁定——Mastra 的 Vercel 风味集成在 Vercel 上是加分,换到别处是减分。③ 企业许可证混淆——Mastra 的 ee/ 目录是 source-available,不是 Apache 2.0;打算 fork 前务必读许可证。

二、从零实现

本节主要是对比性的——单一代码产物无法同时公正对待两个框架。原课程 code/main.py 给出一个并排玩具:一个最小的「跑 Agent、流式输出、持久化会话」流程,实现两次——一次 Agno 形状、一次 Mastra 形状。

# Agno 形状(伪代码):无状态、每请求一个 Agent from agno.agent import Agent from fastapi import FastAPI app = FastAPI() @app.post("/chat/{session_id}") def chat(session_id: str, msg: str): history = db.load(session_id) # 会话状态在外部 agent = Agent(model="gpt-5", tools=[...]) # ~2μs 实例化,用完即弃 reply = agent.run(msg, history=history) db.append(session_id, (msg, reply)) # 状态回写数据库 return reply
// Mastra 形状(伪代码):Zod 类型化工具 + 工作流 import { Agent, createTool } from "@mastra/core"; import { z } from "zod"; const search = createTool({ id: "search", inputSchema: z.object({ query: z.string() }), execute: ({ data }) => runSearch(data.query), }); const agent = new Agent({ name: "researcher", model: router.pick("openai.gpt-5"), tools: { search } });

运行 python3 code/main.py 会展示两条结构不同但功能等价的轨迹——Agno 是「每请求起 Agent」,Mastra 是「长生命周期 Agent + 工作流」。

💡 设计要点:运行时选型的本质是问「状态住在哪」。Agno 把状态推到数据库、Agent 无状态(横向扩展极易);Mastra 让 Agent 长存、状态在工作流里(贴近 Vercel 的长连接模型)。两者都正确,服务于不同的部署形态。

三、框架对比

维度 Agno Mastra LangGraph 厂商 SDK
语言 Python TypeScript Python/JS 各厂商
核心卖点 微秒实例化 统一模型路由 显式状态图 产品化形状
状态位置 外部数据库 工作流内 持久检查点 会话存储
可观测性 接 Langfuse 等 Mastra Studio + 接 Langfuse 接各家 内置 tracing
适合 短命 Agent 高并发 Vercel/Next.js 全栈 持久续跑 厂商绑定产品

四、可复用产物

原课程 outputs/skill-runtime-picker.md:按技术栈、延迟预算、运维形态在 Agno、Mastra、LangGraph、厂商 SDK 间做选择的决策框架,含硬拒绝规则(如「单 Agent 长跑 + 选 Agno 求速度」即拒绝并建议 LangGraph)。

五、练习

  1. (Easy) 读 Agno 文档,把第 01 节的标准库 ReAct 循环移植到 Agno。什么消失了?什么留下来了?
  2. (Easy) 读 Mastra 文档,把同一个循环移植到 Mastra。工具类型化(Zod vs 无)有什么变化?
  3. (Medium) 做基准:在你的技术栈上测 Agent 实例化延迟。Agno 的 2μs 对你的工作负载重要吗?
  4. (Medium) 设计一次迁移:如果你一直在 Python 里跑 CrewAI,迁到 Agno 会破坏什么?
  5. (Hard) 读 Mastra 的 ee/ 许可证条款。哪些限制会影响一个开源 fork?

本节要点回顾

  1. 运行时 vs 框架:LangGraph/AutoGen/CrewAI 是框架重型(给抽象);Agno/Mastra 是运行时优先(给速度与栈贴合)。
  2. Agno 卖点:Python、约 2μs 实例化、约 3.75 KiB/Agent、无状态会话作用域 FastAPI 后端、状态推数据库。
  3. 速度目标看工作负载:每秒上千短命 Agent 才重要;单 Agent 跑 10 分钟时实例化开销无所谓。
  4. Mastra 三原语:Agents、Tools(Zod 类型化)、Workflows,构建在 Vercel AI SDK 上。
  5. 统一模型路由器:94 提供者、3300+ 模型一个客户端;复合存储让记忆/工作流/可观测性各走不同后端。
  6. Mastra Studio:localhost:4111 一等公民调试 UI;ee/ 目录是 source-available 企业许可证,非 Apache 2.0。
  7. 状态住哪决定形态:Agno 推数据库(易横向扩展),Mastra 留工作流内(贴 Vercel 长连接)。
  8. 三种选型陷阱:为速度而速度、生态锁定、企业许可证混淆。
  9. 选型矩阵:Python 短命高并发选 Agno,TS/Vercel 全栈选 Mastra,持久状态选 LangGraph,厂商绑定选 SDK。
  10. 可观测性两者都接:Langfuse/Phoenix/Opik(第 24 节)是跨运行时的通用可观测层。

至此,Agent 框架与运行时的全景(LangGraph、AutoGen、CrewAI、OpenAI/Claude SDK、Agno、Mastra)已铺完。下一节起,我们转向评估——如何用 SWE-bench 与 GAIA 这类基准,客观度量一个 Agent 到底有多强,把「感觉它挺好」变成「它在 N% 的任务上通过」。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U