Проблема: ИИ-ассистент читает всё подряд

AI-инструменты для написания кода перечитывают весь репозиторий при каждой задаче. Типичная ситуация: Claude читает middleware, модели базы данных и вспомогательные файлы, не имеющие отношения к изменённому эндпоинту — ревью стоит 5 500 токенов вместо 800. Именно это и решает code-review-graph — открытый инструмент, вышедший в марте 2026 года.

Это локальный граф знаний для Claude Code, который строит постоянную карту кодовой базы, чтобы Claude читал только то, что важно — в 6,8× меньше токенов на ревью и до 49× на повседневных задачах.

ℹ Что такое MCP
MCP (Model Context Protocol) — протокол, позволяющий внешним инструментам передавать структурированный контекст напрямую в AI-ассистенты. code-review-graph использует MCP как «шину» между графом и Claude.

Как это работает

Репозиторий парсится в AST (абстрактное синтаксическое дерево) с помощью Tree-sitter, сохраняется как граф из узлов (функции, классы, импорты) и рёбер (вызовы, наследование, покрытие тестами), а затем при ревью вычисляется минимальный набор файлов, которые нужно прочитать.

Когда файл меняется, граф отслеживает каждый вызывающий модуль, зависимость и тест, который может быть затронут. Это называется blast-radius analysis — анализ «радиуса поражения» изменения.


graph TD
    A[Исходный код] -->|Tree-sitter парсинг| B[AST]
    B -->|Извлечение узлов и рёбер| C[Граф в SQLite]
    C -->|Запрос по изменению| D[Blast-radius анализ]
    D -->|MCP| E[Claude Code]
    E -->|Читает только нужные файлы| F[Экономия токенов]

Первоначальная сборка занимает ~10 секунд для проекта из 500 файлов. После этого граф обновляется автоматически при каждом редактировании файла и каждом git-коммите.

Результаты бенчмарков

В среднем эффективность токенов составляет 8,2× (наивный подход vs граф) — граф заменяет чтение целых исходных файлов компактным структурным контекстом, охватывающим blast-radius, цепочки зависимостей и пробелы в покрытии тестами.

Оценка проводилась на 6 реальных open-source репозиториях, всего 13 коммитов. Для каждого коммита измерялось потребление токенов при наивном подходе (Claude читает все связанные файлы) и при подходе с графом (Claude сначала запрашивает граф, читает только blast-radius).

РепозиторийСр. токены (наивно)Ср. токены (граф)Снижение
fastapi4 9446148,1×
flask44 7514 2529,1×
gin21 9721 15316,4×
httpx12 0441 7286,9×
nextjs9 8821 2498,0×
express6939830,7×
Среднее8 2481 1638,2×
⚠ Ограничение
Для однофайловых изменений в небольших пакетах граф-контекст (метаданные, рёбра, инструкции по ревью) может превысить размер исходного файла. Граф окупается при многофайловых изменениях, где он отсекает нерелевантный код.

Точность blast-radius анализа

Blast-radius анализ никогда не пропускает реально затронутый файл (100% recall). В некоторых случаях он даёт избыточные результаты — это консервативный компромисс: лучше отметить лишние файлы, чем пропустить сломанную зависимость.

Быстрый старт

pip install code-review-graph
code-review-graph install   # автоопределение всех поддерживаемых платформ
code-review-graph build     # парсинг кодовой базы

Команда install определяет, какие AI-инструменты установлены, записывает правильную MCP-конфигурацию для каждого и внедряет граф-ориентированные инструкции в правила платформы.

Поддерживаются платформы: Claude Code, Cursor, Codex, Kiro. Требуется Python 3.10+.

💡 Совет
Для лучшего опыта установите uv — тогда MCP-конфиг будет использовать uvx, что ускоряет запуск MCP-сервера и упрощает изоляцию окружения.

Ключевые возможности

Инструмент предоставляет Claude несколько MCP-инструментов: анализ blast-radius, запросы о влиянии изменений, обзор архитектуры, обнаружение мёртвого кода, предпросмотр рефакторинга и пробелы в покрытии тестами.

Граф хранится в SQLite и экспонируется через MCP-инструменты и промпты. Дополнительно поддерживаются:

  • Семантический поиск — опциональные векторные эмбеддинги через sentence-transformers, Google Gemini или любой OpenAI-совместимый эндпоинт
  • Интерактивная визуализация — D3.js-граф с поиском и легендой сообществ
  • Экспорт — GraphML (Gephi/yEd), Neo4j Cypher, Obsidian vault, SVG
  • Multi-repo — регистрация нескольких репозиториев с единым поиском

Последний релиз добавил экспорт в GraphML/Cypher/Obsidian/SVG, graph diff для сравнения снимков графа во времени, токен-бенчмаркинг и memory loop — сохранение результатов Q&A в markdown для повторного встраивания в граф.

Поддержка языков

Парсер поддерживает 19 языков, включая Vue SFC, Solidity, Dart, R, Perl, Lua, а также Jupyter/Databricks-ноутбуки. Финальный список в версии 2.x расширен до 23 языков, включая Zig, PowerShell, Julia и Svelte SFC.

Контекст и значение для отрасли

«Структурный граф знаний меняет подход: вместо того чтобы читать всё в надежде найти нужное, ИИ начинает с точной карты того, что важно, и читает только это.»

В марте 2026 года разработчик Tirth Kanani опубликовал инструмент, который попал в GitHub Trending за несколько дней, а заголовок о 49× снижении токенов на монорепозитории Next.js вызвал одновременно скептицизм и широкий интерес.

Подобные инструменты — code-review-graph, Graphify и другие — отражают нарастающую тенденцию: понимание репозиториев на уровне кодовой базы остаётся сложной задачей для LLM. Решение через статический граф зависимостей дешевле и детерминированнее, чем RAG на эмбеддингах: подход не требует GPU, embedding-моделей или векторных баз данных, работает офлайн без внешних зависимостей и в отличие от RAG-систем, разбивающих код на изолированные фрагменты, сохраняет архитектурный контекст через явные рёбра зависимостей.

📝 Для кого это полезно
Инструмент особенно ценен при работе с монорепозиториями, многофайловыми изменениями и крупными проектами (1 000+ файлов). Для небольших изолированных правок прирост минимален или отсутствует.

Исходный код доступен на GitHub под лицензией MIT.