ai_automation_suggester
Home Assistant AI 自动化顾问:自动分析你的智能家居环境,用 LLM 生成量身定制的
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Home Assistant AI 自动化顾问:自动分析你的智能家居环境,用 LLM 生成量身定制的
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你花了半年时间把 Home Assistant 打造成了一个超级智能中枢——接入了几十个设备、传感器、摄像头和灯光系统。但问题随之而来:设备越多,你越难发现它们之间的关联。某个清晨,你突然意识到浴室的除湿机和客厅的温度传感器其实可以联动,却因为设备太多而一直没有想起来。
这就是 AI Automation Suggester 要解决的问题。它是一个 Home Assistant 自定义集成,通过连接大语言模型,自动分析你的智能家居环境,生成「量身定制」的自动化建议。你不需要懂 YAML,它帮你写好,然后你只需点几下按钮就能实现。
图1:Dashboard 卡片展示 AI 生成的自动化建议,包含自然语言描述和可直接复制的 YAML 代码
Home Assistant 是全球最大的开源智能家居平台,支持数千种设备和协议。但它的门槛也很明显:创建自动化需要写 YAML,这对普通用户来说是道坎。随着设备增多,「我知道可以自动化,但不知道怎么写」成了普遍痛点。
作者 ITSpecialist111 开发这个集成的初衷,就是希望用 AI 的理解能力,把「设备状态」翻译成「可行的自动化」。你只需要告诉它:「帮我看看家里有什么可以优化的」,它就能给你具体方案。
集成启动时,会通过 Home Assistant 的 Registry API 收集你的所有实体(entities)、设备(devices)、区域(areas)和现有自动化。它不是简单罗列,而是理解设备之间的关系:比如 climate.living_room 和 sensor.temperature_ outdoor 在逻辑上是关联的。
你可以配置过滤器,例如只分析 light 和 switch 域,或者排除某个区域,甚至限制分析的实体数量(entity_limit)来控制 Token 消耗。
采集到的数据被注入到一个精心设计的系统提示词(System Prompt)中。提示词描述了你的 Home Assistant 实例的具体配置,包括设备能力、区域归属、现有自动化等。
关键设计:结构化输出。集成使用 litellm 库对多个 Provider 统一调用,兼容 OpenAI GPT、Anthropic Claude、Google Gemini、Groq、Ollama(本地)等模型。对于支持结构化 JSON 的模型,直接要求模型返回 JSON;否则降级为从 Markdown YAML 代码块中正则解析。这种双保险策略保证了建议的可靠性。
项目内置了 model_catalog.py,维护了一个模型能力目录,记录每个模型的上下文窗口、最大输出 Token、是否支持结构化输出、是否支持推理等属性。当前支持的 Provider 和默认模型:
claude-sonnet-4-6,支持结构化 JSON 和推理gpt-5.4-mini,支持 Responses APIgemini-2.5-flash,支持 JSON Schemallama-3.3-70b-versatile,本地推理速度极快这个设计让用户可以根据隐私需求(本地 vs 云端)和成本偏好灵活选择。
AI 返回的建议包含:标题(title)、描述(description)、可直接粘贴的 YAML 自动化代码、以及置信度评分(confidence)和警告信息(warnings)。这些建议通过三个渠道呈现:
description 和 yaml_block 属性渲染GET /api/ai_automation_suggester/suggestions 供自定义卡片调用建议被标记为 new / accepted / declined / dismissed 四种状态,支持历史追踪。
项目采用标准 Home Assistant 自定义集成结构,共 18 个核心文件:
| 文件 | 职责 |
|---|---|
manifest.json | 插件元数据,声明依赖(aiohttp、litellm、anthropic、PyYAML、voluptuous) |
config_flow.py | UI 配置向导(~30KB),处理 Provider 选择、API Key 存储、模型配置 |
coordinator.py | 数据协调器,调用 Registry API 采集实体信息,调用 AI Provider |
sensor.py | Sensor 平台,实现 7 个诊断 Sensor(建议状态、Provider 连接、Token 限额等) |
suggestions.py | 解析 AI 返回的 JSON/YAML,过滤异常内容,格式化建议 |
model_catalog.py | 模型能力元数据库,定义每个模型的调用策略 |
endpoint_utils.py | 端点规范化(Ollama/OpenAI 兼容端点 URL 转换) |
store.py | 建议历史持久化存储 |
api.py | REST API 视图,供 Dashboard 卡片读取建议 |
www/ 目录 | 前端 Lovelace 卡片(JavaScript) |
automations/ | 示例自动化 YAML(新增实体触发、每周分析) |
translations/ | 12 种语言本地化(中文包含在内) |
测试覆盖:项目包含 tests/ 目录,使用 pytest-homeassistant-custom-component 插件。GitHub Actions 配置了 hassfest(Home Assistant 配置验证)和 HACS 校验,确保集成符合平台规范。
代码质量:使用 ruff 进行 linting(Python 3.9+),遵循 Home Assistant 的编码规范。版本号 1.5.7,已发布多个正式版本,社区活跃。
推荐通过 HACS(Home Assistant Community Store)一键安装,在 HACS → 集成 → 搜索「AI Automation Suggester」即可。安装后重启 Home Assistant,然后在「设置 → 设备与服务」中添加集成,跟随向导选择 Provider 并配置 API Key。整个过程约 10 分钟。
手动安装则需要把 custom_components/ai_automation_suggester/ 目录复制到 Home Assistant 配置目录下。
安装完成后,你可以通过三种方式触发建议生成:
ai_automation_suggester.generate_suggestions,可传参数(domains、entity_limit、custom_prompt)description 和 yaml_block这是需要认真考虑的一点:使用云端 AI Provider(OpenAI、Anthropic、Google)时,你的设备名称、实体 ID、状态数据、自动化配置等信息会上传到第三方服务器。项目在 manifest.json 中将 iot_class 标注为 cloud_polling,并在文档中明确告知了数据外传风险。
对于隐私敏感用户,项目完整支持 Ollama 和 LocalAI 两种本地模型方案,所有数据处理在你的局域网内完成,完全不接触外部网络。Ollama 支持一键部署在树莓派或 NAS 上,是隐私优先用户的理想选择。
API Key 通过 Home Assistant 的 Config Entry 机制存储,在 UI 中以密码形式遮蔽,安全性与 Home Assistant 主程序一致。
Token 消耗管理:大房子有上百个实体,全部发送给 AI 会快速消耗 Token。entity_limit 参数是控制成本的关键,但这也意味着 AI 可能错过一些关联机会。
YAML 解析的脆弱性:当 AI 返回格式不标准的响应时(特别是未使用结构化 JSON 的模型),正则解析可能产生错误建议。用户需要仔细审查 AI 生成的 YAML,不能盲目复制。
Home Assistant 版本依赖:需要 Home Assistant ≥ 2024.1,使用老版本的用户需要先升级 HA。
模型能力差异:Claude 和 Gemini 能可靠输出结构化 JSON,但自定义 Ollama 模型的输出质量取决于所选模型本身的能力,无法保证。
AI Automation Suggester 代表了智能家居领域的一个新兴趋势:AI 作为中间层,把用户意图和平台能力连接起来。它不替代 Home Assistant,而是扩展了它的易用性边界。
从技术角度看,这个项目是 LLM 应用工程 的一个优秀范例:多 Provider 统一抽象(litellm)、结构化输出降级策略(JSON → YAML 正则解析)、Token 预算控制、以及完整的插件生命周期管理。这些工程实践对其他 LLM + 垂直场景的应用有参考价值。
GitHub Star 750,虽然不算顶尖,但它在 Home Assistant 生态内拥有稳定增长的用户群和活跃的社区反馈(Issue 讨论质量高),是一个小而美的精品项目。