Skip to main content
Glama
lidicn

AutoFlow Gateway

by lidicn

AutoFlow

对着 AI 说一句话,你家就多一个自动化。

不用打开 Node-RED,不用查实体 ID,不用担心 AI 半夜把你家门锁打开。

快速安装 · 接上你的 AI · 第一个自动化 · 四种做法对比


一、这东西到底解决什么问题

如果你在用 Home Assistant,大概率经历过这三件事。

第一件:加一个自动化,比想象中麻烦得多。

你想要「书房电脑一开机,就把显示器挂灯打开」。听起来 30 秒的事。实际上:打开 Node-RED → 拖一个触发节点 → 想不起来电脑的实体叫什么 → 切到 HA 开发者工具搜 → 复制出 switch.d4f0eaeab731_switch 这么个东西 → 回来粘贴 → 再拖一个判断节点 → 再去搜挂灯 → light.yeelink_cn_555003624_lamp22_s_2 → 拖 call service 节点 → 连线 → 部署 → 去书房开一次电脑测试。

半小时过去了。而你脑子里那句话,只有 15 个字。

第二件:让 AI 帮你写,它会一本正经地编。

你把需求丢给 ChatGPT/Claude,它很流畅地给你一段 flow JSON,里面写着 light.study_desk_lamp。看起来特别合理 —— 但你家没有这个实体。真实的 ID 是 light.yeelink_cn_555003624_lamp22_s_2,AI 不可能猜出来。

要命的是它不会报错。导入 Node-RED,部署成功,绿灯,一切正常。然后它永远不触发。 你三天后才发现,还以为是自己哪里没配对。

第三件:真让 AI 连上 HA,你会睡不着。

要让 AI 真正能干活,你得把 HA 长期访问令牌给它。那一刻它就拥有了你家所有设备的完整控制权 —— 灯、窗帘、门锁、水阀。它不需要恶意,只需要一次幻觉、一个手滑的批量操作。

AutoFlow 就是插在你和 AI 之间的那一层。

它拿着钥匙,AI 没有。AI 想干什么,得先跟它说;它检查完、在虚拟环境里试跑过、确认没问题, 再送到你手机上让你点一下「同意」,才真的落到你家里。


Related MCP server: hass-mcp-server

二、四种做法横向对比

还是那个需求:「书房电脑一开机,就把显示器挂灯打开」。看四种做法分别会发生什么。

做法 A:自己在 Node-RED 里拖

打开浏览器 → 翻 HA 开发者工具找两个实体 ID → 拖 4 个节点 → 连线 → 配置每个节点 → 部署 → 跑去书房开电脑验证。

结果:能成,但花了 30 分钟,而且你得懂 Node-RED 的节点模型。想加第 20 个自动化时, 你已经不想加了。

做法 B:把 HA 令牌给 AI,让它直接写

你说需求,AI 生成 flow,直接调 Node-RED 接口部署。

结果:10 秒完成,看起来很爽。但实体 ID 是编的,flow 静默失效。而且 AI 现在握着你家 所有设备的控制权 —— 它下一次「顺手帮你优化一下」,可能就把 12 个自动化全改了。 你没有任何刹车。

做法 C:给 AI 配一份 skill 文档,它照着规范写

比 B 好一些 —— AI 知道你的命名习惯、知道该用哪些节点、输出格式更规整。

结果:格式对了,实体 ID 照样是编的。skill 是一份静态文档,它不知道你家此刻有哪些 设备、哪个灯叫什么、开关现在是开还是关。它也验证不了写出来的东西能不能跑。 安全问题一点没变:令牌还在 AI 手上。

这是很多人当前的状态 —— 以为加了 skill 就解决了,其实只解决了「格式」, 没解决「事实」和「安全」这两个真问题。

做法 D:AutoFlow

你在聊天框说:「书房电脑开机就把显示器挂灯打开」。

背后发生的事:

  1. AI 问网关:「书房有个叫『显示器挂灯』的东西,实体 ID 是啥?」 网关回:light.yeelink_cn_555003624_lamp22_s_2,当前 off,可能状态 on/off。 —— 实体 ID 不再靠猜,是查出来的。

  2. AI 写 5 行 DSL(不是 200 行 JSON):

    场景: 书房电脑开机则开显示器挂灯
    触发: switch.d4f0eaeab731_switch on
    动作: light.turn_on(light.yeelink_cn_555003624_lamp22_s_2)
    预期:
      light.yeelink_cn_555003624_lamp22_s_2 = on

    注意最后那个 预期: —— AI 得先声明「跑完之后灯应该是亮的」。 这是它给自己立的军令状。

  3. 网关编译成真正的 Node-RED flow,在一个虚拟的 HA 副本里把它跑一遍, 然后对照那句 预期: 检查灯是不是真的亮了。 对不上就打回去让 AI 改,你根本不会看到废品

  4. 通过了才进「待批准」队列,你手机上收到通知。

  5. 你点「同意」,它才落到你家 Node-RED 上。

