Skip to content

2026 AI 空间智能体 - 空间语义管理 PRD (v2.8)

版本: v2.8 日期: 2026-03-27 状态: 逻辑重构与治理增强完成 目标: 构建统一的“空间语义管理”子中心,连接 IoT 物联平台与 AI Agent,实现物理空间资源到 AI 自然语言意图的灵活映射。通过“纳管”机制,将原始 IoT 数据转化为具备业务语义的 AI 资产。


1. 核心设计理念

1.1 物理与语义解耦

系统不对物联平台原有物理数据做侵入式修改,而是在 AI 层通过“语义增强”建立映射:

  • 物理层: 维护真实的设备 ID、物模型属性、拓扑关系。
  • 语义层: 叠加别名 (Alias)、基础权重 (Weight)、默认标记,让 AI 听懂“VIP室”、“那个灯”等口语指令。

1.2 核心设计准则

  • 强空间依赖 (No Space, No Device): 任何设备接入前,其所属的空间路径必须已通过 AI 纳管。
  • 数据治理策略: 仅展示 IoT 平台已配置“安装位置”的资源,倒逼物理源头数据的规范性。
  • 感知逻辑下沉 (Sensing Down-shift): AI 侧不处理传感器融合(均值/加权),仅通过 “逻辑点位” 模式 1:1 接入由物理层预处理后的环境数据。

1.3 核心术语表 (Terminology)

NOTE

空间资产 (Space Assets): 管理地理容器(项目、楼层、房间),为业务提供拓扑支撑。 语义别名 (Alias): AI 识别实体的自然语言凭证,支持冗余别称。 同步异常 (Anomaly): 由于物理层变动导致语义映射断裂的各种不一致状态。


2. 管理模块概述 (Management Overview)

2.1 空间管理模块 (Space Hub)

空间管理是所有资产的“底盘”。通过引入 IoT 项目空间的拓扑树,在 AI 系统中建立具备父子继承关系的地理容器。

2.2 核心特性

  • 物理路径补全: 引入任一子节点,系统自动追溯并拉取完整的祖先路径。
  • 级联递归展示: 侧边树选择任意中间层级,列表应穿透显示下属所有房间/设备容器。
  • 语义权重: 管理空间的重要性(Weight),辅助 AI 进行意图优先级判断。

3. 一致性管控逻辑 (Consistency Governance)

AI 层数据长效生存的基石。系统遵循 “列表防御性停用,抽屉阶梯式对账” 的分层治理原则。

3.1 异常感知准则 (Detection Rules)

任何物联层字段(名称、路径、标识符)与 AI 层底账不一致时,触发 [⚠️ 同步异常] 标识。

  • 强制策略: 一旦触发异常,AI 状态强制锁定为 ⚪ 已停用。系统在向量库中临时下线该资源,直至异常闭环。

3.2 阶梯式采纳与闭环 (Stepped Adoption)

当多项异常复合出现时(如:物理名称变了 + 空间也移了),系统按以下优先级处理:

级别 1:熔断级 (Orphan)

  • 判定: 物联平台已物理删除该实体。
  • 策略: 彻底熔断。抽屉内所有配置项设为 disabled
  • 操作: 禁用所有编辑及采纳按钮,仅保留 [彻底移除]
  • 🚨 级联移除限制: 系统执行“彻底移除”前,必须检查该节点是否包含子节点(子空间/房间)。若存在未移除的子节点,系统应中断操作并提示“请先清理下层级资源”,严禁产生逻辑孤儿。

级别 2:采纳项 (Auto-Sync Items)

  • 范围: 包含 名称变更空间/路径迁移
  • 逻辑: 支持“一键采纳”。
    • 位置自动闭环: 若涉及空间迁移且目标空间未纳管,系统会自动完成路径引入,无需用户跨页面操作。
    • 容纳人数 (Capacity):该数值由 系统源头(如飞书会议室资源管理)同步获取,UI 界面强制置灰只读,不接受人工定义,以确保跨系统数据一致性。
    • 部分同步: 若同时存在属性漂移,点击采纳仅同步名称/路径。

3.3 交互 UI 规范

  • 主列表: 极简显示,统一提示为“同步异常”。新增复选框与批量操作工具栏。
  • 详情抽屉: 提供 Diff 对比清单,显式展示“物理层变动内容”。
  • 危险操作: 移除空间时,需调用 弹窗 (Custom Confirm Modal) 二次确认。
  • 批量安全性 (Batch Safety): 批量执行“生效”时,自动跳过处于任何异常状态的项。对于空间资产,若未配置至少一个 AI 别名,亦会被跳过。

