TL;DR
Я перевёл в локальный контур одну регулярную задачу мониторинга умного дома: каждый день собирать сырые метрики сенсоров, находить отклонения по правилам и отправлять короткую сводку в Telegram.
Технически это работает. Но как только включается реальная нагрузка и «тяжёлый» системный контекст OpenClaw, начинаются тайм-ауты и эксплуатационные нюансы.
Рабочим для меня стал гибрид: локалка по умолчанию + автоматический fallback в облако при серии ошибок + возврат на локалку после успешного прогона.
Есть идея, в которую легко влюбиться: перенести важную автоматизацию локально и не зависеть от облака в каждом чихе.
Я взял OpenClaw, поднял локальную модель через Ollama и прогнал всё на реальной задаче из умного дома. Не на «привет-мир», а на ежедневной рутине, где цена ошибки — это пропущенная проблема в доме.
Что за задача
Каждый день система должна:
- сходить в VictoriaMetrics за телеметрией сенсоров;
- прогнать значения через набор правил аномалий;
- отправить короткую понятную сводку в Telegram.
Цель — не «поболтать с LLM», а получить короткий и практичный отчёт: что сломалось, где и насколько критично, без спама из сотен строк.
Почему именно qwen3:14b
Выбор был прагматичный.
Я пробовал более крупные модели, но они упирались в VRAM. Когда модель не помещается в видеопамять и начинает уезжать в RAM/CPU, скорость резко падает.
В таком режиме автоматизация теряет смысл: latency становится слишком большой, задачи перестают укладываться в тайминги.
Поэтому qwen3:14b на RTX 4090 оказался рабочим компромиссом.
Инфраструктурная реальность
Контур был такой:
- Windows-хост с GPU;
- SSH-доступ;
- WSL как рабочее Linux-окружение.
Критичный момент — автоподъём после перезагрузки:
- сначала поднять WSL от пользователя;
- затем внутри WSL поднять Ollama;
- плюс Wake-on-LAN для удалённого включения машины.
Главная сложность — не «запустить один раз», а сделать предсказуемый старт каждый день без ручных действий.
Где болело
Я поймал три типа ошибок:
LLM request timed out— запрос до модели ушёл, но ответ не вернулся в лимит времени;cron: job execution timed out— уже вся джоба не завершилась в отведённое окно;- зависание в
running— GPU загружен, железо шумит, а финального результата нет.
По наблюдениям в пике:
- GPU load до ~85%;
- потребление до ~350W;
- VRAM около 74%.
Что пробовал и почему не помогало
Я сначала лечил симптомы: увеличивал timeout, перезапускал сервисы, гонял ручные прогоны, проверял логи.
Точечно это помогало, но стабильности не давало. Причина оказалась в архитектуре: я пытался заставить модель делать слишком много.
Что реально сработало
Переломный момент — разделить процесс:
- отдельный скрипт (
daily_anomaly_collect.sh) собирает и нормализует данные; - в модель идёт уже компактный JSON;
- модель делает только финальную короткую сводку.
Плюс пришлось поправить PromQL/лейблы под реальные данные сенсоров.
После этого сценарий стал предсказуемым и начал стабильно укладываться по времени.
Итоговая архитектура для этой джобы
- основной путь: локальная
ollama/qwen3:14b; - если N запусков подряд падают — автоматический fallback на облачную модель;
- после успешного прогона — автоматический возврат на локалку.
Это даёт и автономность, и надёжность: локалка работает там, где уместно, но задача не умирает в момент деградации.
Вывод
Локальная LLM на RTX 4090 — рабочий инструмент. Но как единственный «мозг» для регулярных прод-задач дома — пока слишком много компромиссов по latency, VRAM и поддержке.
На сегодня лучший результат для меня — гибридная схема с автоматическим failover: меньше идеологии, больше инженерной прагматики.
