Skip to content

Hermes Agent 多智能体部署 HomeAssistant — 零代码智能家居实践

一台十年前的 ThinkPad X230i,通过 Hermes Agent 的 Kanban 多智能体协作系统,零代码全自动部署 HomeAssistant 智能家居系统,并孵化出一位每天凌晨准时巡检数据的数字管家。适合对 AI Agent + 智能家居交叉领域感兴趣的开发者。

目录


古董硬件改造:打造静音 AI 沙盒主机

核心思路

视频作者将一台十年前的 ThinkPad X230i 改造为 24/7 运行的 AI 沙盒宿主机,目标是「纯净、静音、永不休眠」。

硬件升级清单

组件 原始配置 升级后 花费
硬盘 500GB 机械硬盘 500GB SSD ~$70
内存 4GB 16GB ~$30
CPU Intel i3 (X230i) 不变 $0

系统调优策略

┌─────────────────────────────────────────────────┐
│              ThinkPad X230i 改造               │
├─────────────────────────────────────────────────┤
│                                                 │
│  1. 禁用合盖休眠                                │
│     修改 logind.conf → HandleLidSwitch=ignore   │
│                                                 │
│  2. GRUB 底层参数                                │
│     60秒无操作 → 自动切断视频输出                 │
│     → 彻底屏保,省电降热                        │
│                                                 │
│  3. 压制内存交换 (swap)                          │
│     16GB 内存对 HA + Hermes 绰绰有余            │
│     → 减少 SSD 无谓磨损                          │
│                                                 │
│  4. 网络流量全局走软路由                          │
│     → 高速拉取 Docker 镜像和模型数据             │
│                                                 │
│  结果:无光污染、无风扇噪音、永不休眠            │
│       像一艘潜伏在角落的静音潜艇                 │
└─────────────────────────────────────────────────┘

最佳实践

  • ✅ 机械硬盘必须换 SSD — HA 和 Hermes 日常产生大量高频 I/O,机械硬盘影响性能且寿命堪忧
  • ✅ 16GB 内存是甜蜜点 — HA 容器 + Hermes Agent + Python 运行时,8GB 勉强、16GB 宽裕
  • ✅ 禁用 swap 保护 SSD — 服务器场景宁可 OOM 也不愿 SSD 被交换写磨损
  • ❌ 不要用笔记本内置屏幕做长期输出 — 通过 GRUB 参数切断视频输出,彻底省电

Kanban 多智能体协作:零代码部署 HomeAssistant

核心概念

Hermes Agent 的 Kanban(看板)系统是一个 持久化的 SQLite 任务队列,允许多个命名智能体(Agent Profile)在同一块看板上协作,每个任务是一个 SQLite 行,每次交接都可被任何 Agent 读写。

部署流程

用户:"我想装 HomeAssistant"
          │
          ▼
   ┌──────────────┐
   │ Hermes Agent  │ ← 像老练的 HR 总监,查阅技能库
   │ 自动规划岗位  │
   └──────┬───────┘
          │ 一口气列出 6 个专职岗位
          ▼
   ┌─────────────────────────────────────┐
   │           Kanban 看板                │
   │                                     │
   │  [DevOps]    → 服务器运维            │
   │  [Admin]     → 系统管理员            │
   │  [Hacker]    → 配置代码程序员        │
   │  [Architect] → 架构师               │
   │  [QA]        → 测试员               │
   │  [Reviewer]  → 代码审查             │
   └──────────────┬──────────────────────┘
                  │
                  ▼
   ┌─────────────────────────────────────┐
   │         任务自动流转                 │
   │                                     │
   │  DevOps: 创建 Docker 部署命令        │
   │     → 被卡住:无 Docker 权限         │
   │     → 看板上举手求助                 │
   │                                     │
   │  人类: 精准下放 docker 用户组权限     │
   │     + 文件目录所有权                  │
   │                                     │
   │  DevOps → Admin → Hacker → QA      │
   │     依任务依赖自动传递                │
   │                                     │
   │  HAAutomator: patch 工具优雅修复    │
   │     配置文件 + 建好 packages 目录    │
   └─────────────────────────────────────┘
          │
          ▼
   HomeAssistant 完美运行 ✅

关键交互:权限管理的边界感

视频作者刻意没有给 AI 系统最高权限(root),而是精准下放

权限操作 授予内容 不授予
Docker 操作 docker 用户组成员 root / sudo
文件系统 HA 数据目录的所有权 / 等系统目录
网络 通过软路由管控 防火墙规则修改

Kanban vs delegate_task 决策树

选 delegate_task 如果你需要:
  ✅ 父 Agent 需要子 Agent 的返回值才能继续
  ✅ 短期任务,不需要人类介入
  ✅ 一次性 RPC 调用

选 Kanban 如果你需要:
  ✅ 任务跨多个 Agent 边界协作
  ✅ 需要人类审批(如权限授予)
  ✅ 任务需要存活于重启之间
  ✅ 任何 Profile 都能读写任务状态
  ✅ 需要审计追踪(SQLite 持久化)

AI 接管物理世界:赛博修理工

案例 1:小米网关 MQTT 魔改

HomeAssistant 社区插件对小米多功能网关的彩色 LED 灯不支持调色和调光。Hermes Agent 通过 MQTT Bridge 直接魔改网关:

改造前 改造后
仅支持开关 亮度随心调节
固定颜色 颜色自由控制
社区插件限制 MQTT 直连绕过

案例 2:发现并修复脑裂风险

