Demo 01:最小 Agent
目标
Demo 01 不接 Mastra,也不接真实模型。这里的 ToyAgent 只是一个教学壳层,用确定性代码展示 Agent 最小结构:
- 有名字。
- 有 instructions。
- 接收一条用户输入。
- 返回一个可验证的结果。
- 记录一条可检查的 trace。
运行:
bash
npm run demo:01这一章解决什么问题
如果一开始就接 API Key、工具和记忆,出错时很难判断是哪一层坏了。最小 Agent 的目标是把链路缩到一层:
mermaid
flowchart LR
U[用户输入] --> A[ToyAgent]
A --> I[instructions]
I --> R[可检查输出]关键代码
ts
const agent = new ToyAgent({
name: 'Toy Study Agent',
instructions: '用一句话说明当前输入,并给出一个可执行的下一步。',
})
const result = await agent.generate('我想学习 Mastra Agent')需要观察什么
输出里有四部分:
agent:当前运行单元的名字、instructions 和教学运行时。input:原始用户输入。text:由教学运行时代码生成的结果。trace:输入、读取 instructions、组装输出的过程。
这一步只说明 Agent 不是一段 prompt,而是「身份 + 规则 + 输入 + 输出 + 可观察过程」组成的运行单元。真实 Mastra Agent 会把其中的「组装输出」交给模型,并能继续接入 tools、memory 和 workflow。
给 AI 的提示词
text
请先不要接真实 LLM。帮我写一个教学版 Agent 类:
- 构造参数包含 name 和 instructions。
- generate(message) 返回 { agent, input, text, trace }。
- trace 里要包含输入、读取 instructions 和组装输出。
- 目的是帮助初学者理解 Agent Loop 的第一步。常见错误
| 错误 | 说明 |
|---|---|
| 一开始就接真实模型 | 错误来源太多,不利于学习 |
| 没有 trace | 无法解释输出如何产生 |
| instructions 太长 | 初学阶段难以判断哪句话影响了结果 |