前言¶
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_service:askha_render_template:askha_notify:no gate
为避免过度推断,本文把 ha_call_service 和 ha_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。
典型用法¶
下面示例来自已核实资料,适合作为提示词参考。
-
“Check that Home Assistant is reachable, then list the lights in the living room.”
先检查 Home Assistant 是否可达,再列出客厅的灯。 -
“Set the living room light to 60% brightness.”
该示例会触发审批请求。 -
“Show me the boiler switch history for the last 24 hours.”
查询锅炉开关最近 24 小时的状态变化时间线。 -
“Turn off every light in the bedroom.”
使用区域目标控制卧室灯。 -
“Start cinema mode.”
使用场景激活cinema模式。 -
“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 / 幻方无官方从属关系,不应理解为官方应用商店。