Как писать код с ИИ в терминале без Electron и Node.js
Большинство современных AI-ассистентов для программирования устроены примерно одинаково. Они упакованы в монструозные Electron-приложения, тащат за собой Node.js, Python или тяжелые рантаймы, отъедают пару сотен мегабайт оперативной памяти еще до первого запроса и норовят перехватить весь экран. Если вы работаете на слабом сервере, стареньком ноутбуке или просто любите быстрые unix-утилиты, такой подход быстро начинает раздражать.
Недавно наткнулся на интересный проект hax от Александра Чеховского. Это компактный терминальный агент для кодинга, написанный на чистом Си. Автор решил пойти против тренда на тяжелые обвязки и сделал инструмент, который запускается мгновенно и весит считанные мегабайты.

Что это такое и зачем нужно
Hax представляет собой CLI-утилиту, скомпилированную в один нативный бинарник. В памяти процесс занимает всего несколько мегабайт. Если вы крутите локальные нейросети через llama.cpp прямо на рабочей машине, каждый сэкономленный гигабайт RAM имеет значение, так как память нужна под контекст модели и веса.
Инструмент создавался для тех, кто не хочет видеть маркетплейсы плагинов, громоздкие веб-панели и бесконечные окна подтверждения прав. Здесь всё подчинено классической Unix-философии: есть stdin, stdout, понятные конфиги и возможность встраивать утилиту в обычные пайплайны.
Чем проект интересен на практике
В отличие от многих CLI-оберток над API, hax продуман именно как инструмент для постоянной работы в консоли.
Бережное отношение к терминалу
Hax не ломает скроллбек терминала и не перерисовывает экран целиком через ncurses. Утилита выводит стриминг Markdown с переносом строк и обновляет только текущую строку либо область ввода. Вся история вашего терминала остается на месте, текст можно спокойно копировать мышью без артефактов псевдографики.
Локальные модели без танцев с бубном
Для локального запуска достаточно поднять llama-server или запустить ollama. Hax умеет сам находить запущенный инстанс llama.cpp, определять параметры модели и подстраивать контекст. Никаких многостраничных JSON-конфигов ради локального теста писать не нужно.
Прозрачность сетевых запросов
В любой момент можно нажать Ctrl+T прямо в интерактивной сессии и увидеть точный транскрипт того, что отправилось в модель и что вернулось в ответ. Если вы отлаживаете промпты или хотите проверить, не утекли ли лишние файлы в контекст, эта возможность сильно экономит нервы. Также есть режим сбора детального лога сетевого протокола.
Поддержка разных провайдеров
Утилита работает со стандартными облачными API и локальными движками:
- OpenAI и совместимые эндпоинты через ключ
OPENAI_API_KEY - Anthropic Claude через
ANTHROPIC_API_KEY - OpenRouter, OpenCode Zen / Go
- Codex через интерактивный вход по подписке ChatGPT (
/login) - Локальные llama.cpp и Ollama
Установка и сборка
Hax работает на Linux, macOS, FreeBSD и OpenBSD. Пользователи Windows могут запускать его внутри WSL.
На macOS и Linux утилиту проще всего поставить через Homebrew:
brew install oleksandrchekhovskyi/hax/hax
В Arch Linux пакет есть в AUR под именем hax.
Если хочется собрать бинарник вручную и слинковать его с системными библиотеками:
git clone https://github.com/OleksandrChekhovskyi/hax.git
cd hax
scripts/install_deps.sh
make
make install
Скрипт зависимостей подтягивает компилятор C, libcurl, jansson, meson, ninja, pkg-config и fzf для автодополнения имен файлов через синтаксис @file.
Как с этим работать
Основной режим работы — интерактивный REPL прямо в каталоге проекта:
hax
Внутри доступны слэш-команды. Например, /provider выводит список доступных бэкендов и моделей, а /help показывает горячие клавиши. Выбранную модель и провайдер hax запоминает между запусками.
Для скриптов и быстрой автоматизации есть одноразовый режим -p:
# Задать разовый вопрос по коду в текущей папке
hax -p "найди места с утечками памяти в main.c"
# Передать данные через пайп
git diff | hax -p "напиши понятный commit message по этому диффу"
# Продолжить последнюю сессию для этого каталога
hax -c
В режиме -p утилита выдает в stdout только чистый ответ, отправляя служебные подсказки в stderr. Это позволяет легко комбинировать ее с grep, xargs и другими unix-утилитами.
Что под капотом
Проект написан на стандартном C без тяжелых фреймворков. Сетевые запросы обрабатываются через libcurl, парсинг и сборка JSON лежат на компактной библиотеке jansson.
Вся архитектура построена вокруг простоты аудита кода. Сессии и настройки сохраняются в виде обычных текстовых файлов по стандарту XDG. Вместо сложной системы плагинов расширение функционала строится через запуск подпроцессов операционной системы.
Кому проект пригодится
Если вам нужен тяжелый IDE-комбайн со встроенными чатами и визуальными графиками, hax вряд ли вас устроит. Здесь нет плагинов и интеграций в меню редакторов.
Но если вы привыкли работать в tmux, запускать локальные LLM через llama-server на собственном железе или администрировать удаленные серверы по SSH, hax определенно стоит протестировать. Он не шумит, не отъедает ресурсы и делает ровно то, что от него просят.
