
Mastra + Vercel AI SDK + 裝置端 GGUF:無 API 成本的 TypeScript 行動代理堆疊
TypeScript 優先的行動建構者不必使用 Python 代理框架。Mastra 與 Vercel AI SDK 加上透過 llama.cpp 在裝置端執行的微調 4B 模型,產生具有零按 token 成本的完整代理堆疊。
更新於 2026-05-10 — 反映本指南撰寫後 5 月初的 Mastra 釋出。5 月 1 日的釋出加入了新的 ChannelProvider 架構、具 OAuth 的 Slack provider、
@mastra/nestjs轉接器,以及 Google Drive WorkspaceFilesystem;5 月 4 日的釋出加入了基於關係的 FGA 授權、排程的 cron 工作流程,以及用於端到端瀏覽器自動化的新@mastra/browser-viewer。這些都不改變下方的裝置端微調模型模式——它們擴展了周圍的平台。
2026 年大多數代理框架論述仍假設 Python。LangGraph、CrewAI、AutoGen、Pydantic AI——典範參考都活在 Python 生態系。對於後端工程師與 ML 從業者,那是合理的預設。對於出貨 React Native、Expo 或混合 Capacitor app 的行動 app 建構者,那是錯的語言。TypeScript 程式碼庫不該需要 Python 旁路服務來執行代理。
TypeScript 生態系現在有兩個解決這個的優秀代理框架。Mastra 跨越 22,000 顆 GitHub 星並於 2026 年 1 月出貨 1.0。Vercel AI SDK 近兩年來一直是事實上的串流優先工具包,現在支援以 TypeScript 撰寫的所有正式上線 LLM app 中有意義的一部分。兩者都與自託管模型乾淨運作、兩者都圍繞邊緣原生部署設計,且兩者都與在裝置端執行的微調 4B 模型異常契合。
本指南走過完整的 TypeScript 原生行動代理堆疊:Mastra 用於編排、Vercel AI SDK 用於推論、Ertas 訓練的 Qwen3-4B 或 Gemma 4 E4B 模型匯出為 GGUF,以及 Ertas Deployment CLI 將其出貨進 React Native app。端到端,堆疊在初始訓練步驟後從不呼叫託管 API。
兩個 TypeScript 框架,簡介
Mastra 是較高層的選項。它在一個內建電池的套件中給你型別化代理定義、宣告式工作流程、耐久記憶、評估與 RAG 原語。工具定義是慣用 TypeScript 並搭配 Zod schema。工作流程是 step-based DAG,在程序重啟下存活。記憶與評估整合不需額外膠水。當你想要為 JavaScript 執行期塑造的完整代理平台時,Mastra 是你伸手取的。
Vercel AI SDK 是較低層的選項。它暴露串流原語、透過 Zod 的結構化輸出,以及超過 90 個模型 provider 的通用 provider 抽象——Anthropic、OpenAI、Google、Mistral、Cohere,加上 Ollama 與 llama.cpp 等自託管 runner。SDK 也是 Mastra 用於推論呼叫的對象。所以實務上你不在一個或另一個之間選擇:Mastra 給你編排層、Vercel AI SDK 給你推論層,微調本地模型給你成本結構。
這個組合是 TypeScript 對 Python 開發者整年建構的 Pydantic AI 加 Ollama 故事最接近的東西——但原生於行動建構者已使用的執行期。
我們要建構什麼
範例代理是 React Native 健身 app 的健身計畫者。代理讀取自然語言請求、選擇正確工具,並產生經驗證的計畫。它有三個工具:
get_user_profile()回傳使用者的年齡、體重、訓練歷史find_recent_workouts(limit: number)將最近 N 個訓練作為結構化記錄回傳propose_workout(focus: string, duration_min: number, difficulty: string)產生結構化的訓練計畫
輸出是 WorkoutPlan Zod 物件。Mastra 對 schema 驗證每個輸出。工具呼叫對其輸入 schema 驗證。整個代理在使用者手機內執行,除可選的遙測外無網路呼叫。
這正是在前沿 API 上會迅速變昂貴的代理。每天記錄兩次訓練的使用者每次工作階段產生四到六次代理呼叫,多輪,具非平凡脈絡。在 10,000 月活躍使用者時,你在推論上花的錢比託管多。