源码阅读路线
不要从所有文件开始读
Mastra 是完整框架,源码量不小。学习时不要试图逐文件读完。更有效的方式是围绕“运行链路”读:
- Agent 如何定义。
- Tool 如何注册和执行。
- Workflow 如何定义步骤。
- Memory 如何接入 storage。
- CLI 如何启动 Studio 和 server。
对照官方入口
| 你要理解的能力 | 官方入口 |
|---|---|
| Agent 定义 | @mastra/core/agent |
| Tool 定义 | @mastra/core/tools |
| Workflow 定义 | @mastra/core/workflows |
| Memory | @mastra/memory |
| 本地存储 | @mastra/libsql |
| MCP | @mastra/mcp |
| CLI | mastra dev |
建议阅读顺序
mermaid
flowchart TD
A[官方 Quickstart] --> B[Agent reference]
B --> C[createTool reference]
C --> D[Workflow overview]
D --> E[Memory overview]
E --> F[Storage overview]
F --> G[MCP overview]
G --> H[回到本教程最终项目]读源码时问的三个问题
1. 这个模块的输入输出是什么?
比如 Tool 的输入输出由 schema 描述。你先看 schema,再看 execute。
2. 这个模块由谁调用?
Tool 可以被 Agent 调用,也可以被 Workflow step 调用。调用者不同,错误定位方式也不同。
3. 这个模块是否需要持久化?
Memory、workflow snapshot、trace 都可能进入 storage。普通纯函数工具通常不需要。
小练习
打开最终项目里的这三个文件:
text
apps/study-agent/src/mastra/index.ts
apps/study-agent/src/mastra/agents/study-agent.ts
apps/study-agent/src/mastra/tools/course-search-tool.ts回答:
- 哪个文件负责注册?
- 哪个文件负责告诉模型“你是谁”?
- 哪个文件负责搜索课程资料?
- 如果 Studio 看不到 Agent,应该先查哪个文件?
- 如果搜索结果为空,应该先查哪个文件?