VibeCheck: Локальный AI мотивирует на выход из дома и поиск событий | AiManual
AiManual Logo Ai / Manual.
26 Янв 2026 Гайд

VibeCheck: Как я заставил локальный ИИ выгонять меня из дома и искать события

Создаем самодельное приложение на локальном ИИ для борьбы с прокрастинацией. Генерация аниме-картинок, поиск событий, экономия на API. Полный гайд на 2026 год.

Проблема: я ненавижу выходить из дома, но хочу жить

Знакомо ощущение, когда ты знаешь, что нужно выйти на улицу, увидеть людей, сходить на мероприятие, но твой мозг кричит "лучше посидим дома, посмотрим сериальчик"? Я провел в таком состоянии полгода. Заказывал еду, работал удаленно, общался только в мессенджерах. Депрессивная петля.

Проблема номер два: я люблю аниме-арт и хочу генерировать его для себя. Но Midjourney и DALL-E 3 стоят денег. Много денег, если генерируешь каждый день. И все картинки улетают в облако, где их могут использовать для тренировки моделей.

Проблема номер три: я лениво ищу события в городе. Открываю пару сайтов, смотрю - ничего интересного, закрываю. А может, интересное было, просто я его пропустил?

И тут я подумал: а что если собрать все три проблемы в кучу и решить их одним махом? Создать персональное приложение, которое:

  • Генерирует мотивационные аниме-картинки локально (никаких облачных API)
  • Ищет события в моем городе автоматически
  • Придумывает креативные причины выйти из дома
  • Работает на моем же железе, не платя ни копейки за запросы

Так родился VibeCheck. Не очередной todo-лист, а настоящий цифровой пинок под зад.

Почему именно локальный ИИ? Потому что облачные API - это долго, дорого и неконфиденциально. Каждый твой запрос анализируют, логируют, используют для улучшения моделей. Локальные модели - это твои личные мыслители. Они работают когда ты хочешь, сколько ты хочешь, и никто не знает, что ты там генерируешь.

Архитектура: три кита, которые держат мотивацию

VibeCheck - это не монолитное приложение, а набор микросервисов, которые общаются между собой. Почему так? Потому что если что-то сломается, я заменю только сломанную часть. И потому что так проще тестировать.

1 Мозг: локальная LLM (Llama 3.2 3B)

Я выбрал Llama 3.2 3B по одной простой причине: она помещается в оперативку моего MacBook и работает без тормозов. 7 миллиардов параметров - это круто, но они жрут память как не в себя.

Что делает мозг:

  • Анализирует мое настроение (по простым вопросам вроде "как дела?")
  • Генерирует креативные идеи для выходов из дома
  • Составляет промпты для генерации изображений
  • Обрабатывает найденные события и предлагает, какие могут быть интересны

Для запуска использую llama.cpp - проверенный годами инструмент. Не пытайтесь ставить Ollama или еще какую обертку - они добавляют лишние слои абстракции, которые только мешают.

# Запуск модели с оптимальными настройками для мотивации
./main -m models/llama-3.2-3b-instruct.Q4_K_M.gguf \
  --temp 0.8 \
  --top-k 40 \
  --repeat-penalty 1.1 \
  -p "Ты - мотивационный коуч. Сегодня я чувствую усталость и не хочу выходить из дома. Придумай 3 креативные причины выйти на улицу."

2 Художник: Stable Diffusion XL Turbo

Здесь был выбор: либо качество, либо скорость. SDXL дает красивые картинки, но генерирует по 10 секунд. SD Turbo делает за 2 секунды, но качество... не всегда.

Я выбрал компромисс: Stable Diffusion XL Turbo с кастомным LoRA для аниме-стиля. Почему именно локальная генерация? Потому что каждый раз платить по $0.04 за картинку в DALL-E - это идиотизм, если у тебя есть видеокарта.

Технический момент: я использую AUTOMATIC1111 не в веб-интерфейсе, а через API. Потому что мне нужно интегрировать генерацию в пайплайн приложения.

import requests
import json

