Bash4LLM+, Bash-обёртка для LLM API без зависимостей

Bash4LLM+, Bash-обёртка для LLM API без зависимостей

Bash4LLM+, это одиночный, самодостаточный Bash-скрипт, который действует как обёртка для API Chat Completions, совместимых с OpenAI, начиная с Groq и распространяясь на другие провайдеров. Разработчик Кристиан Евангелисти позиционирует его как легковесную альтернативу полнофункциональным SDK.

Основные возможности: динамическая загрузка списка моделей (без жёстких привязок), безопасность по дизайну (без /tmp, без eval, валидация провайдеров, изолированные временные файлы с правами 0700), модульная структура (PRECORE_BOOT, CORE_SETUP, PROVIDER и т.д.), система метаданных UI в JSON (ui_state) для интеграции с GUI, потоковая и обычная обработка, автосохранение длинных выходов.

Зависимости минимальны: bash, coreutils, findutils, util-linux, gawk, curl, jq. Поддерживает Linux, macOS, WSL, Cygwin, Termux (Android), BSD. На Android автоматически обходит нестабильный flock, переходя на атомарные mkdir-блокировки.

Управление моделями: сохраняемый по умолчанию, dinamический белый список, автоотбор. Сеансы создают NDJSON-файлы истории в $BASH4LLM_HISTORY_DIR и метаданные в ui_state. Лицензия: GPL v3.

Установка: одна команда git clone, копирование скрипта, chmod +x, экспорт API-ключа, готово. Дополнительные провайдеры и шаблоны устанавливаются через --install-extras.

Ключевые факты

  • Один Bash-скрипт, аудируемый и без eval, минимальная поверхность атак для интеграции с LLM
  • Поддержка множества провайдеров (Groq, Gemini, Hugging Face, Mistral) без переустановки основного кода
  • Нативная поддержка Termux/Android с обходом kernel-level ограничений flock через атомарные mkdir-блокировки
  • Система метаданных UI (JSON в ui_state) позволяет GUI и инструментам вроде Home Assistant читать состояние сеансов и результаты в реальном времени
  • Кросс-платформность (Linux, macOS, WSL, Cygwin, BSD) + минимальные зависимости (curl, jq, awk, coreutils), работает везде

Почему это важно

Bash4LLM+ решает проблему интеграции LLM в автоматизацию Bash/Unix без тяжёлых SDK и без потери контроля. Для DevOps, системных администраторов и скрипт-писателей это означает: вы видите ВСЕ сетевые вызовы (curl под капотом), контролируете безопасность (нет /tmp, нет eval), можете аудировать код (один читаемый файл) и отлаживаете в обычном терминале. В эпоху агентов и LLM-помощников легковесная, прозрачная интеграция критична.

Кому это важно

DevOps и SRE, которые хотят добавить LLM в скрипты CI/CD или мониторинг. Разработчики, работающие в ограниченных окружениях (embedded Linux, контейнеры без pip). Авторы инструментов, которым нужна прозрачная интеграция с LLM-провайдерами. Пользователи мобильных Linux (Termux на Android, где обычные инструменты падают). Энтузиасты, которым важна аудируемость и контроль над кодом.

Как это применить

Быстрый старт: git clone, cp скрипт в рабочую папку, chmod +x, экспорт API-ключа (export GROQ_API_KEY=...), готово. Затем: ./bash4llm "ваш промпт" или через конвейер (вывод echo "что-то" направляется в ./bash4llm). Для сложных случаев: --session для памяти (каждый вызов с одним ID сеанса автоматически добавляет историю), --model для выбора модели, -f для входа из файла, --dry-run для проверки. Для GUI/Home Assistant: читайте JSON в $BASH4LLM_CONFIG_DIR/ui_state (sessions, last_api, provider_capabilities). Дополнительные провайдеры: ./bash4llm --install-extras gemini mistral (добавляет поддержку других сервисов).

Можно ли доверять

Автор Кристиан Евангелисти, контакт: opensource@cevangel.anonaddy.me, репозиторий публичный (GitHub). Код открыт (GPL v3), аудируем и не использует eval. Безопасность документирована в SECURITY файле. Риск предопределён: это single-user инструмент (PC, ноутбук, личный сервер), не для многопользовательских систем. Провайдеры, это код, который вы запускаете в вашей shell, поэтому они должны быть в защищённой папке вашей собственности. Миграции между версиями полагаются на самоконтроль конфигурации.

Риски и подводные камни

  1. Провайдеры как код: extras/providers должны быть защищены (не скачивайте от кого попало). 2. TOCTOU-уязвимости и ограничения JSON/SSE-парсинга документированы, но требуют понимания деталей. 3. Никакой встроенной памяти без явного --session, без сеанса каждый вызов, новый разговор. 4. На Android требуется Termux и проверка, что переменные BASH4LLM_EXTRAS_DIR и BASH4LLM_TMPDIR указывают на безопасные места. 5. Требует bash 4+, не совместим с тонким sh; некоторые системы имеют старый bash. 6. API-ключи в переменных окружения, не забывайте изолировать процесс от других пользователей.