hass-agent-llm
aradlein/hass-agent-llm加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
一个场景,让你 3 秒理解这个项目在做什么: 深夜,你迷迷糊糊对着手机说"把卧室灯调暗到 30%",小爱同学说"好的"——但你其实还有 3 盏灯亮着,而且你忘了客厅空调还开着 26 度。这些问题,一个真正的智能家居助手应该主动知道,但它不知道,因为传统语音助手只会执行命令,不懂你家的"全局状态"。
Home Agent 解决的就是这个问题:它让大语言模型(LLM)真正"看懂"你的家——知道每盏灯的状态、每个房间的温度、每个设备的关系,然后给你真正智能的回应,而不只是机械执行。
Home Assistant 是目前最强大的开源智能家居平台,支持超过 2000 个设备品牌,从米家到飞利浦 Hue,从小米门锁到大金空调,全都能统一管理。但它的原生对话助手(Conversation Agent)长期是个短板:只能听懂预设指令,"打开客厅灯"可以,"把客厅灯调成暖光然后开一下电视"就抓瞎了。
作者 aradlein 的需求很简单:能不能用 GPT-4(或者本地的 Ollama)来控制 Home Assistant?让 AI 直接理解自然语言,自动知道家里设备的状态,还能调用工具完成复杂任务?这就是 Home Agent 诞生的起点。
想象你的智能家居原本是一座没有前台的大楼——每盏灯、每个开关都是独立的房间,你要告诉前台(LLM)"去三楼左转第二个房间开灯",但前台根本不知道三楼有几盏灯、它们现在是什么状态。
Home Agent 就是在中间加了一层"管家系统":
Home Agent 集成了 OpenAI、Azure OpenAI、Ollama、LocalAI、LM Studio 等任何 OpenAI 兼容的 LLM 端点。配置一个 Base URL 和 API Key,立刻就能用自然语言控制全家设备。
实际体验是什么样的? 你可以对着 Home Assistant 说:
"晚上好,我准备看电影了"
Home Agent 识别到这是你自定义的一个"观影场景",自动调用一系列工具:关闭客厅主灯 → 打开电视背景灯带(RGB 暖橙,30%亮度)→ 拉上客厅窗帘 → 把空调调到 24 度。传统的 IFTTT 自动化做不到这么自然,因为 IFTTT 只认"如果...那么"的固定规则,而 Home Agent 可以理解"电影"这个抽象概念背后的具体设备动作。
更有趣的是多模型组合:你可以用一个轻量本地模型(如 Ollama 的 llama3.2:3b)做快速指令解析,再用云端大模型(如 GPT-4o)做复杂推理。"关灯"用本地模型 200ms 响应,"分析一下我这周的用电趋势"用 GPT-4o 给你一份完整报告。
这是 Home Agent 区别于普通对话式家居控制的核心能力。它提供三种上下文注入模式:
直接模式(Direct Provider):每次对话时,实时拉取 Home Assistant 中所有设备的当前状态,把相关实体注入 LLM 的 prompt 中。比如你说"客厅太热了",Agent 立刻知道客厅当前温度 28 度、空调是 26 度正在运行,就能给出智能建议"客厅比卧室热 4 度,要我把客厅空调调低 2 度吗?"
向量数据库模式(VectorDB Provider):用 ChromaDB 做语义索引,把设备状态、对话历史、自动化日志全部向量化。AI 搜索"我家客厅的灯光设置"时,不再只匹配"客厅"关键词,而是理解"客厅灯光"和"起居室氛围"是同一个物理空间,召回率大幅提升。
记忆模式(Memory Provider):ChromaDB 的持久化版本,专门存储用户的偏好和长期信息。你告诉 AI"我睡眠时喜欢全黑加 22 度",它会记住,下次你说"准备睡觉"时自动应用这套设置,不需要每次重复。
Home Agent 提供了内置工具和可扩展工具两层:
内置工具:
ha_control:直接控制设备(开关、亮度、色温、温度等)ha_query:查询设备状态memory_tools:存储和召回记忆external_llm:委托给其他 LLM 做专项分析自定义工具:用户可以在 configuration.yaml 里声明 REST API 工具和 Home Assistant 服务工具,完全不需要改代码。比如接一个天气 API(查询室外温度辅助空调节能决策)、接一个日历 API("我明天上午有什么安排?")或者接一个语音播报服务(LLM 的回复直接转语音播报)。自定义工具通过 YAML 配置声明,LLM 自动发现并调用。
前置条件:已有运行中的 Home Assistant(版本 2026.3.1+)。这是最重要也是最麻烦的前提——如果你是 Home Assistant 新用户,光是搭建 HA 环境本身可能就要花几个小时。
安装方式:
方式一(推荐):通过 HACS 安装,类似于 Home Assistant 的"应用商店"。在 HACS → 集成 → 自定义仓库中添加 https://github.com/aradlein/hass-agent-llm,搜索 Home Agent,一键安装,全程不需要敲任何命令。
方式二(手动):下载 release 包,把 custom_components/home_agent 整个目录复制到 HA 的 config/custom_components/ 下,重启 HA。适合 HACS 不可用的环境。
配置:通过 HA 的 Web UI 配置向导,设置 LLM 端点(OpenAI/Ollama)、模型名称、API Key。整个配置过程 10-15 分钟。
可选进阶组件:如果你想启用向量检索和记忆系统,还需要额外部署 ChromaDB 服务和配置 embedding 提供者(OpenAI text-embedding-3-small 或 Ollama 的本地 embedding 模型)。这一步大约增加 30-60 分钟。
从 ARCHITECTURE.md 的 Mermaid 图可以看出,Home Agent 的架构非常清晰,核心组件各司其职:
Agent 层(agent/):主协调器,core.py 管理对话流程,llm.py 封装 LLM 调用(含流式输出支持),streaming.py 处理 SSE 流式响应,memory_extraction.py 从对话中自动提取记忆条目。
Context 层(context_providers/):三种上下文注入策略的抽象实现。base.py 定义统一接口,direct.py 实时拉取 HA 实体,vector_db.py 做语义检索,memory.py 做长期记忆。
Tool 层(tools/):工具注册和执行。registry.py 管理所有工具的注册,ha_control.py 和 ha_query.py 封装 HA API 调用,custom.py 处理用户自定义 REST/Service 工具。
Memory 层(memory/):记忆系统的核心逻辑,validator.py 负责记忆条目的重要性评分(0-1 分),只有高于阈值的条目才会被存储。
代码质量方面,仓库配备了完整的 pyproject.toml:pytest 测试(支持 pytest-xdist 并行,asyncio 模式)、mypy 严格类型检查、black 代码格式化、isort 导入排序,还有 CI workflow 自动化验证。整体代码规范程度在同类 Home Assistant 插件中属于较高水平。
Home Assistant 新手绕道:如果你还没有用 Home Assistant,这个项目对你的价值接近零。安装文档里明确写着"需要 Home Assistant 2026.3.1+",而 HA 本身的安装和配置本身就是一道门槛(HACS、系统依赖、配置 YAML,每一步都可能有坑)。
云端 API 依赖:虽然支持 Ollama 本地模型,但向量检索、embedding 生成默认依赖 OpenAI API(或者需要自己搭建 Ollama embedding 服务)。如果你追求完全的本地化离线部署,需要额外折腾。
记忆系统的准确性:自动记忆提取依赖 LLM 的 summarization 能力,不同模型效果差异较大。有些用户反馈"AI 记错了我的偏好"——这是一个目前所有 AI 记忆系统都面临的根本性挑战,不是 Home Agent 独有的问题。
LLM 响应延迟:通过 Home Assistant 的语音助手调用时,LLM 的推理延迟(即使是流式输出)通常在 1-3 秒,远高于传统自动化触发(毫秒级)。对于需要毫秒级响应的场景(如烟雾报警联动),纯 LLM 方案并不合适。
Home Agent 的核心价值不只是"语音控制灯光",而是展示了 Tool Calling(工具调用)+ Context Injection(上下文注入)+ Long-term Memory(长期记忆) 三者结合的 Agent 架构在垂直领域的落地可能性。
从 GitHub 的更新日志来看(v0.9.5 修复向量索引优化、v0.9.4 修复 embedding 缓存内存泄漏),项目处于活跃维护状态,开发者对性能和稳定性都有追求。Stars 虽只有 46,但这个数字对标的是 Home Assistant 生态内的小众插件赛道,46 stars 在 HA custom component 中已经算是值得关注的存在。
如果你已经在用 Home Assistant,想把"OK Google,把客厅灯调成暖光然后关掉电视"这种半结构化命令变成真正自然流畅的对话,Home Agent 值得一试。如果你还没有 Home Assistant,先把 HA 跑起来再说——这才是真正的门槛。