image-20261103181149494

让 Home Assistant 真正听懂中文:我把 GLM 接进了 Assist

家里的设备接入 Home Assistant 之后,我一直想试试直接用中文下命令。

理想状态很简单:输入“客厅灯现在开着吗”,它告诉我答案;输入“把餐厅空调调到 26 度”,它知道该操作哪台设备。

但 HA 自带的本地 Assist 更擅长固定句式。遇到一些比较自然的问法,它偶尔只会回我一句:“抱歉,我无法理解您的意思。”

这次我把一个 OpenAI 兼容接口的 GLM-5.3-Flash 接进了 Assist。中间踩了版本兼容和 Token 上限两个坑,好在最后都解决了。现在把完整过程记录下来,给也想折腾的朋友做个参考。

我的环境:Home Assistant Container 2026.2.2 + HACS + Extended OpenAI Conversation 2.0.1。

接口地址、模型名和密钥请换成你自己的。文章截图不会展示真实 API Key。


一、开始前,先确认这三件事

1. 你的模型必须支持工具调用

接口“兼容 OpenAI 格式”还不够。

如果它只能聊天、不支持 tool calling / function calling,Assist 就没办法通过 execute_services 控制 HA 里的设备。

我这次用的模型是:

auto/glm-5.3-flash

在正式配置前,我先调用了一次测试工具,接口能正常返回 tool_calls,确认没问题后才继续。

2. HA 必须能访问你的接口

我的 Base URL 是:

http://127.0.0.1:3425/v1

这个地址在我的环境里可以正常访问,但不代表所有 Container 部署都能直接照抄。

**尤其注意 Docker 网络:**如果 HA 使用桥接网络,容器里的 127.0.0.1 通常指容器自己,而不是宿主机。遇到这种情况,可以改用宿主机局域网 IP,或配置 host.docker.internal,然后从 HA 容器里实际测试连通性。

3. 先看清 HA 版本,别直接装最新版

打开:

设置 → 关于 Home Assistant

查看 Home Assistant 版本

图 1:红框处就是本次使用的 Core 版本 2026.2.2。

这一步很重要,因为 Extended OpenAI Conversation 的不同版本,对 HA 有明确的最低版本要求。


二、在 HACS 里找到 Extended OpenAI Conversation

打开 HACS,搜索:

Extended OpenAI Conversation

点进搜索结果后,正常情况下可以直接点击 Download 安装。

在 HACS 搜索 Extended OpenAI Conversation

图 2:点击红框中的集成名称,进入下载页面。

不过,不要看都不看就装最新版。我这次查到的版本要求如下:

Extended OpenAI Conversation最低 Home Assistant 版本
2.0.32026.10.0b0
2.0.22026.3.0b0
2.0.12026.2.0b0

我的 HA 是 2026.2.2,所以应该选择 2.0.1。


三、HACS 安装失败时,手动安装同一个发布版

我在 HACS 里选择 2.0.1 后,又遇到了“这个版本不能与当前 HACS 使用”的提示。

最后没有升级 HA,也没有强行安装新版,而是从项目的 GitHub 发布页取得 2.0.1,手动放进 custom_components。

如果你也遇到同样的问题,可以参考下面的命令。先把 CONFIG_DIR 改成自己的 HA 配置目录:

CONFIG_DIR=/你的HA配置目录

mkdir -p /tmp/extended-openai
cd /tmp/extended-openai

curl -fsSL \
  -H "Accept: application/vnd.github+json" \
  "https://api.github.com/repos/jekalmin/extended_openai_conversation/zipball/2.0.1" \
  -o source.zip

unzip -q source.zip

mkdir -p "$CONFIG_DIR/custom_components"
cp -a \
  jekalmin-extended_openai_conversation-*/custom_components/extended_openai_conversation \
  "$CONFIG_DIR/custom_components/"

复制前请先确认目标位置没有同名文件夹,避免覆盖已有安装。

完成后,目录应该类似这样:

config/
└── custom_components/
    └── extended_openai_conversation/
        ├── manifest.json
        └── ...

接着重启 Home Assistant。我的容器名称是 homeassistant,所以使用:

docker restart homeassistant

如果你的容器名称不同,记得替换。等 HA 页面恢复访问后,再继续下一步。


四、添加集成,填写 OpenAI 兼容接口

重启完成后,进入:

设置 → 设备与服务 → 添加集成

搜索并点击 Extended OpenAI Conversation。

添加 Extended OpenAI Conversation 集成

图 3:点击红框中的搜索结果。

在配置页面里,我填写了这些内容:

