靠读工具调用 API 去挑一个 TypeScript 智能体框架,你几乎学不到任何东西,因为这四家在这件事上是一致的:带类型的工具、一个循环、流式、MCP。它们真正替你做掉的决定是:当 HTTP 请求结束时,一趟跑到一半的运行会怎么样——用户关掉了标签页、无服务器函数撞上了上限、你发了一次版。这是一根轴,它替你选了数据库,也选了部署目标;而在这一页上,它是日后最贵的一次反悔。
先看全貌
四者截至 2026 年 9 月 20 日均为在维护状态;版本与日期两列取自当天的 npm registry。
| 项目 | 最新稳定版 | 许可证 | 请求结束后运行活在哪 |
|---|---|---|---|
AI SDK(ai) |
7.0.107——2026-09-18 | Apache 2.0 | 哪里都不活,除非你另加一个持久化运行时 |
Mastra(@mastra/core) |
1.67.0——2026-09-15 | 核心 Apache 2.0,EE 目录为源码可见 | 它自家存储里的一份快照 |
LangGraph.js(@langchain/langgraph) |
1.4.16——2026-09-18 | MIT | 每个 superstep 一个检查点,落在你自己的库里 |
VoltAgent(@voltagent/core) |
2.10.0——2026-08-27 | MIT | 一个被挂起的工作流,加上持久化记忆 |
在进入功能对比之前,这张图是最值得先记住的一个数字。AI SDK 大约每天发两个半稳定版;VoltAgent 大约每两周发一个。两者都没错——它们只是与你的 lockfile 签了不同的合同。跑得这么快的库,你应该藏在自己的一层薄封装后面去消费;跑得慢的库,你可能得等它处理你提的那个 issue。
AI SDK——最好的原语,而且刻意不做运行时
它是什么
一层与厂商无关的模型接口,加上 TypeScript 生态多数人用来渲染的流式 UI 层,月下载量两千万以上。版本 6 加入了像样的 Agent 抽象、工具执行审批、DevTools 与完整的 MCP 支持,把大家原本手搓的那部分补齐了。版本 7 是当前版。
那道缝
以上一切都发生在一次请求内部。SDK 自己的疑难解答文档给出了本页上对这个问题最锋利的一句表述:在启用可恢复流的情况下,客户端的 abort 会被当成断连,于是调用 stop() 并不会停止生成——它会重新连回去。关掉标签页和按下「停止」在线缆上产生的字节是一样的,SDK 分不出来;于是文档教你另建一个停止端点,去持久化已生成的部分、取消正在进行的工作、清掉活跃流。
这不是什么该觉得难堪的 bug;这就是往一个「以请求为作用域」的设计里加持久化时会发生的事。Vercel 给出的答案是把循环搬到持久化运行时上:AI SDK 7 的 WorkflowAgent——Workflow SDK 中 DurableAgent 的继任者——把每一次工具调用变成可重试的工作流步骤,并带上工具审批与 OpenTelemetry。它管用;而这也意味着,对 AI SDK 最诚实的描述是:一层模型与 UI 库,在你接受第二个产品之后才成为智能体框架。
Mastra——一体化的那一套,也是许可证需要细读的那一个
它是什么
TypeScript 世界里最完整的单一厂商答案:智能体、带 .then() / .branch() / .parallel() 的图式工作流构建器、记忆、RAG、跨数十家厂商的模型路由、作为一等原语的评测,以及一套可观测性 UI。它在 2026 年 1 月到达 1.0,GitHub 上 28.2k 星,融资累计约 3500 万美元(含一轮 2200 万美元的 A 轮)——这在这里只有一层相关性:一个背后挂着托管产品的框架,对「你的状态放在哪」是有商业利益的。
那道缝
Mastra 的持久化是一份快照。把工作流挂起——等人工审批或等一个外部事件——它就会写下一条记录,内含 run id、输入、每一步的状态、挂起与恢复的载荷以及最终输出,存进默认为 libSQL、也可换成 Postgres 或 Upstash 的存储里。智能体记忆共用同一套存储。由此带来的设计后果很舒服,值得直说:你能拿到持久化的智能体,而不必接受一个工作流引擎——因为 Mastra 本身就是那个工作流引擎。
下决心之前要查两件事。第一,许可证并非清一色 Apache 2.0——企业版目录是源码可见的,用于生产需要授权,所以在某个能力变成承重结构之前,先搞清它落在哪一侧。第二,让它用起来舒服的那种整合度,也让它成为四者中最难离开的一个:你的评测、trace、记忆模式与工作流定义,全都长在它的词汇表里。这正是本站在退出一个托管智能体运行时里推敲过的那笔经典交易——而它对「开源框架 + 云产品」的适用程度,一点不比对闭源产品低。
LangGraph.js——持久化模型本身就是产品
它是什么
一个低层编排库:状态图、条件边,以及一个在每个 superstep 都持久化状态的 checkpointer——正因如此,「中断并恢复」、时间回溯与人在环中的状态编辑是自然掉出来的,而不是外挂上去的。checkpointer 覆盖内存、SQLite、Postgres、Redis 与 MongoDB。Python 版与 JavaScript 版都在 2025 年 10 月进入 1.0 GA。
那道缝
没有缝,而这正是重点——持久化不是你加的一层,它就是执行模型。代价付在别处。图逼着你在还不知道控制流长什么样之前就先把它写明确;而 JS 版所在生态的重心在 Python:langgraphjs 仓库 3.3k 星,而它的 Python 同胞要大一个数量级,你将来会搜到的集成、示例与文章也多半先落在 Python 那边。核心原语是对齐的;周围的引力不是。
什么时候选它:当你的控制流确实是一张带环与审批的图、当已有一个说 LangGraph 的 Python 服务作为事实源、或者当你想要持久化却不想接受任何人的运行时——一个 checkpointer 不过是你本就在跑的数据库里的一张表。至于「推理图底下什么时候需要一个持久化运行时」,更深的处理在持久化执行:LangGraph 加 Temporal。
VoltAgent——框架是它较小的那一半
它是什么
一个 MIT 许可的核心:带类型的智能体、工具、记忆、一个支持挂起/恢复的声明式工作流引擎、持久化记忆适配器与可恢复流——外加 VoltOps,一个提供 trace、仪表盘、记忆检视、评测套件与提示管理的控制台,可托管亦可自部署。10.6k 星,是这里社区最小、也最年轻的一个:@voltagent/core 今年进入 2.x,3.0 在预发布中。
那道缝
VoltAgent 押的是:智能体工作中昂贵的部分不是那个循环,而是看清循环内部;而你不该为此再买一家可观测性厂商。如果你本来就要在框架旁边立一套 tracing 产品,那么从一个依赖里同时拿到两者是实打实的节省,也确实少接很多线——替代方案的横评在Langfuse、LangSmith、Phoenix 与 Braintrust。
另一边的砝码是那张节奏图。九十天五个稳定版,对比 Mastra 的 26 个、AI SDK 的 230 个,这是一个维护面更小的项目的轮廓——如果你锁版本,请把它读作稳定;如果你在一个什么都没发的星期里撞上厂商侧的 bug,请把它读作你自己得打补丁。它也是四者中价值最集中于第一方控制台的那个,因此该问的那句诚实问题是退出问题:如果 VoltOps 消失了,你手里还剩多少智能体?
把那根轴摆在一起看
把四者放在一起读,它们就不再像竞品了。AI SDK 默认什么都不持久化,把持久化推给一个配套运行时,这让它的核心保持很小,也让它的上手曲线最平缓;LangGraph.js 按 superstep 持久化到你本来就拥有的数据库里,这是最可移植的答案,也是对「控制流该怎么写」最有主张的一个;Mastra 把快照存进它托管的存储,这让每行代码买到的能力最多,也让最多的东西集中在一家厂商的词汇表里;VoltAgent 持久化工作流挂起与记忆,然后把差异化预算花在控制台上,而不是花在循环上。
同样的排序也出现在记忆上。四者中有三个自带带适配器与模式的记忆子系统;AI SDK 只带消息状态,其余要你自备——这正是 AI SDK 团队最后会去拼装别家已经包含的那些东西的原因,也是拼装完之后你手里其实是一个更差版本的 Mastra 的原因。要判断这笔交易对你划不划算,合适的去处是记忆层横评。
有一条告诫对四者一视同仁:没有哪一个能单凭自己让一个长跑的智能体可以安全地重新部署。检查点或快照恢复的是状态;它并不保证一个已经发出去的工具调用不会在恢复时再发一次。那是一份你要在工具边界上写下来的幂等合同,也是团队真金白银栽跟头的那道缝——见幂等与重试与持久化状态与可恢复性。
什么时候选哪个
| 情形 | 选 | 因为 | 要当心 |
|---|---|---|---|
| 聊天 UI、流式、一次请求内跑完 | 只用 AI SDK | 能跑起来的最小那个;流式手感最好 | 一旦加上可恢复流,「停止」与掉线就分不开了 |
| 长跑、审批、活得比一次请求久的任务 | Mastra,或 AI SDK + WorkflowAgent | 「挂起」是一等状态,而不是一条异常路径 | Mastra 的 EE 目录;Vercel 的运行时是第二个依赖 |
| 控制流确实是显式的图,或已有 Python 事实源 | LangGraph.js | 检查点落在你自己的数据库里;可移植 | 生态引力先照顾 Python |
| 否则你本来就要单独买 tracing 与评测 | VoltAgent | 控制台自带、可自部署、核心 MIT | 发版节奏最慢;价值集中在 VoltOps |
在比 API 之前,先写下你的智能体将来会跑的最长那个任务,以及如果进程在中途死掉、有哪些事必须仍然成立。如果答案是「用户重试一次」,那就拿 AI SDK,别往下读了。如果答案里出现了一个不能重复的副作用、或一个必须点头的人,那你要买的是一个持久化模型——框架这个问题在它的下游。
常见问题
2026 年,多数团队该从哪个 TypeScript 智能体框架起步?
AI SDK,除非你的运行会活得比一次请求久。它是最小的依赖,它握着流式这一端,而其他几家都与它互通。等你发现自己在手写检查点表的时候,再转去 Mastra 或 LangGraph.js。
Vercel AI SDK 算不算一个智能体框架?
从版本 6 起它有了 Agent 抽象、工具审批与 MCP 支持,所以对「一次请求内的智能体」而言算。对持久、可恢复、长跑的智能体,它依赖一个配套运行时——AI SDK 7 的 WorkflowAgent 跑在 Workflow SDK 上——那是你要额外采纳并运维的第二个产品。
LangGraph.js 与 Python 版 LangGraph 对齐了吗?
核心原语——状态图、条件边、checkpointer、流式、人在环中——是对齐的,两者都在 2025 年 10 月进入 1.0 GA。没对齐的是引力:JS 仓库的星数小一个数量级,集成与示例也往往先落在 Python 那边。
Mastra 是完全开源的吗?
核心是 Apache 2.0,但仓库是双许可:企业版目录为源码可见,用于生产需要授权。在往上盖东西之前,先确认你要用的能力落在哪一侧。
相比「一个框架加一家 tracing 厂商」,VoltAgent 多给了什么?
一个依赖而不是两个,以及一套你可以自部署的控制台。如果你本来就打算买可观测性,那接线上的节省是实在的。代价是更小的社区,以及四者中最慢的发版节奏。
有了检查点,我的智能体就能安全重新部署了吗?
不能。它恢复的是状态;它并不会让一个已经发出去的工具调用在恢复时变得幂等。无论你选四者中的哪一个,这份合同都长在你的工具边界上。
延伸阅读
本站条目:
- Pydantic AI、Agno、smolagents 与 Strands——同一个问题在 Python 里的样子。
- Spring AI、LangChain4j、Eino 与 Rig——以及在 JVM 与 Rust 里的样子。
- 持久化执行:LangGraph 加 Temporal——当推理图底下需要一个运行时时的那个模式。
- 持久化状态与可恢复性——什么必须留存,什么可以重算。
- 智能体框架——这个选择的概念层版本。