def generate_vibe_image(prompt: str, negative_prompt: str = ""):
    payload = {
        "prompt": f"anime style, vibrant colors, {prompt}",
        "negative_prompt": f"ugly, deformed, {negative_prompt}",
        "steps": 20,
        "cfg_scale": 7.5,
        "width": 512,
        "height": 512,
        "sampler_name": "DPM++ 2M Karras",
        "seed": -1
    }
    
    response = requests.post("http://localhost:7860/sdapi/v1/txt2img", 
                           json=payload)
    
    if response.status_code == 200:
        # Сохраняем изображение локально
        image_data = response.json()['images'][0]
        # ... обработка base64 ...
        return image_path
    else:
        raise Exception("Ошибка генерации")
💡
Важный нюанс: Не генерируйте картинки на CPU. Это медленно и бесполезно. Если у вас нет видеокарты с 8+ GB VRAM, лучше использовать меньшие модели вроде Stable Diffusion 1.5 или даже специализированные lightweight модели. Генерация 10 секунд вместо 2 минут - это разница между "о, круто" и "забью на это дело".

3 Скаут: парсер событий на Python

Самая простая, но самая важная часть. Каждый день в 10 утра скрипт:

  1. Заходит на сайты мероприятий моего города (TimePad, Яндекс.Афиша и т.д.)
  2. Парсит события на сегодня и завтра
  3. Фильтрует по моим интересам (технологии, искусство, наука)
  4. Отправляет список в LLM для анализа и ранжирования

Ключевой момент: парсер должен быть устойчивым к изменениям верстки. Я использую BeautifulSoup4 с fallback на регулярные выражения. И да, я написал его так, чтобы он не ломался, если на сайте поменяли класс CSS.

def parse_events() -> List[Event]:
    events = []
    
    # Пробуем разные источники
    sources = [
        parse_timepad,
        parse_yandex_afisha,
        parse_local_meetups
    ]
    
    for parser in sources:
        try:
            events.extend(parser())
        except Exception as e:
            logger.error(f"Парсер {parser.__name__} упал: {e}")
            continue
            
    return events

Собираем всё вместе: пайплайн мотивации

Вот как выглядит типичный запуск VibeCheck:

Время Что происходит Результат
10:00 Запуск парсера событий Список из 20-30 событий на день
10:05 LLM анализирует события и выбирает 3 лучших Топ-3 мероприятия с объяснением, почему они мне подходят
10:10 Генерация мотивационной картинки по теме лучшего события Аниме-арт, связанный с мероприятием
10:15 Уведомление в телеграм с картинкой и списком событий Я получаю готовый план дня с визуальной мотивацией

Магия в том, что картинка не просто красивая - она персонализированная. Если сегодня выставка современного искусства, LLM генерирует промпт типа "anime girl visiting modern art exhibition, excited expression, vibrant gallery background". И Stable Diffusion создает именно это.

Где хранить всё это богатство?

Проблема локальных приложений - они локальные. Если сломается компьютер, пропадут все данные. Мое решение:

  • База данных: SQLite с ежедневным бэкапом в облако (зашифрованным)
  • Изображения: Локальная папка + синхронизация с Synology NAS
  • Конфиги: Git-репозиторий на GitHub (приватный)
  • Модели: Храню на внешнем SSD, скачанные с Hugging Face

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

Предупреждение для параноиков: Даже локальные LLM могут "запоминать" ваши данные в весах модели, если вы их дообучаете. Не пишите в промптах пароли, номера карт и другую критическую информацию. Или используйте модели в read-only режиме.

Типичные ошибки, которые сломают ваш VibeCheck

Я наступил на все эти грабли, чтобы вы не повторяли моих ошибок:

Ошибка 1: Слишком сложный промптинг

Как НЕ надо: "Ты - многофункциональный AI-ассистент с возможностями анализа настроения, генерации контента, планирования мероприятий и мотивационной поддержки..."

Почему плохо: Маленькие локальные модели плохо справляются с многослойными инструкциями. Они либо игнорируют половину, либо выдают ерунду.

Как надо: Разделить на отдельные промпты для каждой задачи. Для мотивации - один промпт. Для анализа событий - другой. Для генерации описаний картинок - третий.

Ошибка 2: Генерация картинок без ограничений

Как НЕ надо: Давать Stable Diffusion полную свободу в размерах и количестве шагов.

Что происходит: Одна картинка генерируется 30 секунд, съедает всю VRAM, и система виснет.

