Skip to content

应用设计决策

先判断任务类型

Mastra 的核心不是「所有东西都交给 Agent」,而是把不同不确定性放到合适的位置:

mermaid
flowchart TD
  A[新需求] --> B{步骤是否固定}
  B -- 是 --> C[Workflow]
  B -- 否 --> D[Agent]
  C --> E{需要外部数据或确定逻辑}
  D --> E
  E -- 是 --> F[Tool]
  E -- 否 --> G[纯模型回答]
  F --> H{需要历史上下文}
  G --> H
  H -- 是 --> I[Memory]
  H -- 否 --> J[单次调用]
  I --> K{需要私有资料}
  J --> K
  K -- 是 --> L[RAG]
  K -- 否 --> M[直接回答或执行]
  L --> N{是否有高风险操作}
  M --> N
  N -- 是 --> O[Approval / HITL]
  N -- 否 --> P{需要模型策略}
  P -- 是 --> Q[Model Routing]
  P -- 否 --> R{需要请求级差异}
  Q --> R
  R -- 是 --> S[RequestContext]
  R -- 否 --> U{需要实时反馈}
  S --> U
  U -- 是 --> V[Streaming]
  U -- 否 --> W{需要接入正式应用}
  V --> W
  W -- 是 --> X[Server / API]
  W -- 否 --> T[Observability + Evals]
  X --> T

模块选择表

需求表现优先选择设计理由验证方式
用户目标开放,步骤不确定Agent由模型决定是否继续、是否调用工具查看 steps、toolCalls、最终回答
任务有成本、延迟或供应商要求Model Routing模型选择成为显式策略固定样例比较质量、耗时、fallback
步骤明确且需要复现Workflow流程控制留在代码里逐步检查 step 输入输出
需要查数据库、调用 API、做计算Tool让代码承担确定性能力单独调用工具函数或看 toolResult
多轮对话需要记住偏好Memory通过 resourcethread 绑定上下文固定同一线程追问
需要回答内部资料RAG先检索,再生成,避免把全部资料塞进 prompt打印 chunk、score、topK
需要接外部工具生态MCPClient把外部 MCP server 的工具接入 Agent查看加载到的 toolsets
需要把能力给其他 Agent 用MCPServer暴露 Mastra tools、agents、workflows用 MCP 客户端连接测试
输出要进入 UI 或下游 APIStructured Output用 schema 约束对象形状用 Zod parse 和快照样例验证
同一 Agent 要按用户等级、语言或租户变化RequestContext请求级变量不污染长期记忆用两组 context 比较工具和回答
UI 需要实时显示回答或步骤状态Streaming边生成边显示,并观察事件检查 textStreamfullStream
要接正式前端或后台系统Server / API把 Agent 能力服务化检查 Studio、Swagger UI、鉴权和路由
输入输出需要过滤或改写Processors在模型前后拦截消息构造违规输入做测试
涉及删除、支付、发邮件Approval / HITL人工确认后再执行检查 suspended 或 approval chunk
要判断改动是否变好Evals / Scorers给非确定性输出一个量化指标固定测试集比较得分

Study Agent 的设计取舍

本教程最终项目是「课程学习助手」。它的目标不是生产级 SaaS,而是展示 Mastra 的主要部件如何配合。

功能本教程实现为什么
课程资料搜索本地数组 + Tool无密钥可运行,便于看懂工具边界
模型策略环境变量 + 文档讲解保持离线 Demo 可运行,真实模型通过配置接入
学习计划Workflow + 确定性函数计划流程固定,适合逐步验证
练习题Tool 模板生成保留结构化输出思想,避免依赖模型
对话记忆Mastra Memory + LibSQL映射真实 resource/thread 用法
RAGDemo 使用关键词模拟先理解检索流程,再替换向量库
RequestContext文档讲解,作为扩展当前离线 Demo 无多租户需求,真实应用应补
Streaming文档讲解,Studio 验证前端聊天 UI 会用到,先理解事件类型
Server / API文档讲解,作为扩展正式前端、鉴权和部署需要单独设计
Studio 调试npm run final:dev观察 Agent、Tool、Workflow 注册是否正确
Evals / Observability文档讲解,作为扩展官方能力需要额外依赖和更复杂存储,先不影响主线运行

Vibe coding 提示词

text
请帮我判断这个 Mastra 需求应该用 Agent、Workflow、Tool、Memory、RAG 还是 MCP。

需求:
- [描述业务目标]
- [说明是否有固定步骤]
- [说明是否需要外部系统]
- [说明是否涉及敏感操作]
- [说明输出是否要进入 UI 或 API]
- [说明是否有模型成本、速度、供应商或本地模型要求]
- [说明是否需要按用户等级、语言或租户切换行为]
- [说明是否需要流式 UI]

请输出:
1. 模块选择表。
2. 每个模块的职责边界。
3. 最小可运行版本。
4. 验证清单。
不要先写代码。

常见设计错误

错误表现修正
一个 Agent 挂几十个工具模型选择工具不稳定、上下文变长用 Workflow 或 Supervisor 拆职责
把确定流程写进 prompt每次执行不一致用 Workflow 固化步骤
Tool 返回原始大对象模型上下文被无关字段占满用精简输出或 toModelOutput
Memory 不区分用户和线程串话、权限混乱resource 绑定用户,thread 绑定会话
没有评估样例改 prompt 后无法判断质量建立 5 到 20 条固定测试输入