结果:一句话,1 分钟,产出的 flow 干净可读(不是一坨 function 节点), 而且从头到尾 AI 都没碰过你的 HA 令牌。

汇总

A. 自己拖

B. AI 直连

C. AI + skill

D. AutoFlow

你要会什么

Node-RED 节点模型

会审 flow JSON

会审 flow JSON

会说话

加一个自动化要多久

20–40 分钟

1 分钟

1 分钟

1 分钟

实体 ID 从哪来

你手动查

AI 猜(常错)

AI 猜(常错)

网关实时查真实设备

AI 编错实体会怎样

静默失效,几天后才发现

静默失效

闸门当场拦下,打回重写

上线前验证过吗

你手动跑一次

没有

没有

虚拟环境重放 + 断言

AI 能直接动你家设备吗

能,随时

能,随时

不能,必须你点同意

你的 HA 令牌谁拿着

AI

AI

只有网关

能撤销吗

手动改回去

靠 NR 自己的备份

同左

一键下线 + 每次部署存快照

产出的 flow 好维护吗

取决于你

常是一坨 function

好一些

编译产出,结构统一

换个 AI 模型要重做吗

要重配令牌

要重写 skill

换一个身份码就行

AI 能自己批准自己吗

永远不能(批准入口只在网页端)

一句话总结这张表:A 累,B 危险,C 是把 B 包装得好看了一点,D 才真正解决了「事实」「验证」「刹车」三个问题。

什么情况下你不需要 AutoFlow

诚实地说:

  • 你家总共就 3 个自动化,写完再也不动 —— 不值当为它多跑一个服务。

  • 你没有 Docker,也不想装 —— AutoFlow 目前推荐容器部署。

  • 你享受手动拖节点的过程 —— 那是另一种乐趣,AutoFlow 帮不上忙。

AutoFlow 的价值随「你想让家里变聪明的野心」增长。自动化越多、越常改、越怕出事, 它越划算。


三、安装(五分钟)

前置条件

  • 一台常开的机器:NAS、软路由、树莓派、旧电脑都行(跟 HA 同一个局域网)

  • 上面装了 Docker(没有的话脚本能帮你装,见下)

  • 你已经在用 Home AssistantNode-RED

第 1 步:一条命令装好

curl -fsSL https://raw.githubusercontent.com/lidicn/AutoFlow/main/install.sh | bash

脚本会自动:检查 Docker → 下载代码 → 构建镜像 → 启动 → 等待服务就绪。

如果报 mkdir: cannot create directory '/opt/autoflow': Permission denied,说明当前用户没权限写 /opt。两种改法:① 用 | sudo bash 安装到 /opt/autoflow;② 指定你有权限的目录: curl -fsSL .../install.sh | bash -s -- -d /volume1/docker/autoflow

  • 装到哪儿:Linux/NAS 默认 /opt/autoflow(无 root 权限时用 -d 改路径),macOS 默认 ~/autoflow

  • 想换目录:bash install.sh -d /volume1/docker/autoflow

  • 机器上没 Docker(仅 Linux):bash install.sh --install-docker

  • 以后更新:bash install.sh --update保留你的数据和配置)

第 2 步:拿到控制台钥匙

⚠️ 这一步最容易卡住,请务必看。

出于安全考虑,AutoFlow 首次启动会自动生成一个访问令牌。不带令牌从局域网访问网页端会被 403 拒绝 —— 很多人以为装失败了,其实只是缺钥匙。

拿钥匙:

docker exec autoflow_gateway cat /data/.webui_token

(或者直接看宿主机上的挂载文件:cat /opt/autoflow/data/.webui_token;如果装到了别的目录,路径跟着改)

想一步到位(直接打印可点击的链接,把 IP 换成你机器的):

TOKEN=$(docker exec autoflow_gateway cat /data/.webui_token)
echo "http://192.168.2.200:8000/?token=$TOKEN"

容器名不是默认的 autoflow_gateway?先 docker ps | grep autoflow 看实际名字,命令里替换掉即可。

拿到形如 3dX-0KNWrdMk_8aNmjk926J9IC9MZ0Xg 的一串字符,然后用它开门:

http://<你这台机器的IP>:8000/?token=<刚才那串字符>