Agent 在复盘时主动发现网关暴露了双重实体(本地 + 云端),存在脑裂(Split-brain)风险:

正常状态:网关 → 单一实体 → HA
脑裂风险:网关 → 本地实体 ←→ 云端实体 → HA
                     ↑
               状态不一致!

Agent 处理:主动禁用多余的云端实体
结果:消除脑裂风险 ✅

最佳实践

  • ✅ 让 Agent 自主复盘已完成的部署 — 可能发现人眼忽略的安全隐患
  • ✅ AI 修改硬件配置时,保留原始配置的备份
  • ❌ 不要让 AI 直接操作 shell_command 等高危 HA 服务域

数字管家 Home Caretaker:凌晨两点半的灵魂

架构设计

┌──────────────────────────────────────────────────┐
│                Home Caretaker                    │
│          (Hermes Agent 克隆体)                   │
│                                                  │
│  注入 Soul.md (灵魂指令):                        │
│  ├─ 家庭环境信息                                 │
│  ├─ 宠物信息(3只猫,合计约50斤)                 │
│  ├─ 植物信息                                     │
│  ├─ 智能设备列表                                 │
│  └─ 电脑和服务器的角色定位                       │
│                                                  │
│  定时唤醒: Cron → 每天凌晨 2:45 ~ 3:45           │
│                                                  │
│  运行流程:                                       │
│  1. 连接 HomeAssistant API                       │
│  2. 读取传感器/设备状态                           │
│  3. 分析数据,识别异常                            │
│  4. 生成每日简报 → Telegram 推送                 │
└──────────────────────────────────────────────────┘

首次运行发现的问题

发现 详情 严重程度
温室效应 一楼密封阳台比室内高近 3°C,提醒关注植物水分蒸发 🟡 提醒
滤芯寿命 反渗透饮水器滤芯寿命剩余 64% 🟡 提醒
门锁异常 某时间点门锁状态为「卡住」,标记红色异常 🔴 异常
扫地机器人 记录 12:29 完成清扫,备注「在对抗三只猫制造的猫砂」 🟢 记录

Agent 的认知层次

Level 1: 数据记录
  "扫地机器人 12:29 完成清扫"

Level 2: 因果推理  
  "扫地机辛苦工作 → 对抗三只猫制造的猫砂"

Level 3: 主动关怀
  "饮水器滤芯 64% → 主动提醒更换"
  "阳台温差 3°C → 提醒植物浇水"

Level 4: 上下文理解
  "门锁卡住 → 检查是否人为操作 → 标记待确认"
  (实际是作者在门口换地毯,门没关)

Soul.md 注入模式

Soul.md 是注入给克隆智能体的系统级指令文件,定义了它的职责范围和关注重点。这是 Hermes Agent 的一个核心模式:

# 克隆智能体并注入灵魂指令
# 在 Hermes 中通过对话完成:
# "克隆你自己,命名为 HomeCaretaker,注入以下灵魂指令..."

对比:传统自动化 vs AI 管家

维度 传统 HomeAssistant 自动化 AI 数字管家 (Caretaker)
触发方式 固定规则 (if-then) 自主分析 + 主动发现
认知能力 阈值判断 (温度 > 30°C) 因果推理 + 上下文理解
异常处理 发通知 分析原因 + 标记严重程度
日常报告 每日结构化简报
学习能力 随运行积累环境认知

Hermes Agent 接入 HomeAssistant 技术细节

集成架构

┌─────────────┐     WebSocket      ┌──────────────────┐
│   Home      │ ◄═════════════════► │   Hermes Agent    │
│ Assistant   │   实时状态变更      │   Gateway         │
│             │                    │                   │
│  REST API   │ ◄═════════════════► │  HA Tools:        │
│             │   设备查询/控制     │  ├ ha_list_entities│
│             │                    │  ├ ha_get_state    │
│             │                    │  ├ ha_call_service │
│             │                    │  └ ha_list_services│
└─────────────┘                    └──────────────────┘
                                          │
                                   ┌──────┴──────┐
                                   │  Telegram    │
                                   │  通知推送    │
                                   └─────────────┘

配置步骤

1. 创建 HA 长期访问令牌

进入 HA → 个人资料 → 长期访问令牌 → 创建

2. 配置环境变量

# ~/.hermes/.env 或对应环境
HASS_TOKEN=your-long-lived-access-token
HASS_URL=http://192.168.1.100:8123  # 可选,默认 homeassistant.local:8123

3. 启动网关

hermes gateway

4. 事件过滤配置(重要)

# ~/.hermes/config.yaml
platforms:
  homeassistant:
    enabled: true
    extra:
      watch_domains:
        - climate
        - binary_sensor
        - alarm_control_panel
        - light
      ignore_entities:
        - sensor.uptime
        - sensor.cpu_usage
      cooldown_seconds: 30

默认不转发任何事件,必须显式配置 watch_domainswatch_entities

四个 HA 工具速查

工具 功能 关键参数
ha_list_entities 列出实体 domain, area
ha_get_state 获取状态 entity_id (必填)
ha_call_service 控制设备 domain, service, entity_id, data
ha_list_services 列出服务 domain

安全边界

以下 HA 服务域被 Hermes 阻止调用,防止任意代码执行:

被阻止的域 风险
shell_command 任意 shell 命令
command_line 执行命令的传感器/开关
python_script 脚本化 Python
pyscript 广泛脚本集成
hassio 主机关机/重启
rest_command SSRF 风险

参考资料

相关笔记

  • [[Hermes Agent]]
  • [[HomeAssistant]]
  • [[多智能体系统]]