<!-- title: TS Agent六栈实测：挑战Python霸权 -->

# TS Agent六栈实测：第二极崛起与选型红线

## 概述

过去三年，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：把"工具输出也校验"做成护城河

Mastra 出自 Gatsby 核心团队，最大的心智模型差异是**把 Agent 当作一等公民对象，声明一次到处复用**。它的 `createTool` 同时接受 `inputSchema` 和 `outputSchema`——这是六栈里唯一对工具返回值做 Zod 校验的框架。表面看只是多写几行，实际消除的是一类"数据库迁移改了字段名，垃圾数据悄悄流回模型"的生产事故。

工具定义的精髓在于边界防御：

```ts
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：可观测优先，supervisor 一行接好

VoltAgent 同样有顶层 `Agent` 类，但它围绕一个中心化的 `VoltAgent` 运行时构建——注册即启动，默认在 `localhost:3141` 暴露本地服务，再把运行时指向托管的 **VoltOps Console**（`console.voltagent.dev`）。体验接近"给运行中的进程挂调试器"，而不是"事后翻日志"。这是它与 Mastra 最实际的分野：**开箱即用的生产级 trace，不用自己搭基础设施**。

工具 API 更精简，只有单个 `parameters` schema，校验来自 LLM 的输入，但**信任 `execute` 的返回值**——比 Mastra 少一道护栏，迭代时也更少样板：

```ts
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 6：不做框架，做所有框架的地基

Vercel AI SDK 自我定位是"通用 AI 层"——`generateText`、`streamText`、`generateObject`、`useChat` 这些原语，是上面 Mastra、VoltAgent 调用模型的底层适配器（两者都用 `@ai-sdk/anthropic`）。v5 引入 `Agent` 类处理多步工具调用循环，v6 进一步重构了 `useChat` 和工具流式协议、provider 适配。它的哲学是**不给你 Agent 运行时，只给你最锋利的积木**。

```ts
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: '查一下 ada@example.com 的状态',
})
```

实测中它是**打包最小、冷启动最低**的选择——当你只需要"一次 LLM 调用 + 几个工具"，或部署到 Cloudflare Workers 这种对冷启动极度敏感的 Edge，直接用 AI SDK 比套框架更划算。代价是你得自己实现记忆、工作流、多智能体编排。它的另一杀手锏是**前端流式 UI**：`useChat` 让 React/Svelte/Vue 组件能逐 token 渲染、渲染工具调用中间态，这是 Python 框架结构上做不到的（它们压根不在前端跑）。变现上它太底层，不适合做训练营主线，但适合做"模型路由降本"这类专题——很多团队选框架为省 token，真正的大杠杆其实是把简单查询路由到便宜模型。

### 四、CopilotKit：把 React 变成 Agent 的运行时

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 框架的质量；选它等于同时为两套栈负责。

### 五、Inngest Agent Kit：把"会中途失败"变成可恢复

长程 Agent 的头号敌人是中途崩溃：LLM 限流、工具超时、上下文超窗、第 8 步挂了前 7 步白跑。Inngest 的解法是**持久化执行（durable execution）**——把 Agent 运行拆成可重放的步骤，每步有独立重试、并发控制和检查点。它的 Agent Kit 让"规划子查询 → 并行 fan-out 工具调用 → 暂停等外部事件 → 汇总"这种长链路变得安全。

```ts
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 分钟、单轮），上持久化执行是过度工程。

### 六、LangGraph.js 与 Python 第一极的防御战

必须正面对手。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 系统架构与工作流

下图刻画一个生产级 TS Agent 系统六层职责如何分工，以及请求如何在层间流动：

```mermaid
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"一栈包圆"的真正工程优势——每一层都能独立替换、独立扩缩容。

## 工具调用 Loop 的 TS 范式

无论哪一栈，核心都是"模型决策 → 工具执行 → 回填上下文 → 再决策"的循环。TS 的统一范式如下，差异只在谁托管这个 loop、校验到哪一层：

```mermaid
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 第一极仍是更省力的选择。避免用"哪家营销更酷"来决定——六栈营销都做得很漂亮，真正决定适配度的是你花一个下午在两个候选里各跑一遍最小实现，一小时内你的大脑会告诉你答案。

## 参考来源

1. [Mastra vs VoltAgent: The Two New TypeScript Agent Frameworks Compared](https://vadimall.com/posts/mastra-vs-voltagent-typescript-agent-frameworks) — 同一 Agent 在两栈实装，含 outputSchema、冷启动、打包体积实测与代码
2. [Best AI Agent Frameworks for TypeScript in 2026 | Fastio](https://fast.io/resources/best-ai-agent-frameworks-for-typescript-2026/) — Mastra / Vercel AI SDK / LangGraph.js 等主流 TS 框架横向对比
3. [TypeScript Rising: Replacing Python in Multi-Agent AI Systems](https://visiononedge.com/typescript-replacing-python-in-multiagent-systems/) — TS 在多智能体系统取代 Python 的迁移趋势与 async/await 动因分析
4. [Vercel AI SDK 官方文档 — Universal AI layer for frameworks and agents](https://ai-sdk.dev/) — generateText/streamText/Agent 类与 provider 适配的权威说明
5. [Durable Execution for AI Agents: Inngest vs Trigger.dev vs Temporal in 2026](https://noqta.tn/en/blog/durable-execution-ai-agents-inngest-trigger-temporal-2026) — 持久化执行三栈在 Agent 中途失败、限流、重试场景的工程对比

> [!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 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