建议把这个完整网址存成手机书签 —— 以后批准自动化就靠它,在被窝里点一下就行。

第 3 步:告诉它你家在哪

网页端打开后,进 ⚙️ 设置 → 连接配置,填两组信息:

填什么

说明

Home Assistant 地址

http://192.168.1.10:8123⚠️ 如果 HA 跟 AutoFlow 在同一台机器上,要写 http://host.docker.internal:8123不能写 localhost

HA 长期访问令牌

HA 里:左下角头像 → 安全 → 长期访问令牌 → 创建

Node-RED 地址

http://192.168.1.10:1880

Node-RED 账号密码

如果你的 NR 开了登录

保存后立即生效,不用重启。

这些凭证从此只存在于网关里,任何 AI 都读不到。 这是整个设计的地基。


四、让你的 AI 接上 AutoFlow

第 1 步:给 AI 发一张身份证

进网页端 🤖 Agents 面板 → 输入一个名字(比如 我的Claude)→ 点「创建」。

会弹出一串 af_ 开头的身份码。只显示这一次,立刻复制。

为什么要发身份证?因为每个 AI 干过什么都会独立记账 —— 谁提的方案、谁改的东西, 全都可追溯。匿名连接一律拒绝。哪天某个 AI 不靠谱了,点一下「吊销」,它立刻失去所有能力。

第 2 步:在 AI 客户端里配 MCP

统一填这三样:

  • 传输方式:Streamable HTTP

  • 地址http://<你的机器IP>:8000/mcp

  • 请求头Authorization: Bearer <刚才那串身份码>

几种常见客户端的写法:

Claude Desktop / WorkBuddy 等(JSON 配置)

{
  "mcpServers": {
    "autoflow": {
      "type": "streamableHttp",
      "url": "http://192.168.1.10:8000/mcp",
      "headers": {
        "Authorization": "Bearer af_你的身份码"
      }
    }
  }
}

不同客户端字段名略有差异(type 有的叫 transport,值可能写作 streamable-http/http)。照着你客户端的文档填,只要保证是 Streamable HTTP + 那个 URL + 那个请求头就行

浏览器扩展类客户端(如 DeepSeek++)

界面里填 URL 和 Bearer 字段即可。如果扩展跑在浏览器里、报跨域错误, 在 .env 里把扩展的 origin 加进白名单:

AF_MCP_CORS_ORIGINS=chrome-extension://xxxxxxxx

只支持 SSE 的老客户端

地址换成 http://<IP>:8000/sse

第 3 步:验证连上了

对 AI 说一句:

帮我看看书房都有什么设备

如果它能列出你家书房的真实设备(带真实实体 ID 和当前状态),就通了。

不用手动给 AI 装说明书

网关里内置了一份完整的使用指南。AI 连上后自己调用 autoflow_get_skill 就能取到 —— 你不需要复制粘贴任何 prompt。指南更新了,AI 下次自动拿到新版。


五、你的第一个自动化(完整走一遍)

你说

书房电脑一开机,就把显示器挂灯打开

AI 做(你不用管,但知道它在干嘛会更放心)

  1. 查设备 —— 问网关「书房的显示器挂灯是哪个实体」。 网关返回该区域所有沾边的实体,带域、当前状态、可能状态,让 AI 自己挑。

    这里有个细节体现设计用心:AI 不需要提前知道「挂灯」是 light 还是 switch。 很多设备名字看着像灯,实际是开关。网关把候选全给它,让它按用途挑,而不是逼它猜。

  2. 写 DSL —— 就是本文开头那 5 行。不是 200 行 JSON。

  3. 提交编译 —— 网关做四件事:

    • 语法检查

    • 实体校验(ID 是否真实存在)

    • 节点校验(用到的节点类型在你的 Node-RED 上装了没)

    • 虚拟重放:在一个 HA 数字孪生里真的执行一次,断言灯确实变成了 on

    任何一环挂了都会打回给 AI,附带具体原因。AI 自己修,修好再提。

你批准

网页端 🛡️ 安全闸 面板出现一条待批准。你能看到:

  • 这个自动化叫什么、哪个 AI 提的

  • 完整 DSL(人话,看得懂)

  • 编译出的 flow 结构

  • 虚拟环境的验证结果

同意 —— 落到你家 Node-RED,立即生效。 点 拒绝 —— 什么都不会发生。

配了 Bark 推送的话,待批准会直接推到手机(⚙️ 设置里填)。

出问题了怎么办

🚀 已部署 面板列出所有经 AutoFlow 部署的自动化,点一下就能下线

