为 Mastra Agents 推出 Ring Signals

你的智能体现在可以响应现实世界中的事件。

Paul Scanlon·

2026年11月6日

·

5 分钟阅读

你的 Mastra 智能体现在可以使用 Ring Signals.

通知信号,其优先级可配置。 通知信号 ,其优先级可配置。随后,智能体可以从 Ring API 获取快照或视频片段,并在有人来到你家门口时决定如何处理。

Ring 信号把门铃变成智能体可以响应的事件源。家庭安防智能体可以监视 human 动作,查看快照,并标记可能需要紧急关注的到访。配送助手可以使用 package_delivery 动作来通知你包裹已送达,或者由车道智能体记录 vehicle 动作,以追踪哪些车辆停靠。

在智能体的线程中播放一段 Ring motion_detected 片段:一个戴着巴拉克拉瓦头套的人走到前门,随后一条 button_press 通知显示此人出现在摄像头前,智能体回复称这次到访需要关注。

智能体通常被配置为响应软件事件,例如来自 Slack、Discord、iMessage 以及其他受支持 渠道提供商真实世界。启用记忆后,你可以教会智能体识别它见过的事物,告诉它要识别哪些人、车辆和活动,这样它就能在未来的事件中记住它们。默认情况下,智能体会收到每个事件的快照图像。在 tools.clip 上设置 visibleToModel: true,并使用能够接收视频输入的模型,智能体就能观看视频了。开始使用 Ring 信号需要一个与你的 Ring 账户关联的 Ring 开发者应用。按照 Ring 集成指南中的设置操作,然后安装以下依赖 现实世界。借助 记忆 启用后,你可以教会智能体识别它见过的事物,告诉它要识别哪些人、车辆和活动,这样它就能在未来的事件中记住它们。

默认情况下,智能体会收到每个事件的快照图像。设置 visibleToModel: true 上 tools.clip 并使用能够接收视频输入的模型,智能体也能观看这些视频。

开始使用

Ring 信号需要一个与你的 Ring 账户关联的 Ring 开发者应用。请按照以下设置操作: Ring 集成指南,然后安装以下依赖:

终端
npm install @mastra/ring-signals @mastra/libsql @mastra/memory
注意:需要 @mastra/ring-signals@0.1.0 以及 @mastra/core@1.81.0 或更高版本,新增于 PR #28864.

将 RingSignals 到你的智能体 signals:

src/mastra/agents/home-security-agent.ts
import { Agent } from "@mastra/core/agent";
import { Memory } from "@mastra/memory";
import { RingSignals } from "@mastra/ring-signals";
 
export const homeSecurityAgent = new Agent({
  id: "home-security-agent",
  name: "Home Security Agent",
  instructions: "Watch the front door and say briefly whether each event needs attention.",
  model: "google/gemini-3.8-flash",
  memory: new Memory({
    options: {
      observationalMemory: true
    }
  }),
  signals: [
    new RingSignals({
      events: {
        button_press: { priority: "high", summary: "Doorbell was pressed." },
        motion_detected: {
          priority: "medium",
          summary: "Motion was detected at the front door.",
          attributes: (event) => ({
            ...event.data.attributes,
            location: "front door"
          })
        },
        device_offline: {
          priority: "low",
          summary: "Device went offline.",
          coalesce: true
        }
      },
      tools: {
        clip: { visibleToModel: true, durationMs: 15_000 }
      }
    })
  ]
});
  • observationalMemory: true:开启观察记忆。
  • events:为每个 Ring 事件设置优先级和摘要。
  • attributes:添加智能体在通知上看到的属性。
  • coalesce: true:将同一事件的重复项合并为一条通知。
  • visibleToModel: true:将片段传递给模型。(需要支持视频输入的模型)。
  • durationMs:以毫秒为单位设置片段长度。

在你的 Mastra 实例上注册该智能体和存储适配器:

src/mastra/index.ts
import { Mastra } from "@mastra/core";
import { LibSQLStore } from "@mastra/libsql";
import { homeSecurityAgent } from "./agents/home-security-agent";
 
export const mastra = new Mastra({
  agents: { homeSecurityAgent },
  storage: new LibSQLStore({
    id: "mastra-storage",
    url: "file:./mastra.db"
  })
});

多玩家警报

默认情况下, RingSignals 会将事件发送到它自己的线程,但你也可以配置 RingSignals 使用以下属性订阅现有的频道线程: target 属性。

频道

本示例使用 iMessage该频道和 RingSignals 和,这样 Ring 事件就会到达 iMessage 对话中。 resourceId , threadId,这样 Ring 事件就会到达 iMessage 对话中。

安装 iMessage 适配器:

终端
npm install @photon-ai/chat-adapter-imessage

将 iMessage 频道和 RingSignals 到同一线程:

