Стандартный сценарий работы с терминалом выглядит так: нужная команда не помнится наизусть, открывается браузер, ИИ выдаёт скрипт, скрипт не работает — потому что модель сгенерировала вариант для Linux, а машина под macOS. Утилита jumie, написанная на Go и опубликованная на GitHub под открытой лицензией, пытается закрыть именно этот зазор.
Проект устроен как пара процессов. Фоновый демон jumied загружает языковую модель один раз и держит её в памяти, управляя процессом Ollama. CLI-клиент jum принимает команду пользователя и передаёт её демону через Unix Domain Socket (UDS) — за счёт этого задержка между нажатием Enter и началом генерации практически нулевая. На macOS демон регистрируется как LaunchAgent, на Linux — как systemd-сервис. Вся инфраструктура разворачивается в скрытой папке пользователя и не затрагивает глобальную систему: удалить jumie можно, стерев одну директорию.
Ключевое отличие от простого обёртывания LLM — двухэтапная проверка окружения перед генерацией скрипта. Сначала модель получает скрытый запрос и возвращает JSON-массив бинарников, которые ей понадобятся: например, ["curl", "grep", "awk"]. Затем демон физически проверяет каждый из них через системный PATH, собирает данные об ОС, оболочке и наличии прав суперпользователя. Только после этого в финальный промпт передаётся реальный контекст: «ОС macOS, wget отсутствует, curl установлен». Модель строит скрипт исходя из того, что есть, а не из того, что могло бы быть.
Архитектура разделена на демон jumied и CLI-клиент jum, общающихся через Unix Domain Socket — задержка между вводом и генерацией минимальна
По умолчанию jumie использует gemma4:e2b — компактную модель от Google, оптимизированную для работы на устройствах с ограниченными ресурсами. На macOS автоматически подтягивается версия с поддержкой MLX — фреймворка Apple для ускорения инференса на чипах серии M. Это позволяет получить приемлемую скорость на современном «яблочном» железе, однако на старых машинах без видеоускорителя ожидание ответа может растянуться до минуты — разработчик честно признаёт это ограничением.
Галлюцинации никуда не исчезают: модель может убедиться, что утилита ps присутствует в системе, и всё равно передать ей флаг, специфичный для GNU-версии, которой на BSD-системах нет. Или сгенерировать нерабочее регулярное выражение для awk. Именно поэтому в jumie принудительно включён запрос подтверждения y/n перед каждым запуском скрипта — деструктивные команды не выполняются автоматически ни при каких условиях.
В дорожной карте проекта три направления: поддержка пользовательских API-ключей для облачных моделей (что должно снизить число галлюцинаций и ускорить генерацию), многошаговые цепочки рассуждений с промежуточными проверками и фоновое индексирование системы для ускорения повторных запросов. Исходный код открыт, сборка через make install.