这里有个贴心的设计:它只能下线自己部署的东西。你手工在 Node-RED 里搭的那些 flow, AutoFlow 认都不认,更别说删了 —— 想误伤都做不到。

每次部署还会自动存一份快照,需要追溯「上周那版是什么样」时可以翻。


六、网页端有什么

手机、平板、电脑自适应。九个面板:

面板

干什么

▣ 概览

现在有多少自动化在跑、有没有待办

🛡️ 安全闸

最常用。AI 提的东西在这儿批准或拒绝

✨ 提案

AI 沉淀的经验/建议。你可以把好的升格成公用知识,反哺所有 AI

🚀 已部署

所有已上线的自动化,可查看、可一键下线

🔗 子流程

可复用的能力积木(推送、历史查询等),可启用/停用

🤖 Agents

发身份码、重置、吊销

🩺 诊断

出问题时看这里:执行链路、失败原因

📝 笔记

你的想法暂存区。「哪天该弄个……」记下来,不进流程

⚙️ 设置

连接配置、推送、安全选项

一条不可动摇的规矩:批准和升格只能在网页端做,MCP 接口里根本没有这两个能力。 AI 不可能自己批准自己 —— 这不是靠自觉,是接口层面就不给。


七、常见问题

Q:网页打不开 / 一直 403? 八成是没带令牌。回到第 2 步拿钥匙,用 http://IP:8000/?token=xxx 访问。

Q:连接配置填了,但连不上 HA? HA 跟 AutoFlow 在同一台机器时,地址要写 http://host.docker.internal:8123, 写 localhost 一定失败 —— 容器里的 localhost 是容器自己。

Q:AI 说它连不上 / 401? 身份码错了或被吊销了。去 🤖 Agents 面板重置一个新码,更新到 AI 客户端。 身份码只在创建时显示一次,丢了就重置,找不回来。

Q:AI 提交的东西总被打回? 看打回原因(AI 通常会告诉你)。最常见两种: ① 实体不存在 —— 你说的设备名网关找不到,换个说法或去 HA 里确认名字; ② 节点类型未注册 —— 你的 Node-RED 缺某个插件。

Q:能让它不用每次都问我吗? 能,但默认不建议。测试环境可以设 AF_AUTO_APPROVE=true。 接真实设备的环境请保持人工确认 —— 这是最后一道刹车。

Q:AI 会不会偷偷改我已有的自动化? 不会。网关不提供「全量替换」「批量删除」这类操作 —— 不是靠规则禁止,是接口里压根没有。 另外还有爆炸半径上限、受保护流标签、所有权隔离(AI 动不了别人建的东西)。

Q:门锁、水阀这种危险设备呢? 属于高危域,需要额外的升级确认,不能跟开灯走同一条路。

Q:AutoFlow 挂了,我家自动化会停吗? 不会。自动化跑在你自己的 Node-RED 上,AutoFlow 只是「制造和管理」它们的工具。 网关挂了只是暂时不能加新的,已有的照常运行。


八、安全边界一览

这件事

在哪做

谁能做

查设备、写方案、提交提案

MCP(带身份码)

AI

批准部署

网页端

只有你

升格公用知识

网页端

只有你

管理 AI 身份

网页端

只有你

拿到 HA / Node-RED 令牌

只有网关(AI 永远看不到)

AI 批准自己提的东西

接口层面不存在


九、给开发者

一句话概括技术形态:一个 Python 网关,独占 HA/Node-RED 凭证,对外暴露 MCP(Streamable HTTP)+ 网页控制面。AI 侧只写语义 DSL,网关负责编译、静态校验、 虚拟孪生重放自证、人工确认闸、部署与快照。AI 可随时更换,凭证不动。

许可

MIT

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    A
    maintenance
    An MCP server and Home Assistant add-on that enables AI assistants to manage smart homes by creating automations, designing dashboards, and interacting with entities. It features native access to Home Assistant APIs, built-in Git versioning for safe rollbacks, and full management of HACS integrations.
    Last updated
    602
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    Enables LLM agents to securely monitor and control MQTT devices for building automation, industrial control, and smart home systems through a standardized MCP interface.
    Last updated
    19
    MIT
  • F
    license
    -
    quality
    D
    maintenance
    Governance circuit-breaker MCP server that enables AI agents to request risk-based decisions, approve or deny actions, and finalize outcomes with full audit receipts.
    Last updated

View all related MCP servers

Related MCP Connectors

  • Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.

  • Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.

  • Self-hosted federated MCP gateway: one OAuth 2.1 MCP server in front of N apps, user-level scopes.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lidicn/AutoFlow'

If you have feedback or need assistance with the MCP directory API, please join our Discord server