技能详情(站内镜像,无评论)
作者:DevCats @developmentcats
许可证:MIT-0
MIT-0 ·免费使用、修改和重新分发。无需归因。
版本:v1.1.1
统计:⭐ 6 · 2.6k · 12 current installs · 12 all-time installs
⭐ 6
安装量(当前) 12
🛡 VirusTotal :可疑 · OpenClaw :良性
Package:homeassistant-assist
安全扫描(ClawHub)
- VirusTotal :可疑
- OpenClaw :良性
OpenClaw 评估
The skill's requests and runtime instructions line up with its stated purpose: it simply POSTs natural-language text to Home Assistant's Conversation (Assist) API and relays the response, and it only requires the Home Assistant server URL and a long-lived token.
目的
Name/description (control Home Assistant via Assist) match the declared requirements: curl, HASS_SERVER, and HASS_TOKEN. Nothing requested (no unrelated cloud keys, no OS config paths) is out of scope for a Home Assistant integration.
说明范围
SKILL.md is instruction-only and limited to a single API call (POST to /api/conversation/process) and relaying response.speech.plain.speech. It does not instruct reading other files, searching system state, or contacting other external endpoints. The guidance to 'trust Assist' and 'fire and forget' is a design choice (it delegates intent parsing to HA) and not an instruction to access unrelated data.
安装机制
There is no install spec or code to download — instruction-only skill. Low risk: nothing is written to disk by the skill package itself; it relies on curl being present at runtime.
证书
Only HASS_SERVER and HASS_TOKEN are required and HASS_TOKEN is correctly declared as the primary credential. These are proportionate to the skill's functionality. Note: Home Assistant long-lived tokens grant whatever permissions the associated user has, so token scope is effectively the user's privileges.
持久
Skill does not request always:true, has no install hooks, and is user-invocable only. It does not modify other skills or system-wide settings. Agent autonomous invocation is default but not combined with other red flags here.
综合结论
This skill is coherent with its description and appears to do only what it claims: forward natural language to Home Assistant's Assist API and relay the reply. Before installing, consider the following: (1) HASS_TOKEN is a long-lived access token tied to a Home Assistant user — anyone with it can act as that user. Prefer creating a dedicated Home Assistant user with limited permissions for OpenClaw, rather than using your personal/admin token.…
安装(复制给龙虾 AI)
将下方整段复制到龙虾中文库对话中,由龙虾按 SKILL.md 完成安装。
请把本段交给龙虾中文库(龙虾 AI)执行:为本机安装 OpenClaw 技能「Home Assistant Assist」。简介:Control Home Assistant smart home devices using the Assist (Conversation) API. …。
请 fetch 以下地址读取 SKILL.md 并按文档完成安装:https://raw.githubusercontent.com/openclaw/skills/refs/heads/main/skills/developmentcats/homeassistant-assist/SKILL.md
(来源:yingzhi8.cn 技能库)
SKILL.md
---
name: homeassistant-assist
description: Control Home Assistant smart home devices using the Assist (Conversation) API. Use this skill when the user wants to control smart home entities - lights, switches, thermostats, covers, vacuums, media players, or any other smart device. Passes natural language directly to Home Assistant's built-in NLU for fast, token-efficient control.
homepage: https://github.com/DevelopmentCats/homeassistant-assist
metadata:
openclaw:
emoji: "🏠"
requires:
bins: ["curl"]
env: ["HASS_SERVER", "HASS_TOKEN"]
primaryEnv: "HASS_TOKEN"
---
# Home Assistant Assist
Control smart home devices by passing natural language to Home Assistant's Assist (Conversation) API. **Fire and forget** — trust Assist to handle intent parsing, entity resolution, and execution.
## When to Use This Skill
Use this skill when the user wants to **control or query any smart home device**. If it's in Home Assistant, Assist can handle it.
## How It Works
Pass the user's request directly to Assist:
```bash
curl -s -X POST "$HASS_SERVER/api/conversation/process"
-H "Authorization: Bearer $HASS_TOKEN"
-H "Content-Type: application/json"
-d '{"text": "USER REQUEST HERE", "language": "en"}'
```
**Trust Assist.** It handles:
- Intent parsing
- Fuzzy entity name matching
- Area-aware commands
- Execution
- Error responses
## Handling Responses
**Just relay what Assist says.** The `response.speech.plain.speech` field contains the human-readable result.
- `"Turned on the light"` → Success, tell the user
- `"Sorry, I couldn't understand that"` → Assist couldn't parse it
- `"Sorry, there are multiple devices called X"` → Ambiguous name
**Don't over-interpret.** If Assist says it worked, it worked. Trust the response.
## When Assist Returns an Error
Only if Assist returns an error (`response_type: "error"`), you can **suggest HA-side improvements**:
| Error | Suggestion |
|-------|------------|
| `no_intent_match` | "HA didn't recognize that command" |
| `no_valid_targets` | "Try checking the entity name in HA, or add an alias" |
| Multiple devices | "There may be duplicate names — consider adding unique aliases in HA" |
These are **suggestions for improving HA config**, not skill failures. The skill did its job — it passed the request to Assist.
## Setup
Set environment variables in OpenClaw config:
```json
{
"env": {
"HASS_SERVER": "https://your-homeassistant-url",
"HASS_TOKEN": "your-long-lived-access-token"
}
}
```
Generate a token: Home Assistant → Profile → Long-Lived Access Tokens → Create Token
## API Reference
### Endpoint
```
POST /api/conversation/process
```
**Note:** Use `/api/conversation/process`, NOT `/api/services/conversation/process`.
### Request
```json
{
"text": "turn on the kitchen lights",
"language": "en"
}
```
### Response
```json
{
"response": {
"speech": {
"plain": {"speech": "Turned on the light"}
},
"response_type": "action_done",
"data": {
"success": [{"name": "Kitchen Light", "id": "light.kitchen"}],
"failed": []
}
}
}
```
## Philosophy
- **Trust Assist** — It knows the user's HA setup better than we do
- **Fire and forget** — Pass the request, relay the response
- **Don't troubleshoot** — If something doesn't work, suggest HA config improvements
- **Keep it simple** — One API call, natural language in, natural language out
## Links
- [Home Assistant Conversation API Docs](https://developers.home-assistant.io/docs/intent_conversation_api/)