过去三年,AI Agent 框架几乎等于 Python 的同义词——LangChain、CrewAI、AutoGen、LlamaIndex 全部生在 Python 生态。但 2025 年下半年开始,一批 TypeScript 原生框架集中爆发:Mastra(Gatsby 团队)、VoltAgent(可观测优先)、Vercel AI SDK 5/6(通用 AI 层)、CopilotKit(前端即 Agent)、Inngest Agent Kit(持久化执行)。本文用同一个"客户支持查询 Agent"在六栈中分别实现,围绕 Agent Loop、工具校验、记忆、可观测、冷启动五个维度实测,结论是:TS 第二极已经成立,但它不是要取代 Python,而是吃掉"前端密集型 + Edge 部署 + 全栈单语言"这一整片过去没人服务的市场。选型红线也随之清晰——下面给出分场景的硬性取舍。
| 维度 | Mastra | VoltAgent | Vercel AI SDK 6 | CopilotKit | Inngest Agent Kit | LangGraph.js |
|---|---|---|---|---|---|---|
| 定位 | 全栈 TS Agent 运行时 | 可观测优先 Agent 平台 | 通用 AI 层/积木 | 前端即 Agent | 持久化执行引擎 | 状态图多智能体 |
| GitHub Stars(2026.05) | ~23.2K | ~5.1K | ~15K+ | ~17K+ | ~5.5K(Inngest 主体) | 随 LangChain.js |
| 工具 Schema | input + output 双校验 | 仅 input 校验 | input 校验 | 透传宿主框架 | input 校验 | input 校验 |
| 记忆模型 | thread/resource | userId/conversationId | 需自建 | 内置 React 会话 | 跨步骤持久状态 | checkpoint 快照 |
| 可观测 | OpenTelemetry(自带) | VoltOps Console(托管,默认开) | 裸,需外接 | DevUI | Inngest Dashboard | LangSmith |
| 打包体积 | ~450KB | ~520KB | 最小(无运行时) | 前端 chunk | 无关(云端执行) | ~600KB+ |
| Edge 冷启动 | ~80ms | ~110ms | 最低 | 前端渲染 | 不适用(后台) | ~140ms |
| 多智能体 | workflow/agent-as-tool | supervisor/subAgent 原生 | 自建 loop | 接 LangGraph | 并发 fan-out | 状态图原生 |
| 上手到首 Agent | ~25 分钟 | ~15 分钟 | ~10 分钟 | ~20 分钟(含前端) | ~30 分钟 | ~40 分钟 |
| 变现/训练营潜力 | 高(全栈可教) | 中(偏后端) | 低(太底层) | 高(B 端 Copilot) | 中(基础设施向) | 高(仍是主流) |
Mastra 出自 Gatsby 核心团队,最大的心智模型差异是把 Agent 当作一等公民对象,声明一次到处复用。它的 createTool 同时接受 inputSchema 和 outputSchema——这是六栈里唯一对工具返回值做 Zod 校验的框架。表面看只是多写几行,实际消除的是一类"数据库迁移改了字段名,垃圾数据悄悄流回模型"的生产事故。
工具定义的精髓在于边界防御:
const lookupCustomer = createTool({
id: 'lookup-customer',
description: 'Look up a customer by email or customer ID',
inputSchema: z.object({ identifier: z.string() }),
outputSchema: z.object({
found: z.boolean(),
customer: z.object({ id: z.string(), name: z.string(),
plan: z.string(), status: z.string() }).nullable(),
}),
execute: async ({ context }) => {
const customer = await findCustomer(context.identifier)
if (!customer) return { found: false, customer: null }
return { found: true, customer: { id: customer.id, name: customer.name,
plan: customer.plan, status: customer.status } }
},
})
Agent Loop 由框架托管,你不用手写"调 LLM → 跑工具 → 回填 → 循环"那套机器。配套的 mastra dev 起一个 Vite 本地 Playground,能直接和 Agent 对话、看每一步 trace 和工具 IO。记忆走 @mastra/memory + 存储适配器(默认 LibSQL),通过 thread(会话)和 resource(用户)二维分区,写入全自动。生产可观测走 OpenTelemetry,接 Langfuse/Jaeger/Honeycomb 都行——你拥有自己的可观测栈。代价是社区比 Python 阵营小、文档仍有缺口,非显而易见的地方得读源码。变现上,Mastra 是 TS 全栈训练营的最佳载体:一套语法讲完 Agent、工具、记忆、工作流、可观测五件事。
VoltAgent 同样有顶层 Agent 类,但它围绕一个中心化的 VoltAgent 运行时构建——注册即启动,默认在 localhost:3141 暴露本地服务,再把运行时指向托管的 VoltOps Console(console.voltagent.dev)。体验接近"给运行中的进程挂调试器",而不是"事后翻日志"。这是它与 Mastra 最实际的分野:开箱即用的生产级 trace,不用自己搭基础设施。
工具 API 更精简,只有单个 parameters schema,校验来自 LLM 的输入,但信任 execute 的返回值——比 Mastra 少一道护栏,迭代时也更少样板:
const supportAgent = new Agent({
name: 'support-agent',
description: 'Looks up customer data and invoice status.',
instructions: 'Call lookup_customer first, then get_latest_invoice...',
llm: new VercelAIProvider(),
model: anthropic('claude-sonnet-4-20250514'),
tools: [lookupCustomer, getLatestInvoice],
})
new VoltAgent({ agents: { support: supportAgent } })
真正让 VoltAgent 立住的是 supervisor/subAgent 多智能体:把子 Agent 传给父 Agent,框架自动生成 delegate_task 工具让监督者派活给专家。这种声明式层级在客服分流、多专业域协作里极省心。MCP 支持通过 @voltagent/core 的 MCPConfiguration 提供,与 Mastra 的 @mastra/mcp 体验几乎一致。短板是社区仅 ~5.1K stars、生态薄,且半年内有过破坏性 API 变更——必须锁版本。适合小团队、想要层级化多智能体、不想自建可观测的场景。
Vercel AI SDK 自我定位是"通用 AI 层"——generateText、streamText、generateObject、useChat 这些原语,是上面 Mastra、VoltAgent 调用模型的底层适配器(两者都用 @ai-sdk/anthropic)。v5 引入 Agent 类处理多步工具调用循环,v6 进一步重构了 useChat 和工具流式协议、provider 适配。它的哲学是不给你 Agent 运行时,只给你最锋利的积木。
import { generateText, tool } from 'ai'
import { anthropic } from '@ai-sdk/anthropic'
import { z } from 'zod'
const { text } = await generateText({
model: anthropic('claude-sonnet-4-20250514'),
tools: {
lookup: tool({ parameters: z.object({ id: z.string() }),
execute: async ({ id }) => findCustomer(id) }),
},
maxSteps: 10, // 自管 loop
prompt: '查一下 [email protected] 的状态',
})
实测中它是打包最小、冷启动最低的选择——当你只需要"一次 LLM 调用 + 几个工具",或部署到 Cloudflare Workers 这种对冷启动极度敏感的 Edge,直接用 AI SDK 比套框架更划算。代价是你得自己实现记忆、工作流、多智能体编排。它的另一杀手锏是前端流式 UI:useChat 让 React/Svelte/Vue 组件能逐 token 渲染、渲染工具调用中间态,这是 Python 框架结构上做不到的(它们压根不在前端跑)。变现上它太底层,不适合做训练营主线,但适合做"模型路由降本"这类专题——很多团队选框架为省 token,真正的大杠杆其实是把简单查询路由到便宜模型。
CopilotKit 的口号是"The Frontend Stack for Agents"——它不和 Mastra/VoltAgent 抢后端,而是吃下前端那层:一套 React 聊天运行时 + CoAgents 架构,让 LangGraph(Python 和 JS)、CrewAI、Mastra、LlamaIndex 的 Agent 都能以统一接口嵌进 Next.js 应用。一个标准化的适配层,把异构后端 Agent 拉到同一个 UI 里。
这对产品型团队价值极高:你的核心 Agent 可以是 Python 写的(复用生态),但面向用户的交互层、人类在环(HITL)、中间态渲染、会话状态,全部用 TS 在前端统一治理。比如一个"研究 Agent"在前端展示"正在规划子查询→并行 fan-out 工具→等待结果",用户随时打断或修正,这套交互在纯 Python 栈里要重写一遍前端协议。CopilotKit 的变现潜力在 B 端 Copilot 产品——企业最缺的不是 Agent 能力,而是把 Agent 包成产品交付给非技术用户的那层工程。短板是它本身不产生智能,强依赖宿主 Agent 框架的质量;选它等于同时为两套栈负责。
长程 Agent 的头号敌人是中途崩溃:LLM 限流、工具超时、上下文超窗、第 8 步挂了前 7 步白跑。Inngest 的解法是持久化执行(durable execution)——把 Agent 运行拆成可重放的步骤,每步有独立重试、并发控制和检查点。它的 Agent Kit 让"规划子查询 → 并行 fan-out 工具调用 → 暂停等外部事件 → 汇总"这种长链路变得安全。
export const researchAgent = inngest.createFunction(
{ id: 'research-agent', retries: 5 },
{ event: 'research/run' },
async ({ event, step }) => {
const subqueries = await step.run('plan', () => planSubqueries(event.query))
const results = await Promise.all(
subqueries.map(sq => step.run(`search:${sq}`, () => search(sq))))
return await step.run('synthesize', () => synthesize(results))
})
它与 Temporal、Trigger.dev、Restate 同属"Agent 运行时基础设施"赛道,但 Inngest 的 TS-first 和事件驱动模型对 JS 团队最友好。它不替代 Mastra/VoltAgent,而是它们的持久化底座——很多生产级架构是"Mastra 写 Agent 逻辑 + Inngest 跑执行"。变现上偏基础设施向,适合做"Agent 生产化"进阶课。红线是:如果你的 Agent 都是短链路(< 1 分钟、单轮),上持久化执行是过度工程。
必须正面对手。LangChain/LangGraph 在 2025 年达到 v1.0,LangChain 的 Python 下载量已超过 OpenAI SDK,Python 第一极依然稳固且仍在增长。但裂缝出现在 TS 这一侧:LangChain.js 历史上因 Python 优先的基因,TS 支持偏弱;LangGraph.js 用 StateGraph 提供状态图、checkpoint、HITL、多智能体,能力最全,但心智负担和上手成本最高(实测 ~40 分钟到首 Agent,冷启动 ~140ms+,打包 ~600KB)。
Python 阵营的护城河是生态纵深——评测库、向量库、语音、视觉集成、研究前沿全在 Python。TS 第二极的策略因此不是正面硬刚,而是吃 Python 服务不到的三个口子:①前端密集型应用(CopilotKit 这层 Python 结构上够不着);②Edge/Serverless 冷启动敏感部署(Mastra 80ms vs Python 冷启动动辄数百 ms);③全栈单语言团队(一个团队用 TS 从 UI 写到 Agent,省掉跨语言协作税)。市场报告用"TypeScript Rising"概括这场迁移,核心驱动力正是 Node.js 的 async/await 模型与 Agent 的并发工具调用天然契合。
下图刻画一个生产级 TS Agent 系统六层职责如何分工,以及请求如何在层间流动:
flowchart TB
subgraph FE["前端层 (CopilotKit)"]
U[用户] --> CHAT[useChat React 运行时]
CHAT -->|流式 token/工具中间态| U
end
subgraph AGENT["Agent 编排层"]
MA[Mastra Agent]
VA[VoltAgent supervisor]
LC[LangGraph.js StateGraph]
end
subgraph ORCH["持久化执行层 (Inngest)"]
STEP1[step: plan] --> STEP2[step: fan-out tools]
STEP2 --> STEP3[step: synthesize]
end
subgraph SDK["通用 AI 层 (Vercel AI SDK 6)"]
GT[generateText/streamText]
TOOLS[tool 调用循环]
end
subgraph EXT["外部能力"]
LLM[Anthropic/OpenAI/Gemini]
MCP[MCP Servers]
DB[(向量库/记忆 LibSQL)]
OTel[OTel/VoltOps/Langfuse]
end
CHAT -->|CoAgents| AGENT
AGENT -->|长链路任务| ORCH
AGENT -->|模型调用| SDK
ORCH -->|模型调用| SDK
SDK --> LLM
AGENT -.工具.-> MCP
AGENT -.读写.-> DB
AGENT -.trace.-> OTel
SDK -.trace.-> OTel
关键边界:前端层只管交互和 HITL,编排层只管 Agent 逻辑和工具,持久化层只管可恢复执行,AI SDK 只管模型适配。这四层解耦是 TS 阵营相对 Python"一栈包圆"的真正工程优势——每一层都能独立替换、独立扩缩容。
无论哪一栈,核心都是"模型决策 → 工具执行 → 回填上下文 → 再决策"的循环。TS 的统一范式如下,差异只在谁托管这个 loop、校验到哪一层:
sequenceDiagram
participant U as 用户/前端
participant A as Agent 编排
participant S as AI SDK
participant M as LLM
participant T as 工具/MCP
U->>A: 自然语言请求
A->>S: generateText(prompt, tools)
S->>M: 推理 + 工具决策
M-->>S: tool_call(参数)
S->>A: 请求执行工具
A->>T: execute(inputSchema 校验)
T-->>A: 结果(outputSchema 校验? 仅 Mastra)
A->>S: 回填工具结果
S->>M: 带结果的下一轮推理
M-->>S: 终止/继续
S-->>A: 最终文本 + trace
A-->>U: 流式响应
这张图揭示了校验深度的选型红线:Mastra 在工具出口多一道护栏(outputSchema),VoltAgent/AI SDK/LangGraph 只校验入口。如果你的工具对接不稳定数据源(爬虫、第三方 API、易迁移的数据库),Mastra 的双校验是实打实的生产安全网;如果是稳定内部服务,那道护栏就是多余的样板。
场景 A:客服/数据查询类短链路 Agent(< 1 分钟)
首选 Vercel AI SDK 6 直接写。loop 自管 maxSteps,无记忆无工作流开销,冷启动最低,部署到 Workers 最划算。当你发现要重复实现记忆和 trace 时,再升级到 Mastra。
场景 B:生产级全栈 Agent(需记忆 + 工作流 + 可观测) 首选 Mastra。outputSchema 护栏 + workflow 引擎 + OTel 接你现有栈,社区和集成在 TS 阵营最厚。已有 Langfuse/Datadog 的团队摩擦最小。这是"最安全的默认值"。
场景 C:层级化多智能体 + 想要托管可观测 首选 VoltAgent。supervisor/subAgent 一行接好、VoltOps Console 开箱即用,小团队不必自建 trace 基础设施。锁死版本以应对破坏性变更。
场景 D:面向用户的产品型 Copilot CopilotKit(前端)+ 你最强的后端 Agent 框架(可 Python LangGraph)。核心智能复用 Python 生态,交互层和 HITL 用 TS 统一治理。这是企业 B 端最赚钱的组合。
场景 E:长程研究/批处理 Agent(分钟到小时级) Mastra 写逻辑 + Inngest 跑执行,或 VoltAgent + Inngest。任何会中途失败、需要限流重试、需要 fan-out 并发的链路,持久化执行是刚需,不是锦上添花。
场景 F:复杂状态图多智能体,且团队 Python 经验深厚 继续 LangGraph(Python)。TS 第二极还没到能正面替代 Python 在状态图表达力和评测生态上的程度——认清边界,别为了用 TS 而用 TS。
TS 第二极的崛起不是零和博弈,而是市场分层:Python 继续统治研究、评测、复杂状态图和生态纵深;TS 吃下前端、Edge、全栈单语言和持久化执行这四片新地。对选型者而言,红线只有两条——你的 Agent 是前端密集型或 Edge 部署吗?你的团队是全栈 TS 吗? 任一为是,TS 阵营值得优先评估;都为否,Python 第一极仍是更省力的选择。避免用"哪家营销更酷"来决定——六栈营销都做得很漂亮,真正决定适配度的是你花一个下午在两个候选里各跑一遍最小实现,一小时内你的大脑会告诉你答案。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
