开一家餐厅,最理想的起步不是从毛坯房开始砌墙,而是租下一间“拎包入住”的后厨:灶台、冷藏柜、传菜梯、洗碗机全都装好了,你只需要招主厨、写菜单,就能开门接客。今天要聊的 Mastra,正是 AI 应用世界的这间后厨——一个 TypeScript 原生的 AI Agent 开发框架。 跟我们熟悉的“请人写代码、自己拼模块”的笨办法不同,Mastra 把接单、备菜、出餐这些环节都整理成了模块:主厨(Agent)、记事本(Memory)、传菜动线(Workflow)、厨具柜(Tools)、菜谱库(RAG)。你只需用 TypeScript 像搭积木一样把它们拼在一起,就能得到一个会说话、会查资料、会调用系统工具、还能记住用户口味的 AI 应用。 这篇文章会用一间后厨的视角,把 Mastra 的架构、核心 API、工作流、记忆、工具调用与 RAG、与 LangGraph 的对比以及部署上线,逐一讲清楚。哪怕你之前没写过一行 AI 代码,读完后也能自信地动手搭出第一个 Agent。
对 AI 从业者来说,Mastra 给你一条用 TypeScript 生态快速交付 Agent 应用的捷径:内置工作流、记忆、工具与 RAG,让前端和全栈同学也能在一天内从零做出可上线的 AI 产品。
目录
可视化演示
展示Mastra TypeScript框架的Agent架构、执行时间线与技术栈分层,包含工具组合与工作流。
本节配有交互动效(进入视口后自动加载,约 3KB)。
Mastra Agent架构 Agent核心连接6大工具:搜索/计算/代码/DB/API/记忆 Agent = LLM + Tools + Workflow Mastra以Agent为中心,工具组合驱动工作流执行
框架概览——即开即用的AI后厨
假设你要开一家餐厅,最理想的状态是租下一间“拎包入住”的后厨:灶台、冰箱、传菜梯、洗碗机全部就位,你只需要招一个主厨,把菜谱写清楚,就能开门营业。Mastra 就是 AI 应用世界的这间后厨——它把 Agent 开发中常用的底座能力预装好了,让熟悉 TypeScript 的开发者能快速把想法变成可运行的 AI 应用。
在 Mastra 里,你的 AI 应用由一个或多个 Agent 组成。Agent 就像餐厅里的主厨,负责理解客人需求、指挥备菜、最终出餐。主厨需要工具,比如下单系统、菜品库存查询——这对应 Mastra 的 Tools;主厨需要记住熟客口味——对应 Memory;主厨还要按固定流程走菜——对应 Workflow;遇到不会的菜则翻菜谱——对应 RAG。这五个模块被 Mastra 打包成统一的框架,正是它给出的解决之道。
更关键的是:Mastra 是 TypeScript 原生的。类型安全不是锦上添花,而是在你写错配置、传错参数时,在编译期就把你拦住。比如你在 new Agent({ model, tools, memory }) 里少传了一个工具,IDE 会立刻标红;而传统 Python 项目往往要运行后才会报错。对于已经在用 TS/JS 技术栈的团队,Mastra 的学习成本被降到很低,不需要为了 AI 额外引入一整套 Python 数据科学体系。
你可以把 Mastra 想象成一间“精装后厨”:设备齐全、动线清晰,你要做的就是写清楚菜单(Agent 指令),然后点亮这家餐厅。这正是它与其他“从零拼装”的原生方案最大的不同——不是能不能做,而是能不能做到又快又稳。
- Agent(主厨)AI 应用的核心决策单元,负责理解用户请求并调度资源。
- Workflow(传菜动线)定义各步骤的执行顺序和分支。
- Memory(记事本)保存短期与长期的对话记忆。
- Tools(厨具柜)把外部函数封装成 LLM 可调用的工具。
- RAG(菜谱库)通过检索增强生成,补足私有知识。
架构设计——后厨的三层动线
后厨不是一间大平层,而是分层的:前厅负责接待与传达客人需求,后厨负责烹饪出品,库房负责供货。Mastra 的架构也分了清晰的层次:最上层是“应用层”,由你自己写的代码构成;中间是“核心引擎层”,负责调度、路由、记忆读写;最底层是“Provider 层”,负责对接各个大模型服务商。
应用层就是你写的 Agent 定义、Workflow 配置等业务代码,这也是你唯一需要关心的部分。中间层,核心引擎会读取你的 Agent 配置,决定何时调用模型、何时执行工具、何时读写记忆,并把结果拼装成回复。最底层的 Provider 层把 OpenAI、Anthropic、Google 等厂商的 API 统一成一套接口。换模型时,只要改一行配置,而不是把业务代码重写一遍。
三层之间的解耦带来直接好处:业务代码不依赖任何一家模型厂商。今天用 GPT-4o,明天想换 Claude,只需要改 Provider 配置。同时,核心引擎提供大量可扩展的钩子(hooks),允许你插入自定义 Memory 存储(文件、Redis、数据库)、自定义检索器,像给后厨加装多层货架一样灵活。
三层布局让整个后厨保持运转流畅:前厅只管点餐,后厨只管做菜,仓库只管供货,互不干扰。等你要把餐厅开成连锁店(扩展多个 Agent),也不需要推翻重建——只要在对应层增加配置即可。这种职责边界,正是架构设计的核心价值。
- 应用层(前厅点单)开发者编写业务逻辑和 Agent 定义的地方。
- 核心引擎(后厨调度)负责任务路由、模块调度与状态管理。
- Provider层(供应商仓库)统一封装不同模型厂商 API 的抽象接口。
- LLM(大模型供应商)最终执行文本生成能力的模型服务。
核心API——主厨的任务清单
主厨开工前需要一张“任务清单”:掌勺做什么菜、用什么锅、放什么调料。Mastra 给了你同样的清单——Agent 对象、Tool 对象、Workflow 对象。学会这几个对象,你就掌握了整套 API 的 80%。
最常用的是 new Agent():传入 instructions(系统提示词)、model(LLM 选择)、tools(工具注册表)、memory(记忆存储)。然后调用 agent.generate() 或 agent.stream()。Generate 是“一次性出餐”:等全部结果生成完再给你;Stream 是“边做边传菜”:可以一个 token 一个 token 地流式返回,让用户看到“正在写”的过程。
Tools 的注册也很直观:你定义函数的参数 schema(可以用 zod 做类型校验),Mastra 会自动将这个 schema 发给 LLM,让模型在合适时机“请求调用工具”;执行完成后,结果再回到 Agent 的流程中。所有这些都是声明式的——你描述数据结构,框架替你完成与模型的中间协商。
这几样东西,就是主厨开工前的全部准备。你给 Agent 配好大脑、厨具和记事本,它就能独立应对一整桌复杂的客人需求。越是复杂的 AI 应用,越需要这种结构化配置来避免混乱——否则十几个 prompt 散落在各处,最终无人能维护。
- model(大脑)指定要调用的大模型型号与参数。
- tools(厨具清单)可被 Agent 调用的工具集合。
- memory(记事本)Agent 引用的会话与长期记忆存储配置。
- instructions(菜谱指令)告诉 Agent 身份、目标和行为准则的系统提示。
工作流编排——传菜动线
一家高效的餐厅,传菜动线是精心设计的:凉菜先出,热菜按灶台能力排队,甜品最后。Mastra 的 Workflow 就是把 AI 业务拆成一连串步骤(Step),并规定它们之间的先后顺序与分支。每个 Step 可以是调用一个 LLM、执行一个工具、或跑一段逻辑。
Workflow 的核心概念是 Step 和 Route。Step 是工作流中的一个节点;Route 决定下一步去哪个 Step。比如“判断用户意图”这个 Step,如果结果 travel,就进入查询航班步骤;否则进入推荐酒店步骤。这是典型的条件路由——像后厨根据订单类型决定走哪条加工线。
步骤之间通过状态(state)传递数据。前一步的输出会成为后一步的输入。因为你可以在 Steps 中做异步调用(比如等外部 API 返回),Mastra 会像传菜一样自动等待每一步完成,然后根据路由决定下一步。相对于“一段 prompt 写完所有事”,Workflow 让流程天然可观测、可调试、可回放。
这一设计让“出餐流程”不再是一团浆糊。以前你可能把好几十个决策全塞进一个 prompt;现在你把它拆成明确的传菜路线,每一个环节都能单独测试、单独上线——这正是工程化 AI 应用的关键:把不可解释的“黑盒对话”变成可审计的“流水线”。
- V(节点集合)工作流里全部 Step 节点的集合。
- E(边集合)Step 之间的有向连接关系。
- route(路由函数)根据当前状态 s,从当前节点 v 决定下一节点 v'。
记忆管理——主厨的记事本
好的主厨会记得熟客忌口:张先生不吃香菜、李小姐喜欢微辣。AI Agent 也一样,如果每次对话都“失忆”,体验会像跟一个陌生服务员打交道。Mastra 内置了记忆系统,帮你把“见过的人”和“说过的话”随时带在身边。
Mastra 的记忆分为短期记忆、长期记忆和工作记忆。短期记忆保存当前会话的上下文窗口,通常用于维持对话连贯性;长期记忆把重要信息(用户偏好、历史事实)写入向量数据库,即使重启服务也不会丢;工作记忆则用于 Agent 执行任务时临时保留中间结果,相当于主厨桌上的“出餐备忘卡”。
实现上,Mastra 的长期记忆通常对接向量存储(如 PostgreSQL + pgvector、Pinecone 等),通过嵌入(embedding)把文本向量化后保存。当新对话到来,系统会从向量库中检索与该用户相关的历史片段,把它们塞进上下文,让 Agent“想起来”。这个过程对业务代码几乎透明——你只需要配置一个 Memory 存储,剩下的由框架代劳。
有了记事本,AI 应用就不再是“每次从零开始”的服务员,而是一个能记住老客人喜好的熟手主厨。用户在跟你的 Agent 打交道时,也会明显感到“这个人好像记得我之前说过的话”——这是 AI 应用体验升级的重要分水岭。
- M_t(当前记忆)第 t 轮对话前 Agent 已经积累的记忆集合。
- (u_t, a_t)(新对话对)第 t 轮的用户提问与 AI 回答。
- ∪(取并集)把新对话合并进旧记忆,形成新的记忆状态。
工具调用与RAG——厨具与菜谱库
再厉害的主厨也不能徒手变出食材,他需要厨具来切菜、搅拌、控温。AI Agent 也一样:如果你要做一个可以查实时天气、下订单的助手,就必须让它在合适时使用外部 API——这就是 Mastra 的工具调用能力。
在 Mastra 里,你可以用 tool 函数把一段代码包装成一个“可被 AI 调用的工具”。它需要声明名称、描述、输入参数 schema。当用户问“帮我查一下天气”,LLM 看到工具描述后,会生成一次工具调用,Mastra 在本地执行该函数,再把结果继续交给 LLM 生成最终回复。这个循环是 Agent 理解并操作系统世界的基础。
RAG(检索增强生成)则是“菜谱库”:你有很多外部文档(产品手册、FAQ、内部知识库),它们太大,不能全部塞进 prompt。Mastra 先对文档做切分并向量化存入向量库;用户提问时,它把问题转为向量,检索最相似 K 个片段,将这些片段作为上下文交给 LLM 生成答案。这相当于主厨做一道不熟悉的菜时,先翻到菜谱对应页再动手。
工具让 Agent 有了“手”,RAG 让 Agent 有了“知识库”。两者结合时,一个 Agent 既能查实时数据,又能基于私有文档回答,已经逼近一个“有经验的老员工”的水平。Mastra 把这两条能力做成内置接口,你不用自己去拼接 OpenAI 的 function calling 和向量查询,整个流程在框架里自动完成。
- Embed(q)(问题向量化)把用户的查询文本 q 转成高维向量。
- TopK(检索取前K)在文档库 D 中找出与查询向量最相似的 K 个片段。
- LLM(q, Context)(生成答案)把原始问题和检索片段作为上下文交给大模型。
对比LangGraph——两套厨房的选择
后厨的装修方案不止一种。LangGraph 是 Python 生态里成熟的后厨装修队,而 Mastra 是 TypeScript 生态里的新式精装方案。这两套方案各有拥趸。关键是你自己的后厨(团队技术栈)用哪种更方便。
比较几个维度。语言生态:LangGraph 以 Python 为核心,有非常丰富的 Python ML 生态;Mastra 原生 TypeScript,能直接复用 npm 生态、与前端代码共享类型。内置能力:Mastra 把 Memory、RAG、Workflow 等打包在框架内,开箱即用;LangGraph 更偏“编排引擎”哲学,记忆、向量库往往要通过 LangChain / LangSmith 等组合出来。开发体验:TS 有编译期类型检查,重构时能更早发现错误;Python 上手门槛更低,适合以研究探索为核心的团队。
选型建议是:如果你的团队已经深度依赖 TypeScript / JavaScript(Node 服务端、全栈一体化),Mastra 可以把 Agent 开发接入现有代码库,几乎零额外学习成本;如果你的团队主要是 Python 数据工程出身,并且已经用 LangChain 做过大量开发,那 LangGraph 的生态延续性更合适。两者都是从“节点式编排”起步的架构,不存在绝对优劣。
所以无论选 Mastra 还是 LangGraph,本质上不是“谁更好”,而是“哪个更像为你这支团队量身定做的后厨”。看别人家的菜谱评价只是参考,合不合口味只有自己试过才知道。选完就扎进去做,比反复纠结“站队”更有价值。
- w_1(体验权重)团队对开发体验和类型安全的看重程度。
- w_2(生态权重)对语言生态延续性的看重程度。
- w_3(能力权重)对内置一体化能力的看重程度。
- 加权求和(综合评分)三个维度按权重相加得到最终评分。
部署上线——开业大吉
后厨装修好、试菜完成,最终还是要把餐厅开起来营业。Agent 应用也一样,写完流程、接好工具,下一步就是部署上线。Mastra 的部署方式和普通 Node.js 服务没有本质区别:打包、启动、对外暴露 API——因为它本质就是一个服务端应用。
Mastra 可以本地通过 npx mastra dev 或 Docker 运行,也可以部署到各类云平台。由于框架底层就是 TS/Node,你可以将它接入现有的 Node 部署管道(PM2、Docker Compose、Kubernetes)或 Serverless(如 Vercel、Netlify、AWS Lambda)。部署时要注意 Worker 的启动时长、内存,以及对 OpenAI 等外部 API 的网络出站规则。
上线之后更重要的是监控与降级策略。Agent 依赖外部大模型的稳定性,一旦模型服务抖动,你的应用会直接表现为“变慢”或“报错”。所以你需要:记录每次调用的日志(延迟、token 数、错误码)、对重要流程加超时重试、在模型不可用时给用户一个兜底回复(比如“稍后再试”)。这就是把 Agent 当系统而不是当脚本对待的成熟心态。
开业只是开始,稳定的经营才是目标。用 Mastra 快速上线只是第一步,真正的功力体现在后续的监控、调优、降级设计上。把每一道菜(请求)都做得稳定,这家 AI 餐厅才能长久红火,客人(用户)才会愿意再来。
- T_up(可用时间)服务正常运行、能正确响应用户的累计时长。
- T_total(总时间)一个统计周期内的总时长。
- 求比值(可用比例)可用时间除以总时间。
- 转百分比(可用率)乘以 100 得到百分比形式的可用率。
AI 应用场景
智能客服工单助手
阶段:Agent 自动处理 + 工具调用 + RAG 检索增强
解决的问题:传统客服需要人工翻阅 FAQ、查询订单系统,响应慢且重复劳动多。用 Mastra 构建的客服 Agent,自动判断用户意图、检索私有知识库、调用订单查询 API,把大部分常见问题挡在人工之前。
具体案例:某 SaaS 公司用 Mastra 接入产品文档作为 RAG 知识库,注册“查订单状态”“修改备注”“计算退款金额”三个工具。用户提问后,Agent 自动走“意图识别 → 搜索文档 → 调用工具 → 生成回复”的工作流,一线客服只需要处理 AI 转交的少数复杂工单。
数据分析 Copilot
阶段:工作流编排 + 工具调用
解决的问题:业务人员每天写 SQL 报表、做数据跑批,门槛高且容易出错。Mastra 工作流把“自然语言转 SQL”拆成多步骤流水线,每一步可单独测试和调整,显著提升数据分析的自动化程度。
具体案例:数据团队用 Mastra 构建四步工作流:第一步识别用户意图是查询还是可视化;第二步调用 schema 工具获取库表结构;第三步让 LLM 生成 SQL;第四步执行查询并把结果转成摘要文本。出现错误时,路由会把它送到“改写 SQL”步骤重试,而不是直接失败。
内部知识库问答助手
阶段:RAG + 记忆管理
解决的问题:企业内部知识分散在 Notion、Wiki、飞书文档中,员工查资料费时费力。Mastra 通过 RAG 把多个来源统一接入,再用长期记忆记住不同团队关注的领域,让回答既有依据又有个性。
具体案例:某互联网公司把员工手册、技术规范、运维文档导入向量库,部署一个 Mastra 驱动的问答机器人。员工问“数据库连接串怎么申请”,机器人从文档中检索相关段落并附上原文链接,同时记住该员工所属团队,后续推荐内容更精准。
Python 演示
"""用 Python 模拟 Mastra 风格 Agent 的最小运行时,演示记忆、工具与工作流的协作。""" import json class Tool: def __init__(self, name, handler, description=""): self.name = name self.handler = handler self.description = description def run(self, args): return self.handler(**args) class Memory: def __init__(self, limit=6): self.messages = [] self.limit = limit def add(self, role, content): self.messages.append({"role": role, "content": content}) self.messages = self.messages[-self.limit:] def context(self): return "\n".join(m["content"] for m in self.messages) class WorkflowStep: def __init__(self, name, handler): self.name = name self.handler = handler class MastraLikeAgent: def __init__(self, instructions, memory=None): self.instructions = instructions self.memory = memory or Memory() self.tools = {} self.steps = [] self.routes = {} def register_tool(self, tool): self.tools[tool.name] = tool def add_step(self, step, routes=None): self.steps.append(step) if routes: self.routes[step.name] = routes def run_workflow(self, initial_data): state = dict(initial_data) current = self.steps[0] if self.steps else None while current: out = current.handler(state) state[current.name] = out route_map = self.routes.get(current.name, {}) next_name = route_map.get(out, None) current = next( (s for s in self.steps if s.name == next_name), None ) return state def chat(self, user_input): self.memory.add("user", user_input) context = self.memory.context() tool_names = "、".join(self.tools.keys()) prompt = ( f"{self.instructions}\n用户说:{user_input}\n" f"上下文:{context}\n可用工具:{tool_names}" ) reply = f"[Agent 模拟回复] 已接收“{user_input}”,将结合上下文与工具结果生成答复。" self.memory.add("assistant", reply) return reply def main(): agent = MastraLikeAgent(instructions="你是一个擅长调用工具的客服助手。") agent.register_tool(Tool("查询订单", lambda order_id: {"status": "已发货"}, "按订单号查询状态")) agent.register_tool(Tool("修改备注", lambda order_id, note: {"ok": True}, "修改订单备注")) def first_step(state): state["intent"] = "query" return "query" def second_step(state): ret = agent.tools["查询订单"].run({"order_id": "A123"}) state["order_status"] = ret["status"] return "done" agent.add_step(WorkflowStep("parse", first_step), routes={"query": "fetch"}) agent.add_step(WorkflowStep("fetch", second_step), routes={"done": None}) state = agent.run_workflow({"order_id": "A123"}) print(json.dumps(state, ensure_ascii=False, indent=2)) print(agent.chat("我的订单到哪了?")) if __name__ == "__main__": main()
class MastraLikeAgent:模拟 Mastra 的 Agent 核心类,同时持有工具、记忆和工作流。def register_tool(self, tool):把工具挂到 Agent 上,相当于把厨具挂上工具墙。def add_step(self, step, routes=None):把一个工作流步骤加入执行序列,并声明它的路由表。def run_workflow(self, initial_data):模拟 Mastra 工作流引擎,循环执行直到没有下一步。out = current.handler(state)调用当前步骤的处理函数,得到输出结果。next_name = route_map.get(out, None)根据步骤输出查路由表,决定下一步走哪个节点。current = next((s for s in self.steps if s.name == next_name), None)找到下一个 Step 对象,找不到就结束。self.memory.add("user", user_input)把用户问题写入短期记忆,形成上下文。agent.register_tool(Tool("查询订单", lambda order_id: {"status": "已发货"}, "按订单号查询状态"))注册一个带描述的工具,LLM 可据此决定何时调用。agent.add_step(WorkflowStep("parse", first_step), routes={"query": "fetch"})声明路由:如果第一步返回 query,则进入 fetch 步骤。state = agent.run_workflow({"order_id": "A123"})启动工作流并传入初始状态。
常见误区
误区很多人觉得 Mastra 就是把 OpenAI 的 API 重新封装一下,用起来跟直接调用 SDK 没什么区别,不值得学。
正解套壳只解决了“发请求”这一步。Mastra 还解决了“组合、状态、记忆、路由”这些更复杂的工程问题。相当于一个餐厅不只是有锅,还有完整的动线设计与厨房管理。直接调 SDK 更像一个人冲进厨房手忙脚乱地自己做所有事,而 Mastra 给了你一个能并行做菜的团队。
为何常见:因为对新手来说,一个 agent.generate() 看起来确实跟 SDK 请求很像,看不到背后的工作流引擎、记忆系统和工具注册机制。
误区AI 领域都是 Python 的天下,用 TS 写 Agent 显得不专业,而且很多东西做不了。
正解随着大模型通过 HTTP API 提供能力,语言本身的生态差距在缩小。TS 有类型安全、前后端统一、npm 生态的优势;尤其是在 Web 端和 SaaS 后台集成场景下,TS 往往比 Python 更高效。Mastra 正是为了这些场景而存在。
为何常见:因为 AI 训练与科研传统上确实以 Python 为主,大量教程也用 Python,让初学者误以为 TS 是“非主流”。
误区既然要记住用户,那就把所有历史对话都拼到 prompt 里,最多的时候 prompt 长到几十万字。
正解越长越会撑爆上下文窗口,费用高、延迟高,甚至因“注意力稀释”导致回答质量下降。Mastra 把记忆分层:短期对话只保留最近几轮;长期记忆提取关键信息存向量库,只在需要时检索注入。就像主厨不会把开业以来所有菜名都背下来,而是记住熟客偏好和常用菜谱。
为何常见:因为很多人用过的简单聊天机器人就是把 history 列表直接丢进去,没有体会过超长上下文带来的成本和效果问题。
误区技术人员喜欢站队,觉得框架选型决定成败,选了 Mastra 就不能用 LangGraph 的一切,选错就输。
正解框架都只是工具,核心思想都是“节点、路由、状态、记忆”。选型应该基于团队背景与维护成本。很多团队甚至可以迁移概念,在 TS 项目里学到的思想能反哺 Python 项目。重要的是掌握底层方法论,而不是锁死某个框架。
为何常见:因为技术社区迭代快,容易形成“阵营文化”,让人忽略了工程实际:框架可替换,能力才持久。
误区写完 Agent、部署到服务器就大功告成,不用再关注运行时状态。
正解Agent 应用最大的不确定性来自外部 LLM API:模型更新、限流、网络抖动都会影响表现。正式项目需要日志、监控、超时、重试、降级,是一个持续运营的系统。这就像餐厅开业只是起点,每天的食材供应、设备维护、客人反馈才是长久经营的关键。
为何常见:因为很多开发者的经验来自内部工具或原型项目,体量小、流量少,确实不容易遇到规模化的故障。
面试题
Q1. Mastra 框架原生基于哪个语言生态?
- A.使用 Java 语言的全套体系
- B.使用 TS 语言的全套体系← 正确答案
- C.使用 Python 语言的全套体系
- D.使用 Go 语言的全套体系
答案:B。Mastra 是 TypeScript 原生的 AI Agent 框架,因此正确答案是 B。其他选项虽然可以通过适配层接入 LLM,但都不是 Mastra 的原生语言基础。就像后厨的承重结构,用什么建材决定了厨房能怎么扩建,Mastra 的“建材”是 TS。
Q2. Mastra 中负责编排多个步骤并控制流向的模块是?
- A.内置工作流引擎← 正确答案
- B.长期记忆系统
- C.外部工具仓库
- D.模型配置中心
答案:A。工作流引擎(Workflow)负责把多个步骤编排成有向流程,并通过路由决定下一步;记忆、工具、模型配置虽然都是重要能力,但都不负责“步骤之间的顺序与分支”。就像后厨的传菜动线,只有它决定你先做哪道菜、再端哪道菜。
Q3. Mastra 中将用户长期偏好持久保存的机制是?
- A.短期会话记忆
- B.长期持久记忆← 正确答案
- C.临时工作记忆
- D.小规模高速缓存
答案:B。长期记忆负责把用户偏好等沉淀信息保存到持久化存储中;短期记忆只管当前对话,工作记忆只保留任务中间结果,缓存既不持久也不面向用户偏好。就像主厨会把常客口味写进随身本,而不是随手贴在案板上。
Q4. Mastra 的 RAG 能力中,匹配相关文档主要依赖什么方式?
- A.关键词语义匹配
- B.向量相似度检索← 正确答案
- C.正则表达式筛选
- D.人工标签归类
答案:B。RAG 检索文档的核心是向量相似度:查询先向量化,再到向量库中找最相近的片段。关键词、正则和规则过滤都无法应对语义层面的相似匹配。这好比主厨做菜时翻菜谱,不是靠第一个字去找,而是靠“这道菜的整体感觉”定位到对应页。
Q5. 与 LangGraph 相比,Mastra 的差异化优势主要体现在?
- A.侧重 Python 生态
- B.侧重 TS 原生生态← 正确答案
- C.缺少内置记忆能力
- D.侧重云端部署模式
答案:B。LangGraph 主要面向 Python 生态,Mastra 以 TS 为原生内核,适合 JS/TS 团队无缝接入;LangGraph 并没有缺少记忆机制,Mastra 也不只限云端运行。选框架看团队技术栈,Mastra 对前端和全栈开发者更友好。
Q6. Mastra 中注册外部函数能力的方式是?
- A.工具注册机制← 正确答案
- B.模型参数微调
- C.工作流可视化
- D.系统提示改写
答案:A。通过工具注册机制(如 createTool)把外部函数包装成 LLM 可调用的工具;参数微调是训练阶段的工作,工作流可视化只是编排视图,系统提示也不会注册函数。主厨需要把厨具挂上“工具墙”,LLM 才知道有这些工具可用。
Q7. Mastra 的架构中对接不同大模型的抽象层是?
- A.工作流引擎层
- B.运行时支撑层
- C.服务提供商层← 正确答案
- D.应用核心逻辑层
答案:C。Mastra 的 Provider 层统一封装 OpenAI、Anthropic 等不同厂商的接口,让上层业务不依赖具体某家模型供应商。这就像后厨的“供应商仓库”:今天用哪家食材,后厨的菜谱都不需要改。
Q8. Mastra 为开发者开箱提供的能力包含哪些?
- A.多轮对话记忆← 正确答案
- B.可视化工作流← 正确答案
- C.外部工具调用← 正确答案
- D.数据库性能调优
答案:ABC。Mastra 内置多轮对话记忆、工作流编排和工具调用;数据库性能调优不是框架的职责。它是一间精装后厨:灶台、冰柜、传菜梯都有了,但不会替你做财务审计。
Q9. Mastra 记忆体系的完整层次包含哪些?
- A.短期会话记忆← 正确答案
- B.长期持久记忆← 正确答案
- C.临时工作记忆← 正确答案
- D.全局事件总线
答案:ABC。Mastra 的记忆体系分为短期记忆、长期记忆和工作记忆三个层次;全局事件总线是另一种架构组件,不属于记忆体系。就像主厨的记事本分三格:眼前这单、常客档案、今日临时备忘。
Q10. Mastra 工作流中 Step 后续路由的依据可能来自哪些信息?
- A.步骤输出结果← 正确答案
- B.动态条件判断← 正确答案
- C.外部环境状态← 正确答案
- D.本地编译时约定
答案:ABC。Step 的路由可以根据上一步的返回值、运行时动态条件以及外部环境状态来决定下一步;本地编译时约定与运行时路由无关。传菜员走到岔路口,看的是订单内容、当前客流和餐厅临时状况,而不是装修图纸。