src/mastra/agents/home-security-agent.ts
import { Agent } from "@mastra/core/agent";
import { Memory } from "@mastra/memory";
import { RingSignals } from "@mastra/ring-signals";
import { createiMessageAdapter } from "@photon-ai/chat-adapter-imessage";
 
const resourceId = "home-security-agent";
const threadId = "ring-alerts";
 
export const homeSecurityAgent = new Agent({
  // ...
  id: resourceId,
  channels: {
    resolveResourceId: () => resourceId,
    resolveThreadId: () => threadId,
    adapters: {
      imessage: { adapter: createiMessageAdapter() }
    }
  },
  signals: [
    new RingSignals({
      target: { resourceId, threadId }
    })
  ]
});

Mastra 客户端 SDK

Web 应用也可以通过以下方式使用同一线程: subscribeToThread() 来自 Mastra 客户端 SDK:

终端
npm install @mastra/client-js

和,它们被频道和所使用:src/app/subscribe.ts 如需了解更多信息及完整配置选项,请参阅:Ring 集成指南 RingSignals 参考 Signals iMessage 集成指南 通知信号 Channels 观察记忆 Mastra 客户端 Client SDK agents 参考 Signals 研讨会 如需深入了解信号,请观看《用信号唤醒、通知和引导长时间运行的智能体》研讨会: 在 X 或 LinkedIn 上分享 Paul Scanlon 技术产品营销经理 Paul Scanlon 介于开发者 resourceId 和 threadId 所使用的,以及 RingSignals:

使用该属性订阅现有的频道线程。频道本示例使用 iMessage。该频道和 共享相同的 和 ,因此 Ring 事件会到达 iMessage 对话中。安装 iMessage 适配器:终端将 iMessage 频道和 指向同一线程:src/mastra/agents/home-security-agent.tsMastra 客户端 SDKWeb 应用也可以使用 Mastra 客户端 SDK 中的 subscribeToThread() 跟随同一线程:终端使用频道和 所使用的相同 和 订阅该线程:src/app/subscribe.ts 如需了解更多信息及完整配置选项,请参阅:Ring 集成指南RingSignals 参考SignalsiMessage 集成指南通知信号Channels观察记忆Mastra 客户端Client SDK agents 参考Signals 研讨会如需深入了解信号,请观看《用信号唤醒、通知和引导长时间运行的智能体》研讨会: 在 X 或 LinkedIn 上分享Paul Scanlon技术产品营销经理Paul Scanlon 在 Mastra 介于开发者教育与产品营销之间。此前
import { MastraClient } from "@mastra/client-js";
 
const client = new MastraClient({ baseUrl: "http://localhost:4111" });
 
const subscription = await client.getAgent("home-security-agent").subscribeToThread({
  resourceId: "home-security-agent",
  threadId: "ring-alerts"
});
 
await subscription.processDataStream({
  onChunk: (chunk) => {
    console.log(chunk.type, chunk);
  }
});

如需了解更多信息及完整配置选项,请参阅:

Signals 研讨会

如需深入了解信号,请观看《 用信号唤醒、通知和引导长时间运行的智能体 研讨会:

分享到 或 LinkedInPaul Scanlon技术产品营销经理Paul Scanlon 在 Mastra 负责开发者教育与产品营销之间的工作。此前,他曾在 Neon 担任技术产品营销经理,并在 Gatsby 从事开发者关系工作,负责创建教育内容和开发者体验。Paul Scanlon 的所有文章 →更多关于 Agents所有文章博客2026年11月5日推出 Mastra 自定义 Harness 计划掌控你的智能体系统,摆脱供应商锁定,掌控工作的完成方式。 或 LinkedInPaul ScanlonPaul Scanlon技术产品营销经理

Paul Scanlon 在 Mastra 负责开发者教育与产品营销之间的工作。此前,他曾在 Neon 担任技术产品营销经理,并在 Gatsby 从事开发者关系工作,负责创建教育内容和开发者体验。

Paul Scanlon 的所有文章 →

更多关于 Agents

所有文章博客 2026年11月5日

推出 Mastra 自定义 Harness 计划

掌控你的智能体系统,摆脱供应商锁定,掌控工作的完成方式。我们的前置部署工程师会在 Mastra 上与你共同构建你的 harness,并根据你的目标量身定制。

文章2026年8月17日

AI 智能体架构:模式、组件与生产设计

了解 AI 智能体架构:从组件到编排模式、记忆、可观测性,以及构建可靠智能体的生产设计选择。

文章 2026年8月9日

智能体构建器:如何构建、测试和部署 AI 智能体

了解什么是 AI 智能体构建器、AI 智能体的核心构建模块,以及如何构建、测试并将你的第一个智能体部署到生产环境。