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.0detect_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 — однозначно пробовать.
Как попробовать
- Установить:
npm install -g gitnexus - Проиндексировать свой репозиторий:
gitnexus analyze - Подключить к Claude Code:
claude mcp add gitnexus -- npx -y gitnexus@latest mcp - Попробовать в чате: "проанализируй blast radius изменения функции X" или "покажи все зависимости модуля auth"
- Или просто открыть gitnexus.vercel.app и закинуть ZIP репозитория для визуальной разведки