MQTT 与 AI Agent:连接物理世界的可治理事件总线
文章
2026年7月27日
3 分钟阅读
UllrAI

MQTT 与 AI Agent:连接物理世界的可治理事件总线

一套可落地的架构:用 MQTT 将 AI Agent 接入设备,同时避免模型获得不受约束的物理系统控制权。

MQTTAI Agent系统架构物联网

AI Agent 擅长理解遥测数据、制定计划并调用工具;设备网络面对的则是另一组问题:链路时断时续、终端资源有限、主题权限、投递语义,以及会真实影响物理世界的控制指令。

MQTT 很适合成为两者之间的边界。它为遥测与指令提供统一事件通道,同时把设备连接管理留在 Agent 运行时之外。但 MQTT 本身并不会让 Agent 自动变得安全,真正的安全来自 Broker 周围的策略、校验和审批层。

参考架构

一条生产级链路通常包含五部分:

  1. 设备与网关向 MQTT 主题发布遥测和状态。
  2. Broker 验证客户端身份,并执行发布、订阅权限。
  3. 接入服务校验载荷、补充上下文,再向 Agent 暴露收窄后的事件流。
  4. Agent 通过有类型约束的工具提出操作,不直接发布任意 MQTT 消息。
  5. 指令服务检查策略、审批状态、时效与设备能力,最后才发布指令。

这种分层可以阻止提示词内容直接变成 Broker 凭据或主题过滤器。

设备 -> MQTT Broker -> 已校验事件 -> Agent
Agent -> 类型化工具 -> 策略与审批 -> MQTT 指令 -> 设备

分开观察与控制权限

观察与控制应使用不同主题、身份和权限。

sites/{siteId}/devices/{deviceId}/telemetry
sites/{siteId}/devices/{deviceId}/state
sites/{siteId}/devices/{deviceId}/commands/request
sites/{siteId}/devices/{deviceId}/commands/result

向 Agent 提供上下文的服务可以订阅遥测,但不应顺带获得指令发布权限。指令执行器只应拥有最窄的发布范围,更不能修改自己的权限策略。

把指令变成类型化操作

不要给模型一个通用的 mqtt_publish(topic, payload) 工具。应围绕业务意图定义操作:

{
  "operation": "set_temperature_target",
  "deviceId": "chiller-07",
  "targetCelsius": 6,
  "reason": "将偏差降回已批准区间",
  "requestId": "req_01J..."
}

指令服务负责解析目标主题、校验温度范围、确认设备能力并写入审计记录。Agent 不需要选择通配主题,也不会接触连接凭据。

按后果等级设置审批边界

并非所有操作都需要人工确认,但每种操作都必须有明确的后果等级。

等级示例控制方式
观察读取最新温度自动、只读
建议建议维护时间自动生成建议
可逆控制在安全范围内调整非关键设定值策略校验
高后果停机或解锁门禁明确审批与独立安全保护

物理设备必须保留本地安全上限。云端 Agent 不能成为阻止危险操作的唯一防线。

让每条指令都能过期

一条指令即使最初合理,也可能因延迟投递而变得危险。至少应包含:

  • 唯一请求 ID;
  • 签发时间与过期时间;
  • 预期设备状态或版本;
  • 发起主体;
  • 策略判定与审批记录;
  • 幂等键。

MQTT 5 的消息过期可以减少迟到投递,但设备端仍应拒绝已过期或乱序的指令。

把响应当作证据,而不是确定结果

MQTT 发布成功只说明 Broker 按选定 QoS 流程接收了消息,并不代表设备已经执行操作。

应通过独立结果主题和关联 ID 返回执行状态:

{
  "requestId": "req_01J...",
  "status": "applied",
  "deviceStateVersion": 1843,
  "observedAt": "2026-07-27T09:30:00Z"
}

这样工作流才能区分已接收、已投递、已执行、已拒绝、已过期和超时。

真正重要的运行控制

在 Agent 接入 MQTT 之前:

  • 为每个服务签发独立身份并定期轮换;
  • 按工具配置精确的主题白名单;
  • 使用版本化 Schema 校验载荷;
  • 限制单设备的指令速率和并发;
  • 记录建议、审批、策略结果、发布动作与设备回执;
  • 测试重复投递、重连、过期保留消息和部分失败;
  • 在 Agent 链路之外保留紧急停止能力。

更稳妥的顺序是先接入只读遥测和离线建议;待审计链路与故障处理真正可观测后,再加入边界清晰的指令执行。

继续阅读 MQTT 安全指南了解身份与授权设计,阅读 MQTT 协议概览理解会话和投递行为;如果 Agent 同时需要持久事件回放,可参考 MQTT 与 Kafka 对比

把设计落实为访问控制

接入生产数据前,先检查 TLS、设备身份与主题权限。