enola CLI
CLI строит граф зависимостей по коду без нейросетей и отдает его агенту по MCP: что заденет правка, не нарушены ли слои
- 278 ★ репозитория
- Последний коммит
- Apache-2.0
Расширенный доступ
Почему такой уровень
- Читает весь код репозитория и сохраняет снимок графа в папку .enola/
- Команда enola install --hooks правит настройки агентов и добавляет хук, который запускается в конце каждого хода агента, но показывает список файлов и спрашивает подтверждение
Установка
- Работает в
Ручная установка
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.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыЛокальный граф структуры кода: строит карту репозитория через tree-sitter и отдает агенту по MCP только тот контекст, который относится к правке
Локальный граф знаний о коде с историей версий: MCP-сервер отвечает агенту, кто вызывает функцию и что сломается от правки
Индексирует кодовую базу в граф знаний и отдает агенту через MCP связи вызовов, радиус влияния правок и поиск по коду
Deep Graph MCP — граф кода репозитория для агента
Deep Graph MCP
MCP-сервер дает агенту граф кода репозитория: поиск функций по смыслу, связи символов и список мест, которые заденет правка
Локальный граф кода для агентов: MCP-сервер отдает точки входа, связи символов и радиус влияния изменений за один вызов
CLI и MCP-сервер без зависимостей: строит по репозиторию граф вызовов, чтобы агент понял код без чтения файлов целиком
Сравнение с похожими
Записи с тем же главным запросом: чем они отличаются.
| Запись | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| enola (эта запись) | нет | 278 | ||
| CodeGraph на Rust | нет | не нужна | 908 | граф кода на Rust с четырьмя MCP-инструментами, без проверки архитектуры в CI |
| SocratiCode | нет | не нужна | 3 358 | локальный индекс кодовой базы с гибридным поиском и графами зависимостей |
| Memtrace | да | не нужна | 508 | граф знаний о коде с историей версий |
Коротко о README
README открывается примером на самом репозитории enola: команда печатает число фактов, циклы, нарушения слоев и самые нагруженные модули. Дальше разобраны проверка правки через baseline и check, запуск в CI, подключение к агентам по MCP и сборка нескольких репозиториев в один граф. В разделе о бенчмарках приведены измерения на публичных репозиториях, а ограничения автор перечисляет сам.