Решение: Жесткие лимиты. 512x512, 20 шагов, batch size = 1. Если нужно качество - увеличить шаги, но уменьшить разрешение. Или наоборот.

Ошибка 3: Отсутствие fallback-механизмов

Сценарий: Парсер событий упал, потому что сайт поменял структуру. LLM не запустилась, потому что закончилась память. Stable Diffusion завис.

Результат: Весь пайплайн мертв, вы не получаете ничего.

Как исправить: Каждый модуль должен работать независимо. Если парсер упал - берем события из кэша вчерашнего дня. Если LLM не отвечает - используем заготовленные шаблонные фразы. Если Stable Diffusion сломался - показываем случайную картинку из локальной библиотеки.

Ошибка 4: Игнорирование аппаратных ограничений

Самая частая ошибка новичков: пытаться запустить 70B модель на ноутбуке с 8GB RAM. Или SDXL на карте с 4GB VRAM.

Реальность на 2026 год:

  • Ноутбук/ПК среднего уровня: Llama 3.2 3B + SD 1.5
  • Игровой ПК с RTX 4070: Llama 3.1 8B + SDXL
  • Сервер/стационарная рабочая станция: Mistral Devstral 2 12B + SDXL Turbo

Не гонитесь за большими моделями. 3B параметров достаточно для мотивационных сообщений и анализа событий. Больше параметров - не всегда лучше, особенно для узких задач.

А что насчет мобильной версии?

В теории можно собрать мобильное приложение с локальным ИИ. Но на практике - это боль. Модели нужно сильно ужимать, качество падает, батарея умирает за час.

Мое решение: телеграм-бот. Серверная часть работает на домашнем компьютере, бот просто отправляет уведомления. Если нужно что-то сгенерировать на ходу - запрос уходит на сервер, ответ приходит обратно.

Почему не полностью локальное решение на Android? Потому что качество генерации на мобилках все еще отстает, а я не хочу смотреть на размытые пиксели.

Сколько это стоит? (Спойлер: почти ничего)

Давайте посчитаем альтернативные издержки:

Способ Стоимость в месяц Конфиденциальность Качество
Cloud API (GPT-4 + DALL-E 3) $50-100 Нулевая Отличное
VibeCheck (локальный) $5-10 (электричество) Полная Хорошее
Ручной поиск событий Бесплатно Полная Плохое (лень)

Локальный ИИ окупается за 2-3 месяца, если вы активно генерируете контент. А если учитывать, что ваши данные никуда не утекают - это вообще беспроигрышный вариант.

Что я получил в итоге?

За три месяца использования VibeCheck:

  • Сходил на 14 мероприятий (до этого было 2 за полгода)
  • Сгенерировал 237 аниме-картинок (0 рублей потрачено)
  • Нашел 2 новых хобби через предложенные события
  • Познакомился с 8 новыми людьми
  • Сэкономил примерно $300 на облачных API

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

Можно ли сделать лучше?

Конечно. Вот что я планирую добавить:

  1. Голосовой ассистент на базе Qwen3 TTS для аудио-мотивации
  2. Интеграцию с календарем, чтобы автоматически добавлять события
  3. Анализ настроения по тону голоса (если буду использовать голосовые сообщения)
  4. Рекомендательную систему событий на основе предыдущих выборов

Но даже в текущем виде VibeCheck делает свою работу. Он не идеален, иногда глючит, иногда предлагает странные мероприятия. Но он мой. И он бесплатный.

🎯
Философский момент: Локальный ИИ - это не про то, чтобы сделать всё самому. Это про то, чтобы иметь контроль. Контроль над своими данными, над своими запросами, над своей приватностью. Когда каждый твой промпт не улетает в облако неизвестной компании, а обрабатывается на твоем же железе - это меняет отношение к технологии. Ты перестаешь быть пользователем и становишься владельцем.

Так что если вы тоже засиделись дома, если вам надоело платить за каждый AI-запрос, если хотите что-то свое - берите и делайте. Не обязательно повторять мой VibeCheck один в один. Сделайте свой. Для поиска работы. Для обучения. Для творчества. Для чего угодно.

Потому что лучший ИИ - тот, который работает на тебя, а не ты на него.