Как скрестить визуальную новеллу с LLM и настольным питомцем на Rust

18 авг 2026
1,458
98
13
3 недели

Большинство интерфейсов для работы с нейросетями выглядят одинаково скучно. Это либо клоны ChatGPT со списком тредов слева и полем ввода справа, либо утилиты командной строки для терминала. Но если вы когда-нибудь играли в японские визуальные новеллы (Galgame), то знаете, насколько важны визуальный контакт, смена эмоций персонажа и контекст происходящего.

Недавно наткнулся на любопытный проект LingChat, автор которого попытался соединить механику диалогов из визуальных новелл, систему виртуального настольного питомца и современные языковые модели. Самое приятное для нас с вами: под капотом тут честный Rust, а не очередной прожорливый Electron.

Что внутри проекта

Репозиторий LingChat предлагает переосмыслить привычный формат общения с ИИ. Вместо сухого окна чата перед нами анимированный персонаж, который реагирует на диалог, следит за вашим расписанием и может участвовать в интерактивных сценариях.

Проект решает сразу несколько задач:

  • Эмоциональный отклик спрайтов. Модель не просто генерирует текст, но и размечает собственное эмоциональное состояние. В зависимости от тона ответа персонаж меняет позы, выражения лица и анимации.
  • Режим настольного питомца (Desktop Pet). Персонаж живет прямо поверх открытых окон вашей системы, реагируя на клики и действия пользователя в фоне.
  • Планировщик и трекер задач. В диалоговый движок встроена работа с календарем и напоминаниями, так что ассистент вовремя подскажет о созвоне или дедлайне.
  • Сюжетные модули с ветвлением. Автор добавил поддержку сценарных веток, превращая обычный чат в интерактивную игру с проверками условий и выборами.

Почему важен выбор Rust

Обычно подобные интерактивные приложения делают на связке Electron + React или Unity. У обоих подходов есть неприятный минус: прожорливость. Настольный питомец должен висеть в фоне весь рабочий день, не отъедая половину оперативной памяти и не раскручивая кулеры ноутбука.

Реклама

LingChat написан на Rust. Это дает низкое потребление ресурсов при постоянной отрисовке спрайтов и обработке событий мыши. Базовая логика приложения работает быстро, отдавая основные ресурсы системы под локальный инференс моделей или параллельные рабочие задачи.

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

Где это можно применить

Кроме прямого использования ради фана и ностальгии по старым виртуальным питомцам вроде Shimeji, в проекте есть интересные архитектурные идеи для разработчиков.

Во-первых, это отличный референс для создания NPC в инди-играх. Если вы хотите внедрить в свой проект персонажей на базе генеративного ИИ, здесь можно подсмотреть, как связывать текстовый вывод модели с изменением состояния анимационного графа.

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

С чего начать знакомство

Исходный код открыт под лицензией AGPL-3.0. Документация и гайды по настройке собраны на официальном сайте проекта https://lingchat.wiki/.

Для запуска вам понадобится настроенный тулчейн Rust и API-ключ к совместимому LLM-провайдеру (или локально поднятый сервер вроде Ollama / vLLM с поддержкой OpenAI-совместимого API).

Если вам давно хотелось собрать своего кастомного настольного компаньона или поэкспериментировать с динамической сменой спрайтов через LLM, покопаться в репозитории SlimeBoyOwO/LingChat точно имеет смысл.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.