> · 8 мин

GitNexus — knowledge graph для кода, который живёт в браузере и делает ваш AI-агент на порядок умнее

GitNexus — knowledge graph для кода, который живёт в браузере и делает ваш AI-агент на порядок умнее

GitNexus — knowledge graph для кода, который живёт в браузере и делает ваш AI-агент на порядок умнее

Проблема всех AI-кодинг-агентов одна и та же: они видят код как плоский текст. Claude Code читает файл, Cursor сканирует контекст — но ни один из них не понимает, что UserService.create() вызывается из трёх контроллеров, зависит от EmailNotifier, и при рефакторинге сломает интеграционный тест в совершенно другом модуле.

GitNexus решает эту проблему радикально: он строит полноценный knowledge graph вашей кодовой базы — с узлами-символами, рёбрами-зависимостями, кластерами и цепочками вызовов. И всё это работает либо прямо в браузере через WebAssembly, либо как CLI + MCP-сервер для вашего AI-агента.

TL;DR: GitNexus индексирует репозиторий в граф знаний с помощью Tree-sitter и KuzuDB. Через MCP-сервер Claude Code и Cursor получают 7 инструментов: поиск, контекст символа на 360°, blast radius анализ, git-diff impact, рефакторинг. 7.8K звёзд, +5.8K за неделю, PolyForm Noncommercial лицензия.

Что это такое и зачем нужно

Обычный AI-агент работает так: получает запрос → ищет файлы по имени или grep → читает содержимое → генерирует ответ. Это плоский поиск. Он не знает, что функция processPayment вызывается из OrderController, который зависит от InventoryService, который подписан на события StockUpdateQueue.

GitNexus работает иначе. На этапе индексации он:

  • Парсит AST каждого файла через Tree-sitter — извлекает функции, классы, импорты, типы
  • Строит граф в KuzuDB — узлы (символы) + рёбра (вызовы, импорты, наследование, использование типов)
  • Кластеризует связанные символы в функциональные группы с оценкой связности
  • Трассирует выполнение — находит цепочки вызовов от точек входа до конечных эффектов
  • Индексирует для поиска — гибридный поиск BM25 + семантический + reciprocal rank fusion

Результат: когда AI-агент спрашивает "что делает processPayment и что сломается, если я её изменю?", он получает не список файлов, а полную картину — кто вызывает, что вызывается внутри, какие тесты покрывают, какие сервисы зависят.

Два режима: браузер и CLI

Браузер — заходите на gitnexus.vercel.app, закидываете ZIP или URL репозитория, и через минуту видите интерактивный граф. Всё работает на клиенте — Tree-sitter и KuzuDB скомпилированы в WASM. Код никуда не уходит.

Ограничение: браузерная память. Для репозиториев до ~5000 файлов работает нормально. Для крупного монорепо — нет.

CLI + MCP — основной режим для разработки:

npm install -g gitnexus

# Индексировать текущий репозиторий
gitnexus analyze

# Запустить MCP-сервер
gitnexus mcp

CLI использует нативные биндинги Tree-sitter и KuzuDB — быстрее и без ограничений памяти браузера. Индекс хранится в .gitnexus/ внутри репозитория (автоматически добавляется в .gitignore), а указатель регистрируется в ~/.gitnexus/registry.json. Один MCP-сервер обслуживает все проиндексированные репозитории.

MCP-интеграция: 7 инструментов для AI-агента

Подключение к Claude Code — одна команда:

claude mcp add gitnexus -- npx -y gitnexus@latest mcp

Для Cursor — добавить в ~/.cursor/mcp.json:

{
  "mcpServers": {
    "gitnexus": {
      "command": "npx",
      "args": ["-y", "gitnexus@latest", "mcp"]
    }
  }
}

После подключения агент получает 7 MCP-инструментов:

  • query — гибридный поиск по кодовой базе, результаты сгруппированы по процессам и потокам выполнения
  • context — полный контекст символа на 360°: кто вызывает, что вызывается, к какому кластеру принадлежит, какие тесты покрывают
  • impact — blast radius анализ: "если я изменю эту функцию, что сломается?" с оценкой уверенности от 0.0 до 1.0
  • detect_changes — анализ git-diff: какие изменения в текущем коммите затрагивают какие части системы
  • rename — координированный рефакторинг: переименование символа во всех файлах, где он используется
  • cypher — сырые запросы к графу на языке Cypher для нестандартных сценариев
  • list_repos — список проиндексированных репозиториев

Плюс два MCP-промпта: detect_impact для pre-commit анализа и generate_map для генерации архитектурной документации с Mermaid-диаграммами.

Ключевое отличие от простого grep-по-кодовой-базе: GitNexus предвычисляет связи на этапе индексации. Агент получает структурированный ответ за один вызов, вместо того чтобы итеративно грепать файл за файлом.

Как это выглядит на практике

Допустим, у вас TypeScript-проект — e-commerce платформа. Приходит задача: вынести логику расчёта скидок из OrderService в отдельный DiscountEngine. Типичный рефакторинг, который в монолите средних размеров может задеть десяток файлов.

Без GitNexus вы пишете в Claude Code:

вынеси calculateDiscount из OrderService в отдельный DiscountEngine

Агент находит OrderService.ts, видит метод calculateDiscount, создаёт новый файл DiscountEngine.ts, переносит метод, обновляет импорт в OrderService. Готово? Нет. Через час CI падает: оказывается, calculateDiscount напрямую вызывался ещё из CartController, из SubscriptionRenewalJob, и из трёх интеграционных тестов. Агент их не нашёл, потому что грепал только файлы, которые явно импортируют OrderService.