配置项填写内容
NameGLM-5.3 Flash
API Key你自己的接口密钥
Base Urlhttp://127.0.0.1:3425/v1
Api ProviderOpenAI
Api Version留空
Organization留空

填写 OpenAI 兼容接口

图 4:在红框位置填写 API Key 和 Base Url。截图未填入真实密钥。

Api Provider 保持 OpenAI,因为这里使用的是 OpenAI 兼容协议,并不代表必须连接 OpenAI 官方服务。

填写完成后点击 提交,再按提示完成设备创建即可。


五、修改模型名,并把 Token 上限调大

集成添加成功后,进入它的详情页,找到对话代理,点击:

Reconfigure conversation agent

重点检查下面几项:

chat_model: auto/glm-5.3-flash
Maximum tokens to return in response: 1024
Use Tools: 开启
Functions: 保留 execute_services

配置模型、Token 和工具调用

图 5:红框处分别是模型名、最大输出 Token 和 Use Tools。

这里有一个我实际踩到的坑:默认的 150 Token 太小。

第一次测试时,Assist 返回了这样的错误:

Something went wrong: token length(150) exceeded.
Increase maximum token to avoid the issue.

把它提高到 1024 后,问题消失。

execute_services 是控制设备的关键函数,不要删掉。否则模型只能根据设备信息聊天,不能真正执行开关、调温等操作。


六、新建一个 GLM 中文助手

接下来进入:

设置 → 语音助手 → 添加助手

我这样设置:

  • 名称:GLM 中文助手
  • 语言:中文
  • 对话代理:Extended OpenAI Conversation
  • 首选本地处理命令:保持开启

新增 GLM 中文助手

图 6:选择 Extended OpenAI Conversation,并保留“首选本地处理命令”。

我比较建议保留“首选本地处理命令”。

这样,简单、固定的指令会先尝试本地处理;本地代理理解不了,再交给 GLM。原来的 Home Assistant 本地助手也可以继续保留,不必删除。

如果只是打字控制,语音转文字和文字转语音暂时都可以不配置。


七、把 GLM 设为首选助手

助手创建好后,打开它右侧的菜单,点击 设置为首选。

将 GLM 设置为首选助手

图 7:在红框位置将 GLM 中文助手设为首选。

设置成功后,这个选项会变成不可点击状态,说明它已经是当前首选助手。


八、最后做一次真实查询

打开 GLM 中文助手的对话窗口,先不要急着开关设备,建议用一条只读命令测试:

客厅灯现在开着吗

这次它返回:

客厅灯现在是关着的。

GLM 成功查询设备状态

图 8:之前本地 Assist 无法理解的问法,现在可以正常回答了。

确认状态查询没问题后,再尝试实际控制,例如:

打开客厅灯
把餐厅空调调到 26 度
关闭卧室窗帘

目前我保留了默认提示词里的安全限制:**执行设备操作前需要用户确认。**如果助手先问你是否确认,回复“确认”即可。


九、最容易踩坑的地方,我都替你试过了

1. 不要直接安装最新版

先看 HA 版本,再选集成版本。当前这套 HA 2026.2.2 环境对应的是 Extended OpenAI Conversation 2.0.1。

在 HA 没有升级前,也不要随手通过 HACS 把它更新到 2.0.2 或 2.0.3。

2. 能聊天,不等于能控制设备

必须确认模型支持工具调用,并保留 execute_services。如果 Assist 能回答普通问题,却从不执行设备操作,优先检查这两项。

3. 出现 token length(150) exceeded

把 Maximum tokens to return in response 从 150 提高到 1024,再重新测试。

4. Docker 里的 127.0.0.1 不一定指向宿主机

如果 HA 日志里出现连接拒绝、连接超时,先检查容器网络,不要急着换模型或改提示词。

5. 设备必须向 Assist 公开

模型只能操作已经公开的实体。我的 HA 里已经公开了 293 个实体,所以可以直接根据名称查询和控制。

门锁、车库门、报警器等敏感设备,建议谨慎公开,不要图省事全部放开。

6. 保留操作确认和本地助手

刚开始使用时,保留“执行前确认”会更稳妥。等模型名称识别、区域别名和设备控制都验证稳定后,再考虑是否简化确认流程。


整个过程看起来步骤不少,其实核心就四件事:

选对集成版本 → 填对兼容接口 → 开对模型与工具参数 → 新建并首选 GLM 助手。

配置完成后,HA 的 Assist 不再只是识别固定句式,而是可以用更自然的中文理解设备状态和用户意图。对已经攒了一堆智能设备的人来说,这比单独做一个聊天机器人实用得多。

Q.E.D.


寻门而入,破门而出