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 关键逻辑说明
- 双向向量化 (Dual Vectorization): 配置的“语义别名 (Alias)”是向量库检索的核心 Key。
- 空间能力三支柱:
- 会议能力: 实现从“预约 305”到具体日历/会议室 ID 的透传。
- 控制全局开关: 决定该空间是否允许被 AI 控制。
- 感知链路绑定: 空间的温湿度等“环境表现”不直接产生数据,必须挂载至特定设备的感知点位上。原则:AI 仅接入由物理中枢预处理后的“逻辑点位”(如:空间平均温),不执行原始传感器加权。
5. 空间资源管理 (Space Management UI)
5.1 界面总览:布局
主界面采用 [系统导航] - [空间层级树] - [资源工作区] 的三栏结构,实现物理空间到 AI 纳管资源的直观映射。
+----------------+--------------------------+-------------------------------------------------------------------------------------------+
| [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 关键交互说明
级联递归检索 (Recursive Retrieval): 在侧边栏点击任意节点,列表页不仅显示当前节点,还必须级联显示其下所有深度的子空间节点。
上层空间显式路径 (Parent Path Column): 由于采用了递归展示,列表必须提供“上层空间”列,标明每个节点的父级路径(如:
金螳螂 / 1楼),防止在扁平化列表中产生位置歧义。中间树 (Tree): 基于已引入AI IOT, 展示AI IoT 平台的物理拓扑结构,叶节点(会议室/房间)也须在树中显示。
双轴状态模型: 对齐 AI 状态与 IoT 同步异常。 【轴1:AI 状态 (业务主导)】
[🟢 生效中 (Active)]: 正常被向量库检索,支持 AI 语音交互。[⚪ 已停用 (Disabled)]: 管理员手动关闭。保留所有别名和能力配置,但从向量库下线该空间(例如停业装修)。注:用户还可选择在抽屉内触发
彻底移除,清除所有表数据。
【轴2:同步异常 (底层感知)】
[-]: 正常,无变化。[⚠️ 物理变更 (Metadata Changed)]: 大一统的复合状态提示。当底层 IoT 名称和/或路径发生变更时触发。点击[处理]操作打开侧边抽屉,会显式标注变更明细。注意:此状态为警告级别,不影响现有设备的底座控制,AI 纳管状态(如🟢生效中)保持不变。[💀 物联信息丢失 (Orphan)]: 最严重的破坏性状态。IoT 端已将该节点彻底物理删除。触发该状态时,系统会强制将其 AI 状态置为⚪已停用防止幽灵调用,并锁定状态禁止再次开启。列表页只能执行[查看]与彻底[移除]。
操作列双按钮设计:
[配置]/[处理]: 打开右侧配置抽屉。当同步异常为⚠️物理变更时文字切换为"处理"(蓝色高亮)。[生效]/[失效]: 直接在列表行内切换 AI 状态。仅在同步异常 非💀物联信息丢失时显示。- ⚠️ 生效前置校验: 点击
[生效]时,若该空间的 AI 别名为空,系统拦截并报错。确保被纳管空间至少有一个语义入口。
- ⚠️ 生效前置校验: 点击
5.2 核心流程 A:引入 IoT 空间资源 (Onboarding)
点击 [+ 引入 IoT 空间资源] 唤起弹窗。采用 “固定左树 + 动态右表” 的设计。
- 双重过滤: 右侧列表的数据源,同时受顶部
[类型筛选]和左侧[区域树](同 物联平台-物理空间树) 的交集控制。 - 去重逻辑: 已引入的资源在弹窗中置灰或不显示。
- 确认引入:点击 “确认引入” 按钮,引入 AI空间数据
+-----------------------------------------------------------------------------------+
| 从 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)
- 自动同步父节点 (Auto-Parent Import):
- 行为: 勾选引入任意空间节点(如:1号楼/305会议室)时,系统必须自动在后台检查并同时引入其所有的父代路径节点(1号楼、园区等)。
- 初始状态隔离: 所有通过引入操作新建的资产节点(包含目标节点与补全的父节点),其 初始 AI 状态必须强制默认为
⚪已停用 (Disabled)。管理员需进入抽屉完成语义配置后手动开启,实现“安全冷启动”。
别名初始化规则: 自动带入的节点, 初始化 AI 别名 固定为该空间的“物理名称”。无论是否冲突(如多个“机房”),引入阶段均允许存在。初始状态默认为
⚪已停用。弱校验原则: 为了降低运维复杂度,系统不再对别名执行强查重拦截。同音字或同名空间在向量检索阶段将通过相似度评分与权重(Base Weight)综合调节。
列表刷新: 引入成功后,高亮新增行,并同步更新左侧侧边栏的 AI 空间树。
5.3 核心流程 B:配置详情与异常处理 (Config & Exception Resolution)
点击列表中的 [配置] 按钮,右侧滑出抽屉。除了常规配置,这里也是解异常闭环的唯一入口。
+---------------------------------------------------------------+
| 空间配置详情 [ 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 ] | |
| +----------------------------------+ |
+---------------------------------------------------------------+
| [ 取消 ] [ 保存生效 ] |
+---------------------------------------------------------------+5.3.3 环境感知链路交互逻辑 (Sensing Link Logic)
空间通过 “引用链接 (Logical Link)” 模式从属于该空间的物理设备获取数据。
- 架构原则 (Architecture Positioning):
- 感知逻辑下沉:物理层面的传感器融合(如:屏蔽离线、多点均值)由物理中枢执行。
- 语义映射对齐:AI 侧仅负责 1:1 的语义绑定,不执行原始数据加工。
- 分级级联选择 (Cascading Select):
- Step 1 定分类:管理员从预设分下选取感知大类。分类项严格采集自《标准化语义映射集》中 Role 为
Perception或Both的子项,不得随意扩展。 - Step 2 定设备:下拉框仅展示当前空间及下属空间内,已配置能力映射且包含对应语义类型(如:
hvac_indoor_temp或float类型感知点)的设备。 - Step 3 确认映射:选中后,该空间即与该设备的具体物理点位建立“虚拟感知链路”。
- Step 1 定分类:管理员从预设分下选取感知大类。分类项严格采集自《标准化语义映射集》中 Role 为
- 数据契约 (Data Contract):
{
"temperature": {
"ref_entity_id": "UUID_OF_LOGIC_ENTITY",
"percept_intent": "hvac_indoor_temp"
}
}- 单一真相原则 (Single Source of Truth):
- 每个环境感知维度(如:温度)仅允许绑定 一个主数据源,避免 AI 推理冲突。
- 链路健壮性 (Link Resilience):
- 若被引用的设备被移除或点位映射失效,空间详情页的该配置项将 标红高亮并进入“链路熔断”状态,提醒管理员重新挂载,同时 AI 将不再回答该空间的相关环境问题。
5.3.4 处理闭环与更新逻辑说明:
多维变更Diff展示:如果发生物理变更,详细展示 名称、空间路径、空间类型 的新旧对比。
防御性状态保持与异常消警: 当产生
[⚠️物理变更]异常时,管理员点击[采纳 IoT 更新]后,系统自动更新底层物理属性。- ⚠️ 状态防诈尸机制:如果采纳前该空间因异常被降级为“已停用”或原本就是“已停用”,采纳后严格保持“已停用”状态不变,需用户确认无误后手动拨动开关生效,防止未配好别名的空间意外暴露。
- 路径递归补全与自动跳转:如果设备的“物理路径”发生了跨区移动,系统在采纳该路径前,会检查目标路径是否纳管,若未纳管则递归式静默创建所有缺失层级。重点:一旦发生空间跃迁,系统会自动重定位并展开左侧树的全新位置,保持用户的处理连贯性。
- AI 路径自动重构: 物理路径重构后,所有依赖该路径构建的向量化字符串都会被系统自动触发重写。
- 人工责任转移: 采纳更新后,强提示管理员人工核对
语义别名框内是否还遗留有矛盾的别称。
降级只读模式: 若该资源处于
[💀物联信息丢失]的异常状态下,整个配置抽屉内的配置组件将强制进入全局 ReadOnly (只读) 状态,隐藏“采纳”及“保存”等按钮,防止死链数据的修改。规则冷启动: 引入资源时采用强规则策略:
- 别名初始化: 直接截取 IoT
[原始名称]填充为默认别名。 - 无感录入: 抽屉内增加别名时,自动拦截本资源内的完全重复,但不再拦截跨空间的同名情况(依靠大模型的上下文与 Base Weight 判断)。
- 别名初始化: 直接截取 IoT
权重定义与 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(核心地标):大堂中庭、总裁办等敏感区域。当有员工说“去大厅”,只要无长上下文限定,算法总是倾向匹配给权重最高的那个“大厅”。
插件化预加载:
- 依赖物理层传导过来的
[空间类型]:若判断是“会议室”等商用空间,系统会自动为其预装[会议预定]插件页签。 - 点击
[+ 添加能力]可手工任意挂载控制/能耗等各类插件。
- 依赖物理层传导过来的
飞书校验: 调用接口验证 Calendar ID 是否有效。
保存生效: 提交所有变动并更新数据库,通过触发器同步刷新向量库 (Vector DB) 数据切片。
6. 核心技术策略 (Technical Strategy)
6.1 向量化策略 (One-to-Many Vectorization)
采用拆分存储策略,一条 SQL 实体记录对应多条 Vector DB 记录,以覆盖不同的自然语言表达。
- ETL 触发: 用户点击配置抽屉的
[保存生效]。 - 拆分逻辑: 遍历
aliases数组(含原名、全路径名、人工别名)。 - 前置属性 (Pre-Filter Fields):
entity_type:SPACE或DEVICE。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 限制,物理执行层需遵循以下规则:
- 静默默认日历策略 (Silent Calendar Default):
- 对于飞书与钉钉平台,API 的
calendar_id参数在代码封装层统一硬编码/默认为primary。 - 除非业务后续涉及第三方共享日历代理配置,否则管理后台不应将此字段暴露给用户,以保持纳管流程的精简。
- 对于飞书与钉钉平台,API 的
- 钉钉忙闲分批对账 (DingTalk Chunking Utility):
- 由于钉钉忙闲查询接口单次
roomIds有效负载受限(建议不超过 5 个),物理执行逻辑在对“大规模同层空间”或“多候选会议室”进行可用性冲突检测时,必须执行分批请求(每批 5 个)。 - 执行层应封装此 Chunking 逻辑,对上层 Agent 屏蔽平台请求次数差异。
- 由于钉钉忙闲查询接口单次
- 多平台 ID 路由转换:
- 语义层逻辑应统一使用
capabilities.meeting.config.room_id(或resource_id) 进行透传。 - 后端 Service 需根据
platform标签,分别映射至对应的 API 参数名。
- 语义层逻辑应统一使用
7. 数据模型 (Data Model - Space)
7.1 实体基础表 (ai_entities - Space)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | UUID | Yes | AI 系统主键 |
iot_ref_id | String | Yes | IoT 平台原始 ID (SpaceID) |
type | Enum | Yes | SPACE |
ai_status | Enum | Yes | ACTIVE, DISABLED |
sync_error | Enum | No | CHANGED, ORPHAN |
base_weight | Float | Yes | 默认 0.50 |
aliases | JSON | Yes | 字符串数组 ["别名1", "别名2"] |
capabilities | JSON | No | 插件能力配置容器 |
7.2 空间插件能力配置 (capabilities)
Meeting Plugin (Key: meeting)
{
"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)
// 设备侧:定义功能映射 (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)
// 空间侧:定义环境感知链路(链接至设备感知映射)
{
"temperature": {
"ref_entity_id": "UUID", // 关联的设备 AI 实体 ID
"percept_intent": "hvac_indoor_temp" // 对应的设备感知语义标识
},
"humidity": {
"ref_entity_id": "UUID",
"percept_intent": "hvac_indoor_humi"
}
}