Алиса, которая говорит первой: Home Assistant, n8n и AI-агент вместо голосовых команд
Обычная колонка с Алисой только отвечает на вопросы. Мы за один день собрали на Home Assistant, n8n и своём AI-агенте две вещи: Алиса отвечает по нашим задачам и заметкам, а любая система может сама заставить её заговорить. Рассказываем, как это устроено, почему ответ приходит в два шага и где проходит граница.
Коротко. Мы хотели, чтобы колонка с Алисой стала голосом нашей инфраструктуры: сама сообщала, когда что-то произошло, и отвечала на вопросы по задачам и заметкам. Собрали это из Home Assistant на ноутбуке, сценария в n8n и AI-агента Hermes в песочнице. Сейчас работают два направления: вопрос голосом получает ответ за 20–30 секунд, а любой скрипт отправляет текст на вебхук, и через пять секунд колонка его произносит. Ниже про решения, которые пришлось принять, и про ограничения, с которыми мы живём.
Задача: колонка, которая умеет только отвечать
У нас дома стоит Станция Мини, и через неё уже работает умный дом Яндекса: чайник, телевизор, робот-пылесос. Но Алиса устроена так, что говорит только в ответ на фразу. Узнать, что ночной бэкап не прошёл или что пылесос застрял, можно было только в Telegram, а телефон не всегда под рукой.
Нам нужны были две вещи. Первая: чтобы колонка первой говорила о событиях, без нашего вопроса. Вторая: чтобы на вопрос «какие задачи по проекту на этой неделе» отвечал не поиск Яндекса, а агент, который видит наш таск-трекер и заметки.
Home Assistant как мост к колонке
Начали с Home Assistant 2026.11 в Docker на MacBook. Колонку подключили интеграцией YandexStation: в этой версии HACS больше не нужен, интеграция ставится из встроенного каталога. После этого у Home Assistant появляется объект «Станция Мини», и одна команда заставляет её произнести любой текст. Тот же вызов с другим типом выполняет текст как голосовую команду, например «включи музыку».
Docker на macOS работает в своей виртуальной машине, поэтому автопоиск устройств в сети не видит. Пылесос, плеер и колонку добавляли по аккаунтам и IP-адресам вручную. Ноутбук при этом должен не засыпать. С закрытой крышкой он работает, только когда подключены зарядка и внешний монитор.
Почему ответ приходит в два шага
Вопросы голосом мы приняли через приватный навык в Яндекс Диалогах. Навык отправляет распознанный текст на вебхук n8n, а Яндекс ждёт ответа около трёх секунд. Агенту с инструментами этого мало: в наших тестах ответ по задачам занимал около 25–30 секунд.
Поэтому разделили ответ на два шага. n8n сразу, примерно за 0,6 секунды, отвечает навыку «Принял, сейчас узнаю» и закрывает сессию. Дальше вопрос уходит агенту, а его ответ попадает в очередь (таблица данных n8n) и копией в Telegram. Если оставить сессию навыка открытой на всё время ожидания, колонка была бы занята и не смогла бы произнести сам ответ.
Обратный путь: ноутбук сам забирает ответы
Тут было главное архитектурное решение. Сервер с n8n не может достучаться до ноутбука: тот стоит дома за роутером. Зато ноутбук свободно ходит наружу. Поэтому Home Assistant раз в пять секунд спрашивает у n8n, нет ли готовых ответов, и если есть, отдаёт их колонке.
| Вариант | Почему не выбрали |
|---|---|
| Открыть Home Assistant в интернет | ещё одна дверь в домашнюю сеть ради одной функции |
| Держать туннель с сервера домой | рвётся при смене сети и сне ноутбука |
| Опрос очереди с ноутбука | выбрали: наружу ничего не открыто, задержка до 5 секунд |
У опроса есть цена: около 17 тысяч запусков сценария в сутки. Когда мы на время отладки включили сохранение запусков, за три минуты в журнале n8n набралось 45 одинаковых записей. Мы вынесли очередь в отдельный сценарий и отключили у него сохранение успешных запусков. Настоящие вопросы к агенту логируются как раньше.
Эта же очередь и делает колонку проактивной. Мы добавили второй вебхук «Сказать»: любая система отправляет на него текст, он ложится в ту же очередь, и колонка произносит его в течение пяти секунд. Для Алисы нет разницы, ответ это на вопрос или сообщение от скрипта.
Агент в песочнице
На вопросы отвечает Hermes, open-source агент, который у нас уже работал в Telegram. Для голоса мы завели ему отдельный профиль. Распознанная с ошибкой фраза не должна ничего сломать, поэтому профиль работает в Docker-контейнере, где смонтирована только папка с заметками и только на чтение. Задачи он видит через MCP нашего трекера OKRFlow и может завести новую, когда мы просим.
Мы проверили изоляцию прямо: попросили агента записать файл в заметки и во временную папку. Запись в заметки ядро отклонило с ошибкой «Read-only file system», а временный файл остался внутри контейнера, на сервере его не оказалось. У профиля свой ключ доступа, а ключ основного агента с полными правами в n8n не передаётся.
Отдельно пришлось учить агента краткости. Первые ответы были по 50–60 слов, это почти минута речи. Правило «одно-два предложения, до 20 слов, при нескольких пунктах число и один-два главных» сократило их до 20 слов: «В Saler пять открытых задач. Главная: договор с логистикой завтра».
Что получилось
Вопрос «Алиса, попроси Домового, когда договор с логистикой» даёт мгновенное «Принял» и через полминуты короткий ответ с колонки, плюс то же сообщение в Telegram. Вебхук «Сказать» проверили тестовым сигналом: текст от скрипта прозвучал на колонке через несколько секунд. Похожий подход к домашнему железу без открытых портов мы описывали в статье про включение ПК из отпуска, а про то, как устроен сам агент, в статье про агента вместо сценария.
Честные ограничения
- Мониторинг пока не подключён к голосу. Канал готов и проверен, но тревоги бэкапов и серверов по-прежнему приходят только в Telegram. Перед подключением нужно решить тихие часы, чтобы колонка не будила ночью.
- Ноутбук должен работать. Если он спит, ответ не прозвучит, но придёт в Telegram и дождётся в очереди.
- Распознавание ошибается. Навык мы назвали «Домовой», и Яндекс один раз услышал «запусти фильм домовой». Имя навыка лучше выбирать без омонимов.
- Каждый вопрос отдельный. Навык закрывает сессию после «Принял», поэтому уточнять приходится новой фразой через имя навыка.
- Задержка 20–60 секунд. Для справок нормально, для «включи свет» лучше обычные команды Алисы.
FAQ
Можно ли обойтись без ноутбука? Да, Home Assistant можно поставить на Raspberry Pi или мини-ПК. Мы начали на ноутбуке, потому что он был под рукой, но для круглосуточной работы отдельное устройство надёжнее.
Почему не открыть Home Assistant наружу и не слать команды напрямую? Опрос с ноутбука не требует ни одного открытого порта в домашней сети. Задержка до пяти секунд для голосовых уведомлений нас устраивает.
Нужен ли платный навык или публикация в каталоге Яндекса? Нет. Приватный навык публикуется без модерации и доступен только своему аккаунту, а n8n дополнительно отклоняет запросы от чужих аккаунтов.
Что агент может сделать голосом? Сейчас: ответить по задачам и заметкам, найти что-то в интернете и завести задачу в трекере. Доступа к серверам у голосового профиля нет.