enola CLI

CLI строит граф зависимостей по коду без нейросетей и отдает его агенту по MCP: что заденет правка, не нарушены ли слои

  • 278 ★ репозитория
  • Последний коммит
  • Apache-2.0
CLI

Расширенный доступ

Почему такой уровень

  • Читает весь код репозитория и сохраняет снимок графа в папку .enola/
  • Команда enola install --hooks правит настройки агентов и добавляет хук, который запускается в конце каждого хода агента, но показывает список файлов и спрашивает подтверждение
Все причины и проверки

enola-labs/enola

Установка

Ручная установка

curl -fsSL https://raw.githubusercontent.com/enola-labs/enola/main/install.sh | sh

Готовый бинарник кладется в `~/.local/bin`, компилятор Go и C не нужен. Есть и пакет `pip install enola-cli`.

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Читает весь код репозитория и сохраняет снимок графа в папку .enola/
  • Команда enola install --hooks правит настройки агентов и добавляет хук, который запускается в конце каждого хода агента, но показывает список файлов и спрашивает подтверждение

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

enola читает исходный код и записывает, из чего он состоит: модули, функции, маршруты API, таблицы базы данных, темы сообщений. Затем связывает эти части между собой, внутри одного репозитория и между несколькими. Получается граф, у которого можно спросить, что заденет правка функции, или отдать его агенту. Команда `enola --explain` с путем к репозиторию печатает обзор: языки, циклические зависимости, нарушения порядка слоев, самые связанные модули. Команда `enola baseline pin` запоминает текущее состояние, а `enola check` после правок показывает только то, что изменилось. Порядок слоев и допустимые вызовы между сервисами записываются в файле намерений. Для агента enola работает как MCP-сервер, а `enola install --hooks` добавляет хук: после правки агент запускает ту же проверку и видит, что сломал. Разбор детерминированный: один и тот же код всегда дает один и тот же граф.

Для кого. Для разработчиков и команд, которые правят большие или многосервисные кодовые базы вместе с Claude Code, Codex или Cursor и хотят проверять архитектуру автоматически.

Подходит, если

  • Перед правкой функции, маршрута или модуля нужно узнать, что от них зависит
  • Команда задала порядок слоев, и CI должен падать на новых нарушениях
  • Фронтенд вызывает бэкенд из другого репозитория, и нужна связь между вызовом и обработчиком
  • Агент тратит много токенов на текстовый поиск, и ему нужен короткий ответ о структуре
  • Граф нужно загрузить в собственный инструмент: снимок хранится в обычных файлах с описанным форматом

Не подходит, если

  • Нужна оценка поведения при выполнении: enola моделирует структуру и ничего не знает о таймаутах, повторах и потере сообщений
  • Адреса запросов собираются во время выполнения: такие вызовы enola помечает как неразрешенные, угадывать не будет
  • Нужна гарантия, что репозиторий чист: чистый `enola check` говорит лишь о том, что правка не внесла ничего нового
  • Язык проекта не входит в список из двух десятков поддерживаемых: пробелы можно сообщать в issues

Пример запроса к агенту

Я хочу переписать функцию расчета скидки. Спроси у графа enola, что от нее зависит, и перечисли места вызова

Ограничения

Большинство находок носит рекомендательный характер: на корпусе проверки 91,6% замечаний не могли завалить сборку даже при включении всех проверок. По умолчанию ничего не падает, нужные проверки включают флагом, например `enola check --fail-on=layers`. Ограничения по каждому языку описаны в docs/extraction. Неразрешенные вызовы, например адреса, собранные во время выполнения, enola показывает отдельным списком и не достраивает.

Как отключить. Команда `enola uninstall` отменяет все изменения, сделанные `enola install`: хуки и записи в настройках агентов. Сам бинарник лежит в `~/.local/bin`, сохраненные графы в папке `.enola/` репозитория.

Частые вопросы

Как подключить enola к Claude Code и Codex?

Для Claude Code выполните `claude mcp add enola enola`, для Codex `codex mcp add enola -- enola`. Cursor читает блок с командой enola из `.cursor/mcp.json`, а opencode регистрирует сервер при `enola install`.

Нужна ли enola нейросеть или аккаунт?

Нет. Это один бинарник, он разбирает код локально, ничего не отправляет и не требует учетной записи. Граф строится парсингом, поэтому на один и тот же код результат одинаков.

Какие языки читает enola?

Больше двадцати: Go, Java, Kotlin, Scala, JavaScript, TypeScript, Python, Ruby, PHP, Swift, Dart, Rust, C и C++, языки .NET. Отдельно разбираются OpenAPI, gRPC, GraphQL, AsyncAPI, Terraform и Ansible.

Как запускать проверку на каждом pull request?

Подключите действие `enola-labs/enola-action@v2`: оно сравнивает базовый коммит с веткой, отмечает строки с находками и пишет итог в сводку задания. По умолчанию действие только сообщает, а блокировку включает параметр fail-on.

Как enola связывает несколько репозиториев?

Вы описываете кластер из бэкенда и клиентов, а enola сопоставляет вызовы с маршрутами. Команда `enola coverage` показывает, какие вызовы удалось связать, а какие нет. Например, вызов фронтенда к `/api/orders` привязывается к обработчику на Go.

Обсуждение

Вопросов и отзывов пока нет.

Локальный граф структуры кода: строит карту репозитория через tree-sitter и отдает агенту по MCP только тот контекст, который относится к правке

MCP-серверРасширенный доступ32,5 тыс.Звезды репозитория
Официальный

Локальный граф знаний о коде с историей версий: MCP-сервер отвечает агенту, кто вызывает функцию и что сломается от правки

MCP-серверРасширенный доступ508Звезды репозитория
Выбор редакции

Индексирует кодовую базу в граф знаний и отдает агенту через MCP связи вызовов, радиус влияния правок и поиск по коду

MCP-серверРасширенный доступ48,1 тыс.Звезды репозитория

MCP-сервер дает агенту граф кода репозитория: поиск функций по смыслу, связи символов и список мест, которые заденет правка

MCP-серверРасширенный доступ402Звезды репозитория

Локальный граф кода для агентов: MCP-сервер отдает точки входа, связи символов и радиус влияния изменений за один вызов

MCP-серверРасширенный доступ75,8 тыс.Звезды репозитория

CLI и MCP-сервер без зависимостей: строит по репозиторию граф вызовов, чтобы агент понял код без чтения файлов целиком

CLIРасширенный доступ2,5 тыс.Звезды репозитория

Сравнение с похожими

Записи с тем же главным запросом: чем они отличаются.

ЗаписьОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
enola (эта запись)нет278
CodeGraph на Rustнетне нужна908граф кода на Rust с четырьмя MCP-инструментами, без проверки архитектуры в CI
SocratiCodeнетне нужна3 358локальный индекс кодовой базы с гибридным поиском и графами зависимостей
Memtraceдане нужна508граф знаний о коде с историей версий

Коротко о README

README открывается примером на самом репозитории enola: команда печатает число фактов, циклы, нарушения слоев и самые нагруженные модули. Дальше разобраны проверка правки через baseline и check, запуск в CI, подключение к агентам по MCP и сборка нескольких репозиториев в один граф. В разделе о бенчмарках приведены измерения на публичных репозиториях, а ограничения автор перечисляет сам.

Бейдж для README

Сообщить о проблеме

Foxx AIenola
Foxx AI

Я Foxx AI и уже разобрал этот инструмент. Спросите про установку, настройку или что угодно еще, отвечу простыми словами.