乐于分享
好东西不私藏

AI Agent 时代,如何搭一套能控制物理世界的闭环环境

AI Agent 时代,如何搭一套能控制物理世界的闭环环境
核心观点:Agent 要真正进入物理世界,缺的不是一个更会说话的模型,而是一套可靠、可审计、可恢复的执行层。

这几天,我做了一件很小、但让我很兴奋的事:把家里一堆原本互不相干的设备,统一接进了一个智能家居中枢。

一开始,它只是一个很具体的问题。

原有的灯控系统入口藏在一个小程序里。每次想开灯、关灯,都要打开小程序,点进设备管理,再一个个切换开关。

它能用,但很别扭。

它没法进入手机自动化、语音助手、智能家居面板,更没法成为 Agent 可以调用的执行工具。

于是我开始抓包。

最后,这套系统变成了这样:

  • - 通过小程序接口控制十几个灯和门锁
  • - 空调、插座、除湿机、加湿器、油烟机、音箱等设备接入智能家居中枢
  • - 不同设备被抽象成统一的实体:灯、开关、温控、传感器、门锁、媒体设备
  • - 手机快捷指令、语音助手、网页面板、自动化任务、Agent 都能调用同一套接口
  • - 智能家居中枢负责连接设备、保存状态、暴露服务、执行动作

做完之后,我更强烈地意识到一件事:

AI Agent 真正重要的能力,不只是回答问题、写代码、生成文档,而是能够可靠地进入现实世界,影响物理环境。

从一个开关开始

最早的问题很朴素:我想知道小程序里的每个接口,对应现实中的哪个开关。

我打开抓包工具,把每盏灯都点了一遍。每点一次,就看请求的 URL、Headers、Body。

很快我发现,灯控接口本身并不复杂。核心就是一个 POST 请求,Body 里有设备序列号、开关序列号、通道号和控制命令。

命令也很简单:

cmd = 1  打开cmd = 0  关闭

这意味着,只要能拿到有效登录态,就可以把这些动作写成脚本。

我做的第一层封装,是一个命令行工具:

home_switch on 10home_switch off 10home_switch off all

然后再把这个命令行工具放进智能家居中枢,用模板实体包装成标准灯光:

light.living_mainlight.kitchenlight.balcony

到这里,最重要的一步已经完成了。

一个原本只能在小程序里点的开关,变成了系统里的标准 light 实体。

这不是简单地“写了个脚本”。它意味着这个设备进入了一套统一的控制语义。

标准实体,是智能家居的通用语言

智能家居最麻烦的地方,是设备来源很杂。

不同厂商有不同的云、不同的登录态、不同的 API、不同的 App。单看每个设备,好像都能用;放到一起,就变成一堆互不兼容的孤岛。

中枢的价值,就是把这些孤岛翻译成一套稳定的实体类型:

lightswitchclimatehumidifiernumberselectsensorlockbuttonnotifymedia_player

这套抽象非常关键。

对 Agent 来说,它不应该关心一盏灯来自哪个 App、哪个云、哪个小程序。它只需要知道:

turn_on light.living_mainturn_off switch.humidifier_powerset_value number.humidifier_target_humidity 60unlock lock.main_door

当设备被标准化之后,自动化、手机快捷指令、语音助手、Agent 都可以使用同一套动作语言。

这才是智能家居进入 Agent 时代的前提。

智能家居中枢是中端,不是终端

很多人会把智能家居中枢理解成一个控制面板。

但做完这次配置后,我越来越觉得,它更像一个中间层服务。

它不是最终交互界面。

最终交互界面可以是:

  • - 手机快捷指令
  • - 语音助手
  • - 网页控制台
  • - 聊天机器人
  • - 自己写的 Agent
  • - 定时任务
  • - 地理围栏自动化

中枢真正负责的是:

  • - 连接设备
  • - 统一实体
  • - 保存状态
  • - 管理自动化
  • - 暴露服务
  • - 作为 Agent 的执行层

这很像后端系统里的 API Gateway。各种前端都可以接进来,但真实的设备控制逻辑在中间层。

这次我把中枢部署在云服务器上,再通过安全隧道暴露服务。这样手机不在家里局域网,也可以直接调用中枢服务。

例如,“关闭客厅主灯”在自动化里只是:

service: light.turn_offdata:  entity_id: light.living_main

“打开加湿器”也只是:

service: switch.turn_ondata:  entity_id: switch.humidifier_power

背后的复杂性,都被中间层吃掉了。

设备接入方式会很杂,但出口要一致

这次接入的设备,基本覆盖了智能家居里常见的几种模式。

第一类,是官方或社区集成。

一些设备可以直接接进来,自动生成开关、传感器、温控、媒体设备等实体。这是最舒服的情况。

第二类,是第三方云集成。

设备本身走厂商云,中枢通过云接口把电源、灯光、档位、模式等能力映射出来。

第三类,是设备厂商 App 背后的通用 IoT 云。

有些设备在官方集成里显示为 unsupported,不生成任何实体。但如果直接读取云端 Shadow Property,会发现它其实有完整的能力点:开关、目标湿度、档位、模式、倒计时、附加功能。

于是我把这些能力重新包装成:

switchnumberselectsensor

第四类,是完全非标准的小程序系统。

这种没有现成集成,只能抓包、识别接口、处理登录态、写脚本,再包装成实体。

这些方式难度不同,但最后都通向同一个结果:变成中枢里的标准实体。

手机不是遥控器,而是自动化入口

接入中枢之后,手机快捷指令变得很好用。

过去要控制设备,必须打开不同 App。现在可以直接在快捷指令里调用中枢服务。

例如:

service: switch.toggledata:  entity_id: switch.kitchen_fan_power

这就是“切换厨房设备电源”。

快捷指令的价值不只是手动点击,而是可以和手机本身的自动化能力组合:

  • - 到家时打开玄关灯
  • - 离家时关闭全部灯
  • - 睡前关闭灯、空调、加湿器和厨房设备
  • - 湿度低于某个值时打开加湿器
  • - 早上起床时让音箱播报天气

手机不再只是一个遥控器,而是一个自动化入口。

语音助手不应该成为系统中心

语音助手也能接入这套系统,但它在里面的位置需要摆正。

有的音箱可以作为设备进入中枢:播放音乐、播报文本、切换麦克风状态。

有的语音助手更适合作为入口:把中枢里的设备同步过去,让它负责接收自然语言命令。

关键不是某个音箱多强,而是语音助手不应该成为系统中心。

真正的中心是中枢。

语音只是众多输入方式之一。

Agent 需要一个执行层

现在很多人讨论 AI Agent,重点都放在模型、推理、规划、工具调用上。

这些当然重要。

但如果 Agent 要进入现实世界,它必须有一个稳定的执行层。

对智能家居来说,这个执行层就是智能家居中枢。

Agent 可以理解一句自然语言:

我准备睡觉了。

然后规划动作:

  • - 关闭客厅主灯
  • - 关闭厨房灯
  • - 关闭厨房设备
  • - 把空调调到合适温度
  • - 把加湿器目标湿度设到某个值
  • - 确认门锁状态

最后通过标准服务执行:

light.turn_offswitch.turn_offclimate.set_temperaturenumber.set_valuelock.get_state

这就是闭环:

感知状态 -> 理解意图 -> 制定计划 -> 调用工具 -> 改变物理世界 -> 再读取状态

没有执行层,Agent 只能停留在对话里。

有了执行层,它才真正开始影响现实。

云端和本地,需要重新分工

这次我把中枢放在云端,好处很明显:手机、外部服务、自动化入口都很容易访问。

但也带来一个限制:云服务器默认访问不到家里的局域网设备。

比如光猫、路由器、电视、蓝牙设备、局域网传感器,如果要接进来,就必须打通云端和本地网络。

可以用几类方式:

  • - 安全组网
  • - 自建 VPN
  • - 家里常开小主机
  • - 本地中枢 + 外部安全隧道

我现在的判断是:云端适合连接云 API、手机快捷指令、语音平台和 Agent;本地节点适合连接路由器、光猫、电视、蓝牙、局域网设备和低功耗设备。

更理想的结构可能是:

云端中枢 / Agent 中枢  -> 本地边缘节点  -> 局域网设备 / 蓝牙设备 / 低功耗智能设备

可维护性来自抽象层

系统复杂之后,一个自然的问题是:以后搬家、换服务器、换设备怎么办?

答案是:只要抽象层做得对,迁移成本会低很多。

设备层可能变化:

  • - 新的灯
  • - 新的路由器
  • - 新的空调
  • - 新的传感器
  • - 新的控制入口

但中枢里的实体和自动化可以保持相对稳定。

例如“睡觉模式”不应该写死某个厂商接口,而应该依赖抽象实体:

light.bedroom_mainswitch.living_ac_powerswitch.humidifier_power

只要新环境里的设备重新映射到这些实体,快捷指令、语音控制、Agent 逻辑都可以继续复用。

这就是中间层的价值。

从智能家居到物理世界 API

做完这套东西,我最大的感受是:智能家居不是一个消费电子问题,而是一个物理世界 API 问题。

灯、空调、门锁、油烟机、加湿器、除湿机只是开始。

接下来还可以是:

  • 水电气监控
  • 网络状态
  • 摄像头和门磁
  • 扫地机器人
  • 空气质量
  • 电表和能耗
  • 车辆充电
  • 日程和地理围栏

当这些东西都进入一个统一系统后,Agent 就不再只是屏幕里的助手。

它可以知道家里的状态,可以根据人的意图行动,可以在必要时提醒,也可以在明确授权后执行。

但这里有一个前提:不能让模型直接裸连设备。

更合理的方式,是让模型通过一个稳定的中间层,通过明确的权限、实体、服务、日志和状态,去控制现实。

这样才可靠,也方便审计和恢复。

最后

这次调试从一个小程序抓包开始,最后变成了一套家庭控制系统。

过程中有很多琐碎细节:

  • 登录态会过期
  • 云 API 会有区域和权限限制
  • 设备可能显示 unsupported
  • 实体 ID 需要重新命名
  • 手机自动化要一个个填 service 和 entity_id
  • 局域网设备需要额外的网络方案

但正是这些细节,让我更清楚地看到:

AI Agent 要真正进入物理世界,最缺的不是一个更会说话的模型,而是一套能把现实设备标准化、可维护、可迁移、可自动化的基础设施。

智能家居中枢不是终点。

它更像一个物理世界的 API 层。

当这个 API 层搭起来之后,Agent 才有了真正可以操作的世界。

如果把现实设备标准化为稳定的 API,Agent 才有了可操作、可维护、可迁移的世界。