🏠 home › concepts › iot-agent-capability-bridging
tags
[IoT, agent, 能力协商, 架构, sentino]
created
2026-05-15
updated
2026-05-15
sources
[raw/notes/2026-05-15-iot-agent-capability-decision-memo-v5-final.md, raw/notes/2026-05-15-iot-agent-capability-decision-memo-v4-final.md, raw/notes/2026-05-15-iot-agent-capability-decision-memo-v3.md, raw/notes/2026-05-15-iot-agent-capability-decision-memo-v2.md, raw/notes/2026-05-15-iot-agent-capability-decision-memo.md]

定义

Sentino 架构里有两套独立的"设备能力"体系——物模型(device ↔ IoT 平台,MQTT 层 DP 属性)和DragonFlow capability(device ↔ agent,OpenAI tool calling schema)——它们语义不同、维护方不同、传输通道不同、且没有内置桥。"能力协商"指的是把这两套体系桥起来:让 agent 在对话过程中只能调用"产品定义支持 ∩ 设备实例实际声明支持"的能力子集,避免 LLM 调一个设备做不到的工具。

2026-05-15 锁定的 v5 方案 = per-conversation 透传 + 两层分离:跨团队接口(Layer 1)走 Sentino API device_info.supported_executors 字段;IoT 平台内部机制(Layer 2)由 IoT 团队自决(X/Y/Z 三选项)。

关键要点

完整链路(9 步)

① 用户按设备按钮
       ↓
② 设备 MQTT publish: agora_agent_device_access
   data: { agent_id, capability: ["set_volume", ...] }      ← Layer 2 方案 X
       ↓
③ IoT 平台调 Sentino API
   POST /api/v1/conversations
   { device_info: { ..., supported_executors: [...] } }     ← Layer 1 接口
       ↓
④ Sentino API 存进 conversation 上下文 + 启动 ConvoAI agent
       ↓
⑤ 返回 RTC 参数 → IoT 平台 → MQTT 回设备
       ↓
⑥ 设备 RTSA SDK 加入 Agora RTC 频道
       ↓ 对话进行中
       ↓
⑦ Agora 回调 /api/v1/agent/chat (含 conversation_id)
       ↓
⑧ Sentino API 按 conversation_id 查 supported_executors
   ∩ DragonFlow product.capability_config
   = 注入 LLM tool calling schema
       ↓
⑨ LLM tool call → DragonFlow envelope → Agora DataStream → 设备 dispatch executor

两层分离原则

层级 范围 决策方 状态
Layer 1:跨团队接口 Sentino API 暴露什么 spec 给 IoT 平台 用户已拍板 锁定(device_info.supported_executors)
Layer 2:IoT 平台内部机制 IoT 平台用什么方式获取 / 维护设备 capability IoT 团队自决 X/Y/Z 三选项

Layer 2 候选方案: - X:MQTT-on-start 透传(最简,零持久化)—— agora_agent_device_access 上报附加 capability 字段,IoT 平台映射到 API - Y:MQTT-once + DB-cached(fleet 可见性)—— 设备独立上报,IoT 平台 DB 缓存 - Z:X + Y hybrid(最稳健)—— X 主路径 + Y 兜底

与早前矩阵方案的对比

mqtt-device-protocol 早前 design.md §4 设计的 "PID + firmware → capability 矩阵" + 设备 fingerprint 兜底方案在 v5 已降级为对比表里的"早前方案"。两种方案的关键差异:

维度 Per-Conversation 透传(v5) 持久化矩阵(早前方案)
数据生命周期 单次会话有效 跨会话持久
一致性窗口 总与设备状态一致 OTA / 灰度可能漂移
持久化成本 0 需新表 + 上报 + 一致性维护
Fleet 可见性 不支持 支持
与现有 device_info 模式 一致(battery/wifi 已是 per-session) 不一致

未来如需 fleet 可见性,可在 v5 主链路上叠加独立的"设备 capability 持久化上报"机制,不影响主链路。

决策演化简史(5 版迭代)

版本 推荐 推翻原因
v1 B+B':IoT 平台为 capability source + 显式映射表 DragonFlow 团队希望维护 product 能力
v2 C+A:DragonFlow 维护 + 固件 dispatch + 独立 capability_report MQTT code 没看到 Agora customMetadata 透传机制,过度设计
v3 复用 Agora customMetadata 通道 不必依赖 Agora 透传——Sentino API 内部即可解决
v4 device_info.supported_executors + Sentino API conversation 上下文 把跨团队接口和 IoT 平台内部机制混在一起讨论
v5 两层分离:Layer 1 锁定 + Layer 2 自决

完整决策备忘见 2026-05-15-iot-agent-capability-decision-memo-v5-final(其余 4 版作为决策历史保留)。

工程量(v5)

相关概念