С GitNexus — перед рефакторингом агент автоматически вызывает impact:

вынеси calculateDiscount из OrderService в отдельный DiscountEngine

Claude Code видит MCP-инструменты GitNexus и первым делом вызывает impact для calculateDiscount. Ответ приходит за один вызов:

  • Прямые вызовы (confidence 1.0): OrderService.createOrder, CartController.applyPromo, SubscriptionRenewalJob.renew
  • Косвенные зависимости (confidence 0.7): PricingMiddleware (через re-export в index.ts), CheckoutFlow.finalize (через цепочку Cart → Order → Discount)
  • Тесты: order.integration.test.ts, cart.unit.test.ts, subscription.e2e.test.ts
  • Кластер: функция принадлежит группе "Pricing & Discounts" с cohesion score 0.82

Теперь агент знает полную картину. Он создаёт DiscountEngine, обновляет все 5 точек вызова, правит 3 тестовых файла, и обновляет re-export в index.ts. CI проходит с первого раза.

Другой пример — pre-commit ревью. Вы сделали правки в нескольких файлах и перед коммитом хотите убедиться, что ничего не сломали:

проверь мои текущие изменения на потенциальные проблемы

Агент вызывает detect_changes, который анализирует git-diff и сопоставляет изменённые символы с графом зависимостей. Результат: "вы изменили сигнатуру validateEmail — это затрагивает RegistrationForm, ProfileEditor и InviteService. В InviteService аргументы передаются позиционно — после изменения сигнатуры вызов сломается."

Это не магия — это просто граф зависимостей, который AI-агент может запросить одним вызовом вместо десяти итераций grep → read → grep → read.

Что поддерживается

12 языков: TypeScript, JavaScript, Python, Java, Kotlin, C, C++, C#, Go, Rust, PHP, Swift.

MCP-интеграция работает с Claude Code (полная поддержка), Cursor, Windsurf, OpenCode.

При подключении к Claude Code автоматически устанавливаются 4 скилла в .claude/skills/: Exploring, Debugging, Impact Analysis, Refactoring — агент начинает использовать граф знаний при стандартных операциях без дополнительных промптов.

Подводные камни

PolyForm Noncommercial лицензия — самый серьёзный минус. Лицензия PolyForm Noncommercial 1.0.0 разрешает использование только в некоммерческих целях: личные проекты, учёба, исследования. Если пишешь код для компании или стартапа — формально нужна отдельная коммерческая лицензия, которой пока нет. Для pet-проектов и open-source — без ограничений.

Полная переиндексация при смене ветки. Issue #76 сообщает, что после git checkout на другую ветку индекс устаревает и его нужно перестроить полностью. Для монорепо на 10K+ файлов это минуты ожидания при каждом переключении. Инкрементальной индексации пока нет.

Баги multi-repo режима. Issue #139: gitnexus serve всегда возвращает данные из первого репозитория в registry.json, игнорируя текущую рабочую директорию. Если работаете с несколькими проектами одновременно — можете получить контекст не от того репозитория.

Crash на репозиториях без парсируемых файлов. Issues #135, #129: если репозиторий содержит только markdown, конфиги или другие не-код файлы, индексация падает с TypeError: At least one of max, maxSize, or ttl is required. Проект молодой — 266 коммитов, 27 открытых issues — edge cases ещё не закрыты.

Проблемы на Windows. Issue #132: некорректное разрешение путей после gitnexus setup. Если работаете на Windows — ожидайте ручной настройки.

Альтернативы

  • Aider repo-map — встроенная в Aider система: Tree-sitter парсит символы, PageRank ранжирует по связности, результат укладывается в токен-бюджет LLM. Проще, легче, не требует отдельной индексации — но даёт плоский список, а не граф. Для стандартных задач кодинга хватает, для глубокого анализа архитектуры — нет.

  • Sourcegraph Cody — enterprise-grade код-интеллект: серверная индексация, RAG с векторными эмбеддингами, поддержка монорепо любого размера. Минусы: код уходит на сервер Sourcegraph, платная подписка для серьёзного использования, нет MCP-интеграции с Claude Code из коробки.

  • code-graph-rag — похожая идея (knowledge graph + RAG для кода), но серверный, менее зрелый, значительно меньше сообщество. GitNexus выигрывает за счёт WASM-браузера, MCP-сервера и active development.

Вердикт

Если работаешь с Claude Code или Cursor и устал от ситуаций, когда агент ломает код в одном месте, не зная о зависимости в другом — подключай GitNexus через MCP прямо сейчас. impact и context инструменты реально меняют качество ответов агента, потому что он видит архитектуру, а не файлы.

Не стоит, если проект коммерческий — PolyForm Noncommercial лицензия это стоп-сигнал до появления коммерческого варианта. И не стоит ожидать стабильности: 27 открытых issues, баги с multi-repo, crash на edge cases — проекту две недели в тренде, и это видно.

Для pet-проектов и open-source — однозначно пробовать.

Как попробовать

  1. Установить: npm install -g gitnexus
  2. Проиндексировать свой репозиторий: gitnexus analyze
  3. Подключить к Claude Code: claude mcp add gitnexus -- npx -y gitnexus@latest mcp
  4. Попробовать в чате: "проанализируй blast radius изменения функции X" или "покажи все зависимости модуля auth"
  5. Или просто открыть gitnexus.vercel.app и закинуть ZIP репозитория для визуальной разведки
$ ls ./related/

Похожие статьи

subscribe.sh

$ cat /dev/blog/updates

> Свежие заметки о программировании,

> DevOps и AI — прямо в мессенджер

./subscribe