Skip to content

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')

需要观察什么

输出里有四部分:

  1. agent:当前运行单元的名字、instructions 和教学运行时。
  2. input:原始用户输入。
  3. text:由教学运行时代码生成的结果。
  4. 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 太长初学阶段难以判断哪句话影响了结果