4. 业务流程与配置全流程 (Business Process)

4.1 系统上线纳管生命周期

4.1.1 关键逻辑说明

  1. 双向向量化 (Dual Vectorization): 配置的“语义别名 (Alias)”是向量库检索的核心 Key。
  2. 空间能力三支柱:
    • 会议能力: 实现从“预约 305”到具体日历/会议室 ID 的透传。
    • 控制全局开关: 决定该空间是否允许被 AI 控制。
    • 感知链路绑定: 空间的温湿度等“环境表现”不直接产生数据,必须挂载至特定设备的感知点位上。原则:AI 仅接入由物理中枢预处理后的“逻辑点位”(如:空间平均温),不执行原始传感器加权。

5. 空间资源管理 (Space Management UI)

5.1 界面总览:布局

主界面采用 [系统导航] - [空间层级树] - [资源工作区] 的三栏结构,实现物理空间到 AI 纳管资源的直观映射。

text
+----------------+--------------------------+-------------------------------------------------------------------------------------------+
| [APP NAV]      | [ 物理空间层级树       ] |  首页 / 空间资源管理 / 金螳螂 / 1楼                                                      |
+----------------+--------------------------+-------------------------------------------------------------------------------------------+
|                |                          |                                                                                           |
|  [🏢] 空间管理 |  v 21默认项目            | [ 工作区: 已选节点及其下级资源列表 ]                                                       |
|  (Active)      |    v 金螳螂  <Selected    |                                                                                           |
|                |      v 1楼               | 筛选: [ 空间类型 v ]  搜索: [ 别名... ]  [ + 引入 IoT 空间资源 ]                          |
|  [💡] 设备管理 |        305培训室         |                                                                                           |
|                |        ...               | [ 已选 2 项 ] [ 批量生效 ]  [ 批量失效 ] (仅在有勾选项时显示此操作栏)                     |
|                |      > 4楼               | +---------------------------------------------------------------------------------------+ |
|                |    > 北楼                | | [v] | 原始名称   | 上层空间     | 类型     | AI 别名       | AI状态 | 异常   | 操作列   | |
|                |                          | |-----|------------|--------------|----------|---------------|--------|--------|----------| |
|                |                          | | [x] | 1楼大厅    | 金螳螂/1楼   | 楼层空间 | [大厅]        | 🟢生效 | -      | 配置|失效| |
|                |                          | | [ ] | 305培训室  | 金螳螂/1楼   | 会议室   | [305会议室]   | 🟢生效 | ⚠️变更 | 处理|失效| |
|                |                          | | [x] | 北楼1楼    | 北楼         | 楼层空间 | (空)          | ⚪停用 | -      | 配置|生效| |
|                |                          | | [ ] | 储藏室A    | 金螳螂/1楼   | 房间     | [杂物间]      | ⚪停用 | 💀已删 | 查看     | |
|                |                          | +---------------------------------------------------------------------------------------+ |
+----------------+--------------------------+-------------------------------------------------------------------------------------------+

5.1.2 关键交互说明

  1. 级联递归检索 (Recursive Retrieval): 在侧边栏点击任意节点,列表页不仅显示当前节点,还必须级联显示其下所有深度的子空间节点

  2. 上层空间显式路径 (Parent Path Column): 由于采用了递归展示,列表必须提供“上层空间”列,标明每个节点的父级路径(如:金螳螂 / 1楼),防止在扁平化列表中产生位置歧义。

  3. 中间树 (Tree): 基于已引入AI IOT, 展示AI IoT 平台的物理拓扑结构,叶节点(会议室/房间)也须在树中显示

  4. 双轴状态模型: 对齐 AI 状态与 IoT 同步异常。 【轴1:AI 状态 (业务主导)】

    • [🟢 生效中 (Active)]: 正常被向量库检索,支持 AI 语音交互。
    • [⚪ 已停用 (Disabled)]: 管理员手动关闭。保留所有别名和能力配置,但从向量库下线该空间(例如停业装修)。
    • 注:用户还可选择在抽屉内触发 彻底移除,清除所有表数据。

    【轴2:同步异常 (底层感知)】

    • [-]: 正常,无变化。
    • [⚠️ 物理变更 (Metadata Changed)]: 大一统的复合状态提示。当底层 IoT 名称和/或路径发生变更时触发。点击 [处理] 操作打开侧边抽屉,会显式标注变更明细。注意:此状态为警告级别,不影响现有设备的底座控制,AI 纳管状态(如 🟢生效中)保持不变。
    • [💀 物联信息丢失 (Orphan)]: 最严重的破坏性状态。IoT 端已将该节点彻底物理删除。触发该状态时,系统会强制将其 AI 状态置为 ⚪已停用 防止幽灵调用,并锁定状态禁止再次开启。列表页只能执行 [查看] 与彻底 [移除]
  5. 操作列双按钮设计:

    • [配置] / [处理]: 打开右侧配置抽屉。当同步异常为 ⚠️物理变更 时文字切换为"处理"(蓝色高亮)。
    • [生效] / [失效]: 直接在列表行内切换 AI 状态。仅在同步异常 💀物联信息丢失 时显示。
      • ⚠️ 生效前置校验: 点击 [生效] 时,若该空间的 AI 别名为空,系统拦截并报错。确保被纳管空间至少有一个语义入口。

5.2 核心流程 A:引入 IoT 空间资源 (Onboarding)

点击 [+ 引入 IoT 空间资源] 唤起弹窗。采用 “固定左树 + 动态右表” 的设计。

  1. 双重过滤: 右侧列表的数据源,同时受顶部 [类型筛选] 和左侧 [区域树](同 物联平台-物理空间树) 的交集控制。
  2. 去重逻辑: 已引入的资源在弹窗中置灰或不显示。
  3. 确认引入:点击 “确认引入” 按钮,引入 AI空间数据
text
+-----------------------------------------------------------------------------------+
|  从 IoT 平台引入空间资源                                                  [ X ]   |
+-----------------------------------------------------------------------------------+
|  💡 温馨提示:引入特定空间时,系统将自动同步引入其在物联平台中的所有上级节点。            |
+-----------------------------------------------------------------------------------+
|  类型筛选: [ 会议室 v ]    搜索: [ 305                  ] Q                       |
+--------------------------+--------------------------------------------------------+
|  [ 区域筛选树 ]          |  [ 待引入资源列表 ]                                    |
|                          |                                                        |
|  v 21默认项目            |  [x]  名称         所属路径        类型                |
|    v 金螳螂              |  ----------------------------------------------------  |
|      v 1楼               |  [x]  305会议室    金螳螂/1楼      会议室              |
|      > 4楼               |  [ ]  401大会议室  金螳螂/4楼      会议室              |
|    > 北楼                |  [ ]  VIP接待室    北楼/1楼        会议室              |
|                          |                                                        |
|  (点击节点可过滤右侧)    |  * 列表内容 = (类型匹配) AND (属于左侧选中区域)        |
+--------------------------+--------------------------------------------------------+
|                                                      [ 取消 ]   [ 确定引入 (1) ]  |
+-----------------------------------------------------------------------------------+

5.2.1. 引入逻辑细节 (Auto-Parent Sync)

  1. 自动同步父节点 (Auto-Parent Import):
  • 行为: 勾选引入任意空间节点(如:1号楼/305会议室)时,系统必须自动在后台检查并同时引入其所有的父代路径节点(1号楼、园区等)。
  • 初始状态隔离: 所有通过引入操作新建的资产节点(包含目标节点与补全的父节点),其 初始 AI 状态必须强制默认为 ⚪已停用 (Disabled)。管理员需进入抽屉完成语义配置后手动开启,实现“安全冷启动”。
  1. 别名初始化规则: 自动带入的节点, 初始化 AI 别名 固定为该空间的“物理名称”。无论是否冲突(如多个“机房”),引入阶段均允许存在。初始状态默认为 ⚪已停用

  2. 弱校验原则: 为了降低运维复杂度,系统不再对别名执行强查重拦截。同音字或同名空间在向量检索阶段将通过相似度评分与权重(Base Weight)综合调节。

  3. 列表刷新: 引入成功后,高亮新增行,并同步更新左侧侧边栏的 AI 空间树。


5.3 核心流程 B:配置详情与异常处理 (Config & Exception Resolution)

点击列表中的 [配置] 按钮,右侧滑出抽屉。除了常规配置,这里也是解异常闭环的唯一入口。

text
+---------------------------------------------------------------+
|  空间配置详情                                          [ X ]  |
+---------------------------------------------------------------+
|                                                               |
|  [ 业务开关: 🟢 AI 纳管生效中 ]   [ 彻底移除资源 (Danger) ]   |
|                                                               |
|  == 基础信息 ==                                               |
|  [⚠️ 发现底层物理变更]   (若无变更则不显示此警告框)           |
|  (更新详情: IoT端 名称修改为"305直播间"; 路径转移至"1楼")     |
|  [ 采纳 IoT 更新 ] (点击后报错标签消除,AI物理信息自动同步)   |
|                                                               |
|  物理名称:  305会议室 (旧)                                    |
|  物理路径:  金螳螂 / 3楼 (旧)                                  |
|                                                               |
|  == AI 语义增强 ==                                            |
|  基础权重:  Low [-----O-----] High  (0.5 - 普通权重)          |
|             (0.1: 低频勿扰, 0.5: 普通权重, 1.0: 核心地标)     |
|                                                               |
|  语义别名:  [ 305会议室 x ] [ VIP室 x ] [ 三楼大的 x ]        |
|             (回车添加 Tag。 建议依据上方变更信息调整别名)     |
|                                                               |
|  == 空间能力集成 ==                        [ + 添加能力 v ]       |
|                                        |  📅 会议预定 |       |
|                                        |  💡 空间控制 |       |
|                                        |  🌡️ 环境感知 |       |
|  +----------------------------------+  +--------------+       |
|  | 📅 会议预定能力 (Meeting)     [x] |                         |
|  |----------------------------------|                         |
|  | 预定源:     [ 钉钉 (DingTalk)  v]| (feishu/dingtalk/...)   |
|  | Room ID:     [ room_xxx_123    ] | (对应平台的资源ID)      |
|  | 容纳人数:    [ 10 ] 人           |                         |
|  +----------------------------------+                         |
|                                                               |
|  +----------------------------------+                         |
|  | 💡 空间设备控制 (Global Switch)[x] |                         |
|  |----------------------------------|                         |
|  | 状态:       [ 🟢 已开启 ]         | (控制该空间整体 AI 响应) |
|  | **设备清单**: [ 305主灯, 305空调 ]  | (动态展示当前空间下属设备) |
|  +----------------------------------+                         |
|                                                               |
|  +----------------------------------+                         |
|  | 🌡️ 环境感知 (Sensing)         [x] |                         |
|  |----------------------------------|                         |
|  | 1. 感知项: [ 温度 (Temperature)  ]| (预设分类)              |
|  | 2. 数据源: [ 305空调#室内温度 v ] | (设备#映射点位)         |
|  |                                  |                         |
|  | 3. 感知项: [ 相对湿度 (Humidity) ]|                         |
|  | 4. 数据源: [ 305传感器#主湿度  v ] |                         |
|  +----------------------------------+                         |
+---------------------------------------------------------------+
|                                      [ 取消 ]   [ 保存生效 ]  |
+---------------------------------------------------------------+

空间通过 “引用链接 (Logical Link)” 模式从属于该空间的物理设备获取数据。

  1. 架构原则 (Architecture Positioning)
    • 感知逻辑下沉:物理层面的传感器融合(如:屏蔽离线、多点均值)由物理中枢执行。
    • 语义映射对齐:AI 侧仅负责 1:1 的语义绑定,不执行原始数据加工。
  2. 分级级联选择 (Cascading Select)
    • Step 1 定分类:管理员从预设分下选取感知大类。分类项严格采集自《标准化语义映射集》中 Role 为 PerceptionBoth 的子项,不得随意扩展。
    • Step 2 定设备:下拉框仅展示当前空间及下属空间内,已配置能力映射且包含对应语义类型(如:hvac_indoor_tempfloat 类型感知点)的设备。
    • Step 3 确认映射:选中后,该空间即与该设备的具体物理点位建立“虚拟感知链路”。
  3. 数据契约 (Data Contract)
json
{
  "temperature": {
    "ref_entity_id": "UUID_OF_LOGIC_ENTITY", 
    "percept_intent": "hvac_indoor_temp"
  }
}
  1. 单一真相原则 (Single Source of Truth)
    • 每个环境感知维度(如:温度)仅允许绑定 一个主数据源,避免 AI 推理冲突。
  2. 链路健壮性 (Link Resilience)
    • 若被引用的设备被移除或点位映射失效,空间详情页的该配置项将 标红高亮并进入“链路熔断”状态,提醒管理员重新挂载,同时 AI 将不再回答该空间的相关环境问题。

5.3.4 处理闭环与更新逻辑说明:

  1. 多维变更Diff展示:如果发生物理变更,详细展示 名称、空间路径空间类型 的新旧对比。

  2. 防御性状态保持与异常消警: 当产生 [⚠️物理变更] 异常时,管理员点击 [采纳 IoT 更新] 后,系统自动更新底层物理属性。

    • ⚠️ 状态防诈尸机制:如果采纳前该空间因异常被降级为“已停用”或原本就是“已停用”,采纳后严格保持“已停用”状态不变,需用户确认无误后手动拨动开关生效,防止未配好别名的空间意外暴露。
    • 路径递归补全与自动跳转:如果设备的“物理路径”发生了跨区移动,系统在采纳该路径前,会检查目标路径是否纳管,若未纳管则递归式静默创建所有缺失层级。重点:一旦发生空间跃迁,系统会自动重定位并展开左侧树的全新位置,保持用户的处理连贯性。
    • AI 路径自动重构: 物理路径重构后,所有依赖该路径构建的向量化字符串都会被系统自动触发重写。
    • 人工责任转移: 采纳更新后,强提示管理员人工核对 语义别名 框内是否还遗留有矛盾的别称。
  3. 降级只读模式: 若该资源处于 [💀物联信息丢失] 的异常状态下,整个配置抽屉内的配置组件将强制进入全局 ReadOnly (只读) 状态,隐藏“采纳”及“保存”等按钮,防止死链数据的修改。

  4. 规则冷启动: 引入资源时采用强规则策略:

    • 别名初始化: 直接截取 IoT [原始名称] 填充为默认别名。
    • 无感录入: 抽屉内增加别名时,自动拦截本资源内的完全重复,但不再拦截跨空间的同名情况(依靠大模型的上下文与 Base Weight 判断)。
  5. 权重定义与 UI 认知映射 (Base Weight): 保持底层存储 0.1~1.0 数值模型不变,默认值为 0.50,UI 加强业务定性标签降低理解门槛:

    • 0.1 - 0.3 (次级排他):极弱存在感区域(如管道井、天台),AI 在泛化意图猜测时尽最大可能避开该项。
    • 0.4 - 0.7 (普通权重):常规会议室、办公区,无需特意干扰(默认取 0.5)。
    • 0.8 - 1.0 (核心地标):大堂中庭、总裁办等敏感区域。当有员工说“去大厅”,只要无长上下文限定,算法总是倾向匹配给权重最高的那个“大厅”。
  6. 插件化预加载:

    • 依赖物理层传导过来的 [空间类型]:若判断是“会议室”等商用空间,系统会自动为其预装 [会议预定] 插件页签。
    • 点击 [+ 添加能力] 可手工任意挂载控制/能耗等各类插件。
  7. 飞书校验: 调用接口验证 Calendar ID 是否有效。

  8. 保存生效: 提交所有变动并更新数据库,通过触发器同步刷新向量库 (Vector DB) 数据切片。

6. 核心技术策略 (Technical Strategy)

6.1 向量化策略 (One-to-Many Vectorization)

采用拆分存储策略,一条 SQL 实体记录对应多条 Vector DB 记录,以覆盖不同的自然语言表达。

  • ETL 触发: 用户点击配置抽屉的 [保存生效]
  • 拆分逻辑: 遍历 aliases 数组(含原名、全路径名、人工别名)。
  • 前置属性 (Pre-Filter Fields)
    • entity_type: SPACEDEVICE
    • cap_tags: 该实体拥有的能力标签数组(如 ["meet", "control"])。
  • 存储示例:
    • vec("305会议室") -> Payload: { "ref_id": "SP01", "entity_type": "SPACE", "cap_tags": ["meet"] }
    • vec("金螳螂/1楼/305会议室") -> Payload: { "ref_id": "SP01", "entity_type": "SPACE", "cap_tags": ["meet"] }
    • vec("VIP室") -> Payload: { "ref_id": "SP01", "entity_type": "SPACE", "cap_tags": ["meet"] }

6.2 数据一致性与冲突检查

  • 弹性校验: 空间与设备别名不再强制全局唯一。系统支持多个资源共享相同别名,具体匹配逻辑下沉至 Agent 推理层。
  • 后端存储: 保存时仅执行格式校验,不再报错冲突。

6.3 Agent 槽位填充策略 (Slot Filling)

解决用户指令中设备缺失的问题。

  • 显式提取: LLM 直接提取("打开305的空调" -> Device="空调")。
  • 隐式推理:
    • 若 Device 槽位缺失,Agent 锁定空间后,查找该空间下具备对应 Intent 能力的设备。
    • 优先匹配 is_default=true 的设备(如群控器)。

6.4 会议能力执行规则 (Meeting Implementation Rules)

鉴于各预约平台(飞书/钉钉)的技术差异与 API 限制,物理执行层需遵循以下规则:

  1. 静默默认日历策略 (Silent Calendar Default)
    • 对于飞书与钉钉平台,API 的 calendar_id 参数在代码封装层统一硬编码/默认为 primary
    • 除非业务后续涉及第三方共享日历代理配置,否则管理后台不应将此字段暴露给用户,以保持纳管流程的精简。
  2. 钉钉忙闲分批对账 (DingTalk Chunking Utility)
    • 由于钉钉忙闲查询接口单次 roomIds 有效负载受限(建议不超过 5 个),物理执行逻辑在对“大规模同层空间”或“多候选会议室”进行可用性冲突检测时,必须执行分批请求(每批 5 个)。
    • 执行层应封装此 Chunking 逻辑,对上层 Agent 屏蔽平台请求次数差异。
  3. 多平台 ID 路由转换
    • 语义层逻辑应统一使用 capabilities.meeting.config.room_id (或 resource_id) 进行透传。
    • 后端 Service 需根据 platform 标签,分别映射至对应的 API 参数名。

7. 数据模型 (Data Model - Space)

7.1 实体基础表 (ai_entities - Space)

字段类型必填说明
idUUIDYesAI 系统主键
iot_ref_idStringYesIoT 平台原始 ID (SpaceID)
typeEnumYesSPACE
ai_statusEnumYesACTIVE, DISABLED
sync_errorEnumNoCHANGED, ORPHAN
base_weightFloatYes默认 0.50
aliasesJSONYes字符串数组 ["别名1", "别名2"]
capabilitiesJSONNo插件能力配置容器

7.2 空间插件能力配置 (capabilities)

Meeting Plugin (Key: meeting)

json
{
  "platform": "feishu",
  "config": {
    "resource_id": "xxx",             // 飞书会议室资源ID
    "capacity": 10                    // 容纳人数
    // calendar_id 内部默认 primary,无需 UI 填写
  }
}

// 钉钉配置示例
{
  "platform": "dingtalk",
  "config": {
    "room_id": "xxx",                 // 钉钉会议室ID
    "capacity": 10,                   // 容纳人数
    // calendar_id 固定为 primary,不暴露给用户
    "app_link_supported": true 
  }
}

// 自有系统配置示例
{
  "platform": "internal",
  "config": {
    "room_id": "xxx",                 // 业务系统会议室唯一标识
    "capacity": 10,                   // 容纳人数
    "api_endpoint": "https://api.co.com" // 业务系统回调地址
  }
}

Control Plugin (Key: control)

json
// 设备侧:定义功能映射 (Capability Mappings)
{
  "mappings": [
    {
      "semantic_key": "hvac_power",
      "action": {
        "property": "switch",
        "type": "bool",
        "mapping": { "on": 1, "off": 0 }
      },
      "feedback": {
        "property": "switch",       // 若为 null 或与 action 一致,则视为同步
        "sync_with_action": true
      }
    }
  ]
}

// 空间侧:定义全局开关
{
  "enabled": true             // 决定该空间是否允许 AI 控场
}

Sensing Plugin (Key: sensing)

json
// 空间侧:定义环境感知链路(链接至设备感知映射)
{
  "temperature": { 
    "ref_entity_id": "UUID",    // 关联的设备 AI 实体 ID
    "percept_intent": "hvac_indoor_temp" // 对应的设备感知语义标识
  },
  "humidity": {
    "ref_entity_id": "UUID",
    "percept_intent": "hvac_indoor_humi"
  }
}

Released under the Private License.