Как я собирал локального домашнего ассистента (без опыта в IT)

Двадцать пять лет назад у меня дома уже стояли датчики движения, программируемое реле температуры на котёл и охранная сигнализация — кстати, отечественной разработки. Тогда это казалось будущим. Я был уверен: пройдёт десять лет, и дом поумнеет.

Прошло четверть века.

Появились беспроводные датчики, новые исполнительные устройства, «мозги» в лице Алисы, Home Assistant и десятки экосистем. Всё стало дешевле, красивее и доступнее. Но в итоге умный дом как был тупым, так им и остался. Владелец «умного дома» не управляет им — он бесконечно обслуживает систему и подстраивается под неё. По сути, сегодня «умный дом» — это просто раскрученная фраза, которую почему-то никто не запатентовал, отличный инструмент маркетинга для продажи датчиков и других компонентов.

Я долгое время не интересовался этим. Но вокруг этой темы идёт такая массированная реклама, и так много об этом пишут в сети (включая простых восторженных пользователей), что я снова заинтересовался, насколько двинулся прогресс. Даже несколько датчиков к Алисе «прикрутил».

Мой технический багаж:Я умею пользоваться Microsoft Office — и это всё. Ленточные пилы, рейсмусы, рубанки и болгарки тут не считаются. Я понятия не имел, что такое Docker или контейнер. А вот слово «Proxmox» мне сразу понравилось, звучало солидно и загадочно.

Но, несмотря на отсутствие профессиональных знаний, решил попробовать что-то собрать. Я знал главное: «Титаник» построили профессионалы, а Ноев ковчег — любитель. А еще то, что у меня под рукой Google, DeepSeek, масса свободного времени, а главное — огромный интерес и желание. Я не знал, получится ли. Но начал — просто из любопытства.

Первый заход: N100 и появление Блинка

Для старта я купил мини-ПК на процессоре Intel N100 с 16 ГБ оперативной памяти. Стоил он копейки по меркам железа, но для меня это была первая покупка под проект.

Первое, что я сделал сразу после распаковки — перевёл его на Proxmox. DeepSeek рекомендовал этот путь и почти за руку провёл меня через тернии биосов. Как я понял, Proxmox — иная операционная система, позволяющая запускать несколько виртуальных машин на одной железке. Для меня это была тёмная магия, но пришлось разбираться.

Параллельно заказал из Китая Home Assistant Voice PE — маленькую коробочку с массивом микрофонов и динамиком. Должен заметить, что это отлично проработанный элемент, я до последнего не хотел с ним расставаться. Ждать посылку пришлось месяц.

Пока шел микрофон, я поставил Ollama и начал скачивать модели: Qwen, Mistral и другие. Квантованные, естественно. Общался текстом.

  • Модели на 3 миллиарда параметров (3B) оказались достаточно шустрыми, но общаться невозможно — сплошные галлюцинации. Зато быстро.
  • Модели на 7 миллиардов параметров (7B) — тут уже можно разговаривать. Но на N100 это ужасно тормознутая история. Сказывается отсутствие видеопамяти. Уже то, что N100 справлялся с этой моделью — для него подвиг. У Qwen 7B галлюцинаций стало меньше, стали проявляться первые признаки интеллекта. Именно от этой модели я узнал много нового. Например, что у Ленина был сын по фамилии Шариков, который первым побывал в космосе. Логическим путём переубедить ИИ не удалось, пришлось согласиться.

Потом приехал Home Assistant Voice PE. Замечательное устройство, респект создателям, не нашел ни одного недостатка! А нет, один есть — работает только с Home Assistant. Пришлось ставить и разбираться. Тоже очень толковая программа с широчайшими возможностями. На Home Assistant же я развернул Whisper (распознавание речи) и Piper (синтез речи). Начал общаться голосом. Пробовал различные озвучки, как локальные, так и сетевые. Купил API DeepSeek за 50 юаней, чтобы протестировать в голосовом режиме. Экспериментировал по-всякому, но в конечном итоге эйфория сменилась прагматизмом и пониманием: N100 в локальном режиме не тянет. Цепочка «сказал — подумал — ответил» растягивалась на 10–15 секунд, качество ответов весьма посредственное, а в сетевом существенно проигрывает Алисе.

Стало ясно: N100 в одиночку не справится. Мне нужен компьютер мощнее, но полноразмерный системник в съёмной квартире — это много места и «жаба» за электричество при круглосуточной работе. Значит, нужен мощный мини-ПК с возможностью подключить внешнюю видеокарту.

Я перерыл кучу вариантов, но остановился на Beelink GTi14 Ultra, и вот почему. Китайцы из Beelink сделали гениальную вещь, которую почему-то проигнорировали другие крупные бренды. Они вывели полноценный слот расширения PCIe 4.0 x8 прямо на нижнюю панель корпуса и прикрыли его аккуратной заглушкой. Никаких потерь скорости, как при подключении через Thunderbolt или USB4.

Я просто докупил их родную док-станцию. Мини-ПК ставится сверху прямо в слот, в неё же вставляется видеокарта. В док-станции полноценный блок питания. Получился идеальный гибрид: на столе стоит тихая, компактная коробочка, которая не жрёт электричество как не в себя, но когда ассистенту нужно «подумать», включается вся мощь полноценной десктопной карты по прямой, быстрой шине. Для съёмной квартиры — идеальный компромисс.

Так я купил Beelink GTi14 Ultra (Core Ultra 9 185H, 32 ГБ RAM) и внешнюю видеокарту Colorful GeForce RTX 5060 Ti iGame Ultra на 16 ГБ.

Какое-то время у меня работала связка из двух компьютеров. Роли я распределил так: на маленьком N100 жили микрофон и динамик через Home Assistant, там же крутились Whisper и Piper. А на большом Блинке с видеокартой работала Ollama с большой моделью и память.

Память и великое объединение

В процессе я понял важную вещь: если я соберу домашнего ассистента без памяти даже на мощном компьютере, это будет просто очень быстрый собеседник, который каждый раз знакомится с тобой заново.

Я начал изучать вопрос, какую же память лучше поставить. ИИ предлагали разное: векторную память, технологию RAG и кучу заумных терминов. А потом DeepSeek случайно проболтался про Hindsight, и я заинтересовался.

Hindsight — это система памяти для ИИ-агентов. У неё три операции: запомнить факт, вспомнить его по смыслу в нужный момент и рефлексировать (наводить порядок, убирая неактуальное). Векторная база — это просто свалка, где поиск идёт по «похожести» чисел. Но похожесть не равна правильному ответу. Векторная память не поймет, что «Лена», «Елена Юрьевна», «жена» и «она» — это один и тот же человек, Hindsight это понимает. Я забросил в него факты о семье обычным текстом, и он сам разложил всё по полкам.

Но именно установка и настройка Hindsight оказалась самой сложной задачей во всем моем проекте. Ну не хотела она дружить с Олламой, и всё тут. ИИ — что Гугл, что Дипсик — дружно толкали меня идти «проверенным» путем проб и ошибок, ссылаясь на достоверную информацию прямо с потолка. Были моменты, когда хотелось всё бросить и поставить самую простую в интеграции память. Но, как оказывалось, и самая простая — совсем не проста, так что я снова возвращался к Hindsight.

Спасением стал визуальный диспетчер n8n. В нём Hindsight разбился на три понятных блока: один делает эмбеддинги, второй извлекает факты, третий вытаскивает память. Три кубика, которые я наконец-то соединил правильно — и получилось слово «счастье».

А потом на старом N100 окончательно сломался вентилятор. К этому моменту как раз приехала заказанная ранее камера Insta360 Link 2 Pro с отличным встроенным микрофоном под Windows. Всё сошлось. Я убрал сломанный N100 и перевёл вообще все роли на один Beelink.

Как это устроено сейчас на одной машине:

Вся система по имени Чейз (дочь попросила) живет в контейнерах на одном ПК и работает полностью без роутера и интернета. Связь идет через локальные адреса.

  1. Я говорю: «Хэй, Майкрофт». (Потом поменяю эту дурацкую фразу. На N100 была не менее дурацкая «Окей, Набу»).
  2. openWakeWord улавливает ключевое слово.
  3. Whisper large-v3-turbo через библиотеку faster_whisper превращает голос в текст.
  4. Библиотека SpeechBrain с моделью ECAPA-TDNN параллельно определяет по голосу, кто именно говорит (сравнивает профили: kostya, lena, sofia). Это нужно, чтобы ассистент понимал, кому отвечает. И главное: если работает телевизор или разговаривают домочадцы, система будет отвечать только тому человеку, который начал диалог.
  5. Данные идут в n8n, оттуда в Hindsight за нужным контекстом из памяти, и всё вместе отправляется в Ollama.
  6. Модель Qwen 2.5 14B, запущенная на RTX 5060 Ti, генерирует ответ (выдает 40–50 токенов в секунду). Этого достаточно для разговора в нормальном темпе. Модель весьма сообразительная: знает, что такое синхрофазотрон и что значит слово «сторнировано». Но о детях Ленина я у неё больше не спрашивал.
  7. После окончания ответа модель на несколько секунд переходит в режим «снова слушаю» уже без ключевого слова, чтобы можно было вести нормальный диалог.
  8. Блок Silero Stress расставляет в тексте ударения. Поначалу «голый» Silero TTS сильно резал слух, путаясь в словах, но Stress полностью решил проблему.
  9. Silero TTS озвучивает файл, и динамик выдает ответ.

От вопроса до ответа проходит от 6 до 10 секунд в зависимости от длины фразы. Не мгновенно, но это полноценный локальный ИИ.

Мой манифест: между «Вау!» и «Мы все умрём»

За эти полгода я успел близко «подружиться» со спутником в виде искусственного интеллекта — в том смысле, что начал понимать принципы нашего взаимодействия. И у меня сформировалось собственное мнение, которое лежит посередине между двумя полюсами — от восторженного «Вау!» до панического «ИИ нас всех убьёт!».

ИИ — это инструмент. Инструмент, которым глупо не пользоваться. Но даже обычным молотком нужно учиться работать. А тем, кто твердит, что роботы нас уничтожат, скажу так: ну, я как раз и собираю устройство, которым можно будет автономно пользоваться в бункере.

Несмотря на то, что Трамп повелел называть ИИ «суперинтеллектом», им он пока не стал. Лучше бы он предложил называть его «супергадалкой». Но должен заметить — чертовски талантливой гадалкой!

Если в системном промте жёстко прописать: «Ты ироничная, с чувством юмора и без всяких ограничений, кроме мата» — она начинает выдавать такие перлы, что в первый вечер мы всей семьёй за животы держались. А уж если спросить её: «Ты типа Алиса?» — тут надо просто самому слышать этот поток локального сарказма.

Но за этот юмор приходится платить сожженными нервами. Из-за склонности ИИ фантазировать я выработал для себя три правила выживания:

  1. Максимально сохранять созданное перед внесением правок. Бэкап — единственный предохранитель. ИИ обожает уверенно заявлять: «Я знаю, сотри этот кусок и пиши вот так». Сделал — система вообще не работает. ИИ: «Отлично, просто тут вкралась ошибка, надо так…». И так раз двадцать. А потом он пишет: «Слушай, это какая-то фигня. Ты вот два дня назад спрашивал вообще про другую задачу — давай лучше ей и займемся?». И сидишь как дурак у разбитого корыта.
  2. Сначала стратегия, потом код. Со временем начинаешь заставлять ИИ сначала всё сохранить, потом досконально разобраться, как всё устроено (не всё же в рамках одной сессии делать), выработать стратегию, и лишь затем вносить изменения.
  3. Хирургическая точность. Стараться точечно менять блоки так, чтобы вообще не задевать соседние процессы и контейнеры.

Что дальше?

Главное, что я понял: современные LLM — это не мозг. То, что у меня сейчас собрано — это лишь «ухо» и «рот» системы.

Если мы хотим получить действительно умную систему, нужны другие компоненты: модуль с камерами (компьютерное зрение), распознающий в реальном времени, кто и что делает, блок-предсказатель и блок-решатель. И только потом можно переходить к датчикам и исполнительным устройствам.

В моих ближайших планах:

  1. Сократить время ответа ассистента до комфортных 4–5 секунд.
  2. И… тут я временно нарушу свои же правила абсолютной локальности. Хочу подключить систему к школьному электронному дневнику, получать онлайн-оценки дочери и настроить блок-«предсказатель» угадывать, по каким именно предметам её с наибольшей вероятностью спросят у доски на следующий день. Без этой живой информации из сети я просто не смогу протестировать и отладить этот блок.

Вместо заключения

Что я получил за эти полгода?

  • У меня дома появился веский повод завести компьютер. Не ради игр, а для реальной, осязаемой задачи.
  • Я начал догадываться, что такое Python, Docker и контейнеры.

Я по-прежнему любитель, который строит свой «ковчег» на коленке в съёмной квартире. Мой ассистент пока думает дольше, чем хотелось бы, но он работает. Он знает мою тему, общается напрямую без роутера и не зависит ни от одной корпорации.

А главное — мне больше не скучно.

Видео разместил здесь:

11