dsh-smarthome:把 Home Assistant 接入 DeepSeek Harness

前言

DSH 插件生态强调“一切皆插件”。对需要在智能体里处理家庭设备的人来说,常见诉求不是简单发命令,而是让 agent 能读取设备状态、查询状态历史、调用服务,并且写操作不直接落地。

dsh-smarthome 是面向 DeepSeek Harness agents 的 Home Assistant 控制插件。它的定位是:读取实体状态、查询历史,并在人工审批后调用服务。

定位与维护方

下面先交代它是什么、由谁维护、解决什么问题。

  • 插件名:YLifeOnlyOnce/dsh-smarthome
  • 维护者:YLifeOnlyOnce
  • 许可证:MIT
  • 一句话定位:Home Assistant control for DeepSeek Harness agents — read entity states, query history, and call services behind an approval gate.
  • 解决的问题:让 DSH agent 能接入 Home Assistant,完成设备状态读取、历史查询、服务调用等任务,同时把服务调用放在人工审批之后。

核心能力

下面列出的能力来自已核实资料。按用途可以分为读取、历史与事件、通知、控制、模板五类。

连接与状态读取

  • ha_health:验证连接,并返回实例名、版本、时区、WebSocket 状态。
  • ha_list_entities:按 domain 和文本过滤列出实体。
  • ha_list_areas:通过 WebSocket API 列出区域。
  • ha_list_devices:通过 WebSocket API 列出物理设备。
  • ha_get_state:读取单个实体的完整状态与属性。
  • ha_weather:从天气实体获取当前天气和结构化预报。

历史与实时事件

  • ha_history:查询一段时间内的状态变化时间线。
  • ha_events:读取从 WebSocket 缓冲的近期实时状态变化。
  • ha_wait_for_state:轮询直到实体匹配或不匹配指定状态。

场景与界面

  • ha_list_scenes:列出一键场景。
  • ha_dashboard:在 Web UI 中渲染整个家庭的仪表盘卡片。

通知与服务调用

  • ha_notify:通过 Home Assistant 发送通知,类型包括 persistent / phone / speaker。
  • ha_call_service:在人工审批后调用任意服务,可按实体、区域、设备或场景。
  • ha_render_template:在人工审批后服务端渲染 Jinja2 模板。

审批与安全边界

资料对审批的表述有两个层次。

整体描述是:每个状态变更调用都会暂停等待人工审批。

功能表给出的具体标记是:

  • ha_call_serviceask
  • ha_render_templateask
  • ha_notifyno gate

为避免过度推断,本文把 ha_call_serviceha_render_template 作为明确需要人工审批的入口;ha_notify 按资料标记为 no gate

另外,资料将 allowedDomains 描述为第二道 deny-list belt。

安装与启用

资料要求:

dsh ≥ 0.1.0-rc.6

资料同时称这是 current npm latest。

安装命令如下:

dsh plugin --profile web add dsh-smarthome

这一步是在当前 web profile 下添加 dsh-smarthome 插件。

安装后重启:

dsh --profile web

然后进入 Settings → Plugins 管理插件。

如果从 GitHub 源安装,资料提到可能需要为 dsh-smarthome 配置 pnpm allowBuilds。

典型用法

下面示例来自已核实资料,适合作为提示词参考。

  1. “Check that Home Assistant is reachable, then list the lights in the living room.”
    先检查 Home Assistant 是否可达,再列出客厅的灯。

  2. “Set the living room light to 60% brightness.”
    该示例会触发审批请求。

  3. “Show me the boiler switch history for the last 24 hours.”
    查询锅炉开关最近 24 小时的状态变化时间线。

  4. “Turn off every light in the bedroom.”
    使用区域目标控制卧室灯。

  5. “Start cinema mode.”
    使用场景激活 cinema 模式。

  6. “What changed in the house in the last hour?”
    使用实时 ha_events 查看最近一小时内家中变化。

适用场景与注意

这个插件适合已经在用 DSH、并且有 Home Assistant 实例的用户。典型需求包括:

  • 用自然语言查询设备状态。
  • 查看某个实体的状态历史。
  • 在 agent 流程中等待某个状态达成。
  • 通过场景或区域批量控制设备。
  • 在 Web UI 里查看家庭仪表盘卡片。

使用前需要注意:

  • 插件以当前 dsh 进程权限运行。
  • 安装前应检查源码与许可证。
  • 资料中关于 WebSocket 的表述存在冲突:README 顶部称 no WebSocket,功能表和后文又多次提到 WebSocket API、WebSocket status 或 WebSocket feed。本文不把它解释为确定的运行时依赖,实际行为以源码和运行环境为准。
  • 资料多处称 lightweight / zero runtime dependencies,并提到 REST API、Node built-in WebSocket、no MQTT broker、no extra daemon。由于顶部存在 no WebSocket 表述,这里只保留事实描述,不做额外推断。

相关链接

  • GitHub:https://github.com/YLifeOnlyOnce/dsh-smarthome
  • 目录页:https://www.skillhub.cn/plugins/YLifeOnlyOnce/dsh-smarthome

目录页来自插件线索;社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系,不应理解为官方应用商店。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