开发与工程 typescript-sdkstreaming-chatfunction-callingstructured-outputmultimodalrealtime-voiceprovider-adaptersobservability

TanStack AI

用一套类型安全接口构建跨模型的流式聊天、工具调用与多模态应用。

FollowAgents 评估 · FARS-2.1
谨慎使用
为什么不是更高等级:信任与安全维度为 16/29,未达「推荐」所需的 18/29,按「风险不做平均」下调推荐等级。
76/ 100 五分制 3.8 / 5
1 2 3 4 5 6
1信任安全16 / 29 · 2.8/5

工作流使用只读 contents 权限、关闭持久化凭据并以提交散列固定第三方 Actions;Code Mode 声称使用隔离沙箱,ACP 测试也展示了沙箱边界。扣分在于 SDK 可调用外部模型、工具、本地进程及媒体服务,而所给文件未完整说明运行时最小权限、网络范围或默认工具授权;工具审批只有文档链接。提供商和可观测性路径较清楚,但没有 API 密钥、日志脱敏、提示内容保留或敏感数据处理政策。ACP 对不可恢复的 attach 会拒绝,并提示重复执行和双重追加风险,但框架整体没有通用回滚机制。仓库、包名、MIT 著作权人和社区渠道可追溯,不过维护主体及发布身份未被企业注册表验证,因此不作负面推断,也不视为充分组织身份保证。

2可靠稳定12 / 14 · 4.3/5

README、包脚本、工作流和 ACP 测试对流式事件、会话恢复、协议协商、runId 与耐久性限制的描述高度一致,故自洽性满分。多提供商及 Ollama 本地选项降低单一依赖风险,但实际功能仍依赖 npm 包、模型供应商、运行时和外部服务,且来源未展示离线降级全貌。失败消息证据很强:配置错误、协议版本错误及不支持 attach 均有明确且可操作的说明,并区分可重试与非瞬态条件。

3适用触发15 / 18 · 4.2/5

材料明确覆盖 React、Vue、Svelte、Solid、Preact、无头客户端、纯服务端、实时、多媒体及多提供商场景,受众和环境适配充分。能力边界部分明确,例如 ACP 尚不写 journal、Bun 驱动需要特定运行时,但这些限制主要出现在测试注释而非顶层说明。工具 schema、客户端/服务端实现和审批流程表明触发接口较精确,但审批文档正文和实际策略未提供,因此不能满分。

4规范维护14 / 18 · 3.9/5

README 的开始路径、能力分类、提供商表、框架表和高级文档导航结构清晰。安装命令实用,但缺少密钥配置、运行时版本及生产部署的完整就地说明。包命名一致且采用 changesets/release 流程,不过大量活动和适配器显示接口仍可能演进,所给材料没有兼容性承诺。示例覆盖聊天、工具和结构化输出,但没有随附 FAQ;已知限制有测试级证据,却没有集中限制章节。MIT 文本完整,故许可满分。维护渠道、贡献入口和自动维护脚本存在,但未明确列出责任人、响应承诺或安全更新路径。

5有效结果12 / 13 · 4.6/5

流式事件、类型化工具、结构化输出、多模态和框架绑定直接产出可供应用消费的结果,输出可用性证据充分。统一的 provider/activity 抽象、运行时切换、Code Mode 和可观测性相较基础模型 SDK 提供明显增量价值。树摇、按需包和 OpenRouter 成本跟踪有助于控制成本,但未给出性能、费用、延迟或运维负担的量化数据,因此成本效益不满分。

6证据核验7 / 8 · 4.4/5

核心能力可追溯到具体 README 示例、package 脚本、固定版本工作流及针对 ACP 行为的细粒度测试;多类文件相互印证配置验证、协议协商、沙箱执行、事件输出和耐久性限制,因此追溯性与交叉佐证充分。扣分在于部分广泛能力、隔离安全性和奖项属于概述或外链声明,当前材料未提供对应实现或独立证据;测试源码只能证明测试意图,不能证明本次修订实际执行通过。

证据充分度: 评估于 2026年8月16日 审查版本 0fb826321c9b
上游仓库在本次评估后已有新提交;当前评分仍对应所示审查版本,可能尚未覆盖最新改动。
使用前请注意
  • ACP 兼容适配器目前不写 journal;在耐久 attach 场景会拒绝操作,新耐久运行也明确不可在之后恢复。
  • Code Mode 和本地进程适配器可执行生成代码或命令;部署者应自行限制文件系统、网络、凭据和工具权限,并设置明确审批边界。
  • 所给材料没有说明 API 密钥保护、提示与媒体数据保留、日志脱敏或供应商数据政策,处理敏感数据前需单独审查。
  • 本评估仅基于所给静态文件;未执行测试,也未验证外链文档、奖项、发布物或依赖漏洞状态。
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

TanStack AI 是一个类型安全、供应商无关的 TypeScript SDK,而不是可直接部署的成品智能体。其核心由可组合的活动、供应商适配器、无头客户端以及 React、Solid、Vue、Svelte 和 Preact 框架绑定组成。服务端可通过 chat() 调用模型,并用 toServerSentEventsResponse() 输出流式响应;工具则通过共享的 toolDefinition() 契约在服务端或客户端执行。它还覆盖结构化输出、图像与音视频生成、语音和转录、实时语音、摘要,以及可在隔离沙箱中执行 TypeScript 的 Code Mode。部署边界由采用者决定:它可以嵌入服务器端点、脚本、后端服务或框架应用,但仍需选择相应的模型供应商适配器并提供其服务凭据。

应用把消息交给 chat(),并用 openaiText() 等活动级适配器选择模型;流式结果可经 toServerSentEventsResponse() 返回给客户端。开发者可用 toolDefinition() 声明名称、描述、输入模式和输出模式,再绑定 server() 或客户端实现,使工具调用沿用同一套类型。outputSchema 可使用 JSON Schema、Zod、ArkType 或 Valibot,把自由文本生成约束为类型化对象。@tanstack/ai-client 负责无头聊天、实时和生成客户端,@tanstack/ai-react、@tanstack/ai-solid、@tanstack/ai-vue、@tanstack/ai-svelte 与 @tanstack/ai-preact 提供各框架接口。供应商适配器可调用 OpenAI、Anthropic、Gemini、OpenRouter、Ollama、Grok、Groq、ElevenLabs、BytePlus 和 fal.ai 所支持的活动,并产生文本、结构化对象、工具结果、图像、音频、视频、语音、转录或摘要。Code Mode 允许模型在隔离沙箱中编写并执行 TypeScript,以循环、分支和并行调用组织工具;可观测性管线还能检查消息、流片段、工具调用、错误、用量与 OpenTelemetry 追踪。

  1. TypeScript 后端团队需要在一个服务器端点中提供流式聊天,并希望将模型响应转换为 Server-Sent Events。
  2. React、Vue、Svelte、Solid 或 Preact 团队需要框架原生的聊天或生成接口,同时把模型调用保留在自己的应用架构内。
  3. 产品团队需要让同一个类型化工具定义在服务器或客户端执行,并明确校验输入与输出。
  4. 需要在 OpenAI、Anthropic、Gemini、OpenRouter或本地 Ollama之间切换的团队,可通过供应商适配器减少核心业务代码与单一模型服务的耦合。
  5. 需要可靠 JSON 结果的应用,可用 Zod、ArkType、Valibot 或 JSON Schema 定义 outputSchema。
  6. 构建实时语音、多媒体生成或复杂工具编排的团队,可分别采用 realtime、generations 或 Code Mode 能力。

这个 Agent 有哪些优点和局限?

优点
  • 供应商适配层覆盖 OpenAI、Anthropic、Gemini、OpenRouter、Ollama 等多种路径,并明确支持运行时切换适配器。
  • toolDefinition() 让客户端与服务端实现共享输入、输出和工具契约,减少工具调用边界上的类型漂移。
  • 活动级导入支持 tree-shaking,可只引入文本、图像、视频或语音等实际使用的能力。
  • 除聊天外还统一覆盖结构化输出、实时语音、多媒体生成、Code Mode、开发工具和 OpenTelemetry 可观测性。
  • 提供无头客户端和多个主流前端框架的原生绑定,便于嵌入现有 TypeScript 应用。
局限
  • 它是开发 SDK,不是开箱即用的托管智能体;采用者仍须实现应用、端点、工具逻辑、界面和部署。
  • 实际运行依赖所选供应商或本地模型环境;不同适配器支持的聊天、图像、视频、语音和实时能力并不完全相同。
  • 安装会随用例涉及多个包,例如核心、客户端、框架绑定和供应商适配器,需要自行管理版本与集成边界。
  • Code Mode 会执行模型生成的 TypeScript,虽然资料称其位于隔离沙箱,但未给出沙箱部署、权限或资源限制细节。
  • 给定资料未说明最低运行时版本、生产部署命令、密钥环境变量或各供应商的失败与重试策略。

如何安装或部署这个 Agent?

需要核心包以及至少一个供应商适配器。OpenAI 示例:

pnpm add @tanstack/ai @tanstack/ai-openai

React 聊天界面:

pnpm add @tanstack/ai @tanstack/ai-client @tanstack/ai-react @tanstack/ai-openai

若希望通过一个 API 密钥访问多个供应商,可安装 OpenRouter 适配器:

pnpm add @tanstack/ai @tanstack/ai-openrouter

随后需要为所选供应商准备相应凭据;给定资料仅明确提到 OpenRouter API 密钥,没有提供环境变量名称、最低 Node.js 版本或完整凭据配置步骤。

如何使用这个 Agent?

在服务端路由中解析请求消息,创建聊天流并返回 SSE 响应:

import { chat, toServerSentEventsResponse } from '@tanstack/ai'
import { openaiText } from '@tanstack/ai-openai'
export async function POST(request: Request) {
const body = await request.json()
const stream = chat({

adapter: openaiText('gpt-5.2'),
messages: body.messages,
})

return toServerSentEventsResponse(stream)

}

运行前需按照所选供应商适配器配置服务凭据。若要加入工具,可用 toolDefinition() 声明 inputSchema 与 outputSchema,并通过 .server(async (...) => ...) 绑定实现;若要获得类型化对象,则把 Zod、ArkType、Valibot 或 JSON Schema 传给 chat() 的 outputSchema。

这个 Agent 与同类方案有什么区别?

项目明确提供“TanStack AI vs Vercel AI SDK”比较文档,讨论架构、功能覆盖和取舍;但给定资料未列出具体差异,因此不能据此断言哪一个性能更好、功能更多或迁移成本更低。

常见问题

它是可以直接运行的自主智能体吗?
不是。它是用于构建聊天、工具调用智能体、结构化输出、实时语音和多模态应用的 TypeScript SDK;应用逻辑、工具实现和部署由采用者提供。
是否被 OpenAI 锁定?
否。它提供 OpenAI、Anthropic、Gemini、OpenRouter、Ollama 等适配器,并记录了运行时切换适配器的能力;不过每家供应商支持的活动范围可能不同。
使用成本由谁决定?
资料没有给出 TanStack AI 的托管价格。模型调用成本取决于所选供应商;OpenRouter 适配器明确提供按请求成本追踪。
工具可以访问哪些系统?
工具只会执行开发者通过 toolDefinition() 绑定的服务端或客户端实现。具体数据库、文件、网络和其他权限由该实现及其运行环境决定。
如何调查流式或工具调用故障?
项目提供开发工具和可观测性管线,可检查消息、工具调用、流片段、错误与用量,并可输出 OpenTelemetry 追踪。资料未规定具体的重试策略。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents