一个 Token 管全屋,Hermes 接 Home Assistant 的落地清单

一个 Token 管全屋,Hermes 接 Home Assistant 的落地清单

前门传感器在凌晨三点被触发,走廊灯自己亮了,手机上多了一条消息,前门已打开,走廊灯已自动开启。没人喊一句指令,这是 Agent 自己盯着传感器、自己做的决定。

传统语音助手做不到这种事。Alexa、Siri 这类产品做的事情其实很单一,你给一条指令,它翻译成一次设备操作,仅此而已。你跟它说我困了,它一脸懵。Hermes Agent 不一样,你说「我要睡了」,它记得你的习惯,关客厅灯、卧室灯调到两成亮度、恒温器降到 20 度、顺手检查前门锁没锁,一次全做完。下一次你再说同样的话,它已经把这套操作沉淀成了「睡前例程」技能,执行更快。Reddit 的智能家居社区有人从别的 AI 方案切过来,帖子标题直接管这叫 killer move,差距的根源不在模型更聪明,在 Agent 架构本身。

这篇按交付动线把接入、工具、语音、定时、排障一次拆完,给要落地全屋智能管家的工程师一份能照着走的清单。

一个 Token,两条通道

Hermes 跟 Home Assistant 的交互走两条互补的通道。REST 工具是主动控制,你对管家说帮我开灯,它去执行,方向是 Hermes 指向 HA。WebSocket 网关是被动响应,管家自己盯着门窗传感器,发现异常主动来报信,方向是 HA 指向 Hermes。两条通道由同一个令牌激活,在 .env 里设好 HASS_TOKEN,四个控制工具和网关监听同时可用。

接入只要三步。第一步,在 HA 里点左下角用户名进 Profile,滚到 Long-Lived Access Tokens 创建一个长期访问令牌。第二步,把令牌写进 Hermes 的 .env,HA 地址不是默认值的话连 HASS_URL 一起改。第三步,在 config.yaml 里配好网关监听规则,启动 Gateway,先用 curl 带上令牌打一下 HA 的 API 确认连通。

第三步是真正的交付重点。网关默认不转发任何事件,你不配监听规则,所有状态变化被静默丢弃,启动日志里只有一条警告,很多人卡在这以为是自己连错了。监听建议从三个域起步,climate 管温度异常,binarysensor 管门窗开关,alarmcontrolpanel 管报警触发,这三个域覆盖了最有实用价值的自动化场景。灯、锁、窗帘按需再加。同时用 ignoreentities 屏蔽 CPU 温度、系统运行时间这类高频但没用的传感器,它的优先级最高,压过一切监听规则。同一台设备的事件再配 30 秒冷却,噪音基本就干净了。

老雷给大家提个醒,别图省事开 watch_all 收全部事件,智能家居传感器一天几千次状态上报,全收等于给自己造了一个消息瀑布。

连接稳定性这块可以放心,WebSocket 带 30 秒心跳保活,断线自动重连,退避间隔按 5 秒、10 秒、30 秒、60 秒逐级拉长,出站通知走独立的 REST 会话,不存在读写互相卡死的问题。

FDE 视角再给三个高频排障点。401 认证失败,九成是拿界面会话的短期 Token 冒充长期令牌,回 Profile 页重建一个就好。改了 .env 却不生效,环境变量只在进程启动时读一次,重启 Gateway 才算数。报 conversation entity not found,是 HA 那边没配 Assist 对话代理,去 Voice assistants 里加一个,再把实体 ID 填回配置。

系统图双通道架构,Agent 与房屋模块间主动控制与事件监听两条反向连线由同一令牌激活

四个工具,从开灯到全屋安检

Hermes 注册了四个 HA 工具,全走 LLM 原生的工具调用,你用自然语言提需求,Agent 自己推理调哪个、传什么参数。

halistentities 负责列实体,支持按域和区域过滤,你说列出客厅所有的灯,它就返回实体 ID、状态和友好名称。hagetstate 查单个实体的全部属性,亮度、色温、温度设定点、最后变更时间都在。halistservices 列出某类设备支持哪些操作和参数,相当于翻说明书。真正干活的是 hacallservice,所有设备控制都从它走。

举一个能看出差距的例子。你说家里安全吗,Agent 会自己编排一串动作,先查全部门窗传感器,再查报警面板状态,然后查所有锁具,收尾汇总成一份人话报告,所有门窗已关闭,报警系统已布防,锁具全部锁定。这不是命令中继,是多步编排,查什么、按什么顺序查、怎么汇总,全是 Agent 自己推理的。Intent 模板匹配那一套做不了这个。

让 AI 碰物理设备,安全机制必须单独说。Hermes 把六个危险服务域硬编码封锁,shellcommand、commandline、pythonscript、pyscript、hassio、restcommand 一个都调不了,分别对应任意命令执行、脚本执行、主机重启和 SSRF 这几类攻击面。实体 ID 走正则校验防注入,路线图里还排了审批闸门和服务白名单。

你能看清哪些操作被放行、哪些被封锁、为什么封锁,这种可审计的安全模型,是让 AI 碰物理设备的前提。

这一点比 Alexa 和 Google Home 的黑盒透明得多,也是老雷认为企业环境里敢用它管设备的底气所在。

系统图展示四个智能家居工具方块,安全检查路径依次经过门窗传感器、报警面板与锁具汇入报告

语音和定时,把管家钉在墙上

语音链路是一条直线,你说一句话,faster-whisper 在本地转写成文字,Agent 推理并调用对应工具,设备执行完再用 TTS 语音回你。零成本组合是现成的,faster-whisper 本地转写免费,Edge TTS 免费,中文场景选小晓的音色,自然度已经够用。六种 STT 和六种 TTS 可以任意混搭,想要更好的音色再换 ElevenLabs 这种付费档。

最接近智能音箱的体验是 Discord 语音频道。装好音频依赖后,在文字频道发一条 /voice join,Hermes 进频道,你直接开口说打开客厅的灯,几秒后它语音回你客厅灯已打开。Mac 上需要 brew 装 portaudio、espeak-ng、opus、ffmpeg 这几样,再往里注入 pyaudio 和 PyNaCl,装完就能用。

定时自动化是管家的另一半。Hermes 内置 Cron 调度器,跟 HA 原生自动化的区别在于,任务用自然语言定义、Agent 智能执行、支持多步推理和跨平台通知。四个配方直接抄。早间例程,每天 7 点,卧室灯调到一半亮度、恒温器设 22 度、厨房音箱播新闻,结果投递到 Telegram 和 HA 通知面板。夜间安全检查,每天 22 点,查全部门窗、报警面板、锁具,发现没关的先锁定再报告。恒温器分两班,工作日 8 点切白天模式,周末 9 点切全天模式。能耗监控每小时跑一次,用无 Agent 模式直接执行脚本查询电表传感器,一次 LLM 都不调,纯零成本。

常规动作用 HA 原生自动化的确定性规则,需要理解和判断的活交给 Agent,这条分界线划清楚,系统才稳。

调度状态持久化在 SQLite 里,Gateway 重启自动恢复,投递目标支持来源对话、本地文件、Telegram、Discord、HA 通知面板,逗号分隔可以组合投。

Apple 生态的用户还有一层加成。你说明天下班前提醒我关掉花园灌溉,Agent 同时干两件事,建一条 Apple Reminders 到点提醒你,再挂一个 Cron 任务到点自动关阀,提醒和执行一次配齐。洗衣机完成的功率变化被 HA 捕捉到,顺手往 Apple Watch 推一条取出衣物。配合 FindMy 的位置感知,离家自动布防也是现成的组合。

米家怎么办,跟别的方案比个账

国内家庭绕不开的问题,家里一堆米家设备怎么办。路径很清晰,米家设备连到 HA 的 Xiaomi Miot Auto 集成,设备变成普通 HA 实体,Hermes 这边一个字都不用改,能被列出来的就能被控制。小米空调、Yeelight 灯泡、Aqara 门窗传感器,在 Agent 眼里没有任何区别。不用替换现有设备,加一层桥接就完事。

跟主流方案比一比。HA 加 OpenAI Conversation 是最常见的组合,在 HA 内部跑一个对话代理,靠预定义的 Intent 模板匹配,识别到「开灯」就分发到预设动作,没有持久记忆,每次对话独立,AI 层每月还要 20 美元起步。Hermes 是独立 Agent 跑在 HA 外面,LLM 原生工具调用加三层持久记忆,复杂操作做完还会自动沉淀成可复用技能,模型随便换,接本地 Ollama 可以零成本。home-llm 是另一个极端,专为设备控制微调的小模型,资源占用极低、完全本地,代价是除了控制设备什么都不会。Apple 那边 WWDC26 之后 Siri AI 加上自然语言组装快捷指令也强了不少,但设备上限锁死在 HomeKit 生态,而 Hermes 走 HA 兼容四千多个品牌,还能用 iMessage 控制非 HomeKit 设备,这是 Apple 自己的方案都做不到的事。

部署形态也有得选。前面讲的都是 Hermes 跑在 HA 外面的独立进程方案,社区开发者把整个 Hermes 打包成了 HA Add-on,装进 HA 内部,侧边栏直接管理,新版还支持多个 Agent 实例并行。另有一个 HACS 集成走反方向,让 HA 的 Assist 语音管线把 Hermes 当成对话引擎来调,家里有本地语音卫星设备的场景正好用上,两种方式可以并存。

我的结论很简单,只要语音开关灯,home-llm 这种轻量方案够用还省心。想要一个记得你习惯、会学新操作、能在 Telegram 远程使唤的管家,Hermes 加 HA 目前是开源阵营里唯一成熟的答案。

收尾照例给一份验收清单。长期访问令牌创建并写入 .env,网关监听配了至少一个域,ignore 和冷却配好,四个 HA 工具在 hermes tools 里可见,语音链路跑通一次真实开关灯,Cron 任务投递目标验证过。六项全绿,这个管家才算交付。

智能家居折腾到这一步,我的感受是,设备的多少和贵贱早就不重要了,重要的是家里第一次有了一个不用你操心、自己会看会想的枢纽。老雷的判断是,语音只是入口,主动性才是智能居家的下一站,谁能先盯着你的家替你操心,谁就赢了。

系统图展示米家设备经 Home Assistant 桥接模块接入 Agent,旁边对照方案的单向虚线停在中途