AIKraft Agents

vitali87/code-graph-rag

Идеальный RAG для вашего монолита. Запрашивайте, понимайте и редактируйте многоязычные кодовые базы с помощью ИИ и графов знаний

RAG⭐ 5 314Pythonпоследний релиз: v0.5.0
Открыть на GitHub ↗Сайт проекта ↗

Что это за инструмент

Code-Graph-RAG — это инструмент для индексации и анализа мультиязычных монолитных репозиториев, который преобразует код в граф знаний с помощью Tree-sitter и Memgraph, позволяя взаимодействовать с кодовой базой через естественный язык.

Зачем нужен

Инструмент решает проблему навигации в сложных, разнородных кодовых базах, обеспечивая контекстно-зависимые ответы на вопросы о структуре и логике кода. Он полезен для автоматизации рефакторинга, поиска устаревшего кода и безопасного редактирования файлов через агентов, опирающихся на AST, а не просто на текстовый поиск.

Что можно реализовать

  • Поиск и исправление устаревшего (dead code) путем обхода графа вызовов от точек входа.
  • Структурный поиск и замена кода по AST-паттернам с использованием ast-grep для безопасного рефакторинга.
  • Анализ потока данных (data-flow tracing) для отслеживания значений через присваивания и вызовы функций в 10 поддерживаемых языках.
  • Генерация Cypher-запросов к графу знаний на основе естественных запросов пользователя для быстрого понимания архитектуры.
  • Оптимизация кода в соответствии с лучшими практиками или внутренними стандартами через AI-агентов.

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

  • Поддержка мультиязычных монорепозиториев (Python, JS/TS, Go, Java, Rust, C++, C, C#, Ruby) через единую схему графа.
  • Использование Tree-sitter для точного парсинга AST и Memgraph для хранения графа знаний.
  • Возможность редактирования кода через агентов с предварительным просмотром diff и применением патчей на уровне AST.
  • Плагинная архитектура для добавления новых языков (например, Ruby) через YAML-файлы с паттернами ast-grep.
  • Интеграция с CI/CD и наличие метрик качества кода (Sonar, Codecov, OpenSSF).

👤 Кому подойдёт: Разработчики и технические лидеры, работающие с крупными мультиязычными монолитами, а также команды, стремящиеся автоматизировать поддержку и рефакторинг кодовой базы с помощью AI.

Релизы

v0.5.0majorbreaking
🕐 3 дн назад · релиз на GitHub ↗

Релиз v0.5.0: усиление безопасности MCP-сервера, поддержка изменения сигнатур JS и обновление Rust.

  • Breaking: MCP-сервер больше не пишет в директории .git и чувствительные файлы (например, .env), если не установлен флаг CGR_ALLOW_SENSITIVE_WRITES=true.
  • Breaking: Запуск MCP-сервера из корня диска или домашней директории теперь запрещён без явного указания TARGET_REPO_PATH.
  • Added: Добавлена поддержка чтения и записи заголовков JavaScript для изменения сигнатур функций и методов.
  • Added: Улучшена безопасность HTTP-транспорта: блокируются запросы с некорректными заголовками Host или Origin.
  • Added: В бенчмарк извлечения добавлен ColGrep, а CI-процесс теперь блокирует слияние при низкой оценке Greptile.
v0.4.19minor
🕐 4 дн назад · релиз на GitHub ↗

Релиз v0.4.19: исправление безопасности, оптимизация производительности, новые тесты для change_signature и улучшение CLI.

  • Fixed: Исправлена уязвимость безопасности; обновление настоятельно рекомендуется.
  • Added: Добавлена команда cgr prune для удаления проектов с отсутствующим корнем.
  • Fixed: Флаг --quiet теперь корректно скрывает строки сканирования мёртвого кода и дубликатов.
  • Added: Добавлены комплексные тесты для функции change_signature (принятие, транзакции, маппинг).
  • Fixed: Исправлена логика контекстного бюджета: теперь корректно обрабатываются случаи, когда цель не помещается в лимит.
  • Added: Обновлены зависимости, включая protobuf до 7.36.2, transformers до 5.21.0 и Python до 3.15-slim.
v0.4.5majorbreaking
🕐 6 дн назад · релиз на GitHub ↗

Введена защита .cgr.md, добавлены модели MiniMax, обновлены Neo4j и Qdrant, улучшена производительность Rust-индексатора.

  • Breaking: Файл .cgr.md больше не попадает в системный промпт без явного одобрения пользователя через cgr start.
  • Added: Добавлена поддержка текстовых моделей MiniMax.
  • Added: CLI и MCP теперь поддерживают операцию change_signature с улучшенной обработкой частичных графов.
  • Added: Обновлены зависимости: Neo4j, qdrant-client, memgraph/lab, а также усилены меры безопасности и тестирования.
  • Fixed: Оптимизирован Rust-индексатор: улучшено хеширование определений и вычисление отпечатков интерфейсов.
v0.3.13majorbreaking
🕐 11 дн назад · релиз на GitHub ↗

Релиз v0.3.13: критическое обновление безопасности, исправления SQL, Rust и улучшенная экспортация данных графа.

  • Breaking: Критическое обновление безопасности: настоятельно рекомендуется обновиться, см. Security Advisories.
  • Fixed: Исправлены ошибки грамматики SQL, проблемы с мертвым кодом и индексация методов в Rust.
  • Added: Теперь экспортируются все свойства узлов внутри графа.
  • Fixed: Обновлены зависимости uv, certifi и grpcio, а также устранены проблемы с сертификатами eMudhra.
  • Added: В CI добавлена проверка наличия заметок о ломающих изменениях в релизах.
v0.3.2majorbreaking
🕐 13 дн назад · релиз на GitHub ↗

Исправлена критическая уязвимость в virtualenv, по умолчанию включён SQLite для векторов и добавлена публикация SBOM.

  • Fixed: Заблокирована уязвимость в virtualenv (CVE-2026-115586), требующая обновления.
  • Breaking: Векторное хранилище теперь по умолчанию использует SQLite, запуск без эмбеддингов отключён.
  • Added: Добавлена автоматическая публикация CycloneDX SBOM и аттестации Docker-образа.
v0.2.24patch
🕐 13 дн назад · релиз на GitHub ↗

Обновление зависимостей (torch, python-dotenv), исправление сборки gotypes для Go 1.27.2 и улучшение тестов.

  • Fixed: Исправлена сборка помощника gotypes на Go 1.27.2 с x/mod v0.42.0.
  • Added: Обновлена библиотека python-dotenv до версии 1.2.4.
  • Added: Обновлен PyTorch до версии 2.14.1.
  • Fixed: Улучшена точность замеров времени обхода интерфейсов за счёт использования CPU-времени.
  • Added: В уведомлении о безопасности добавлены ссылки на глобальную базу уязвимостей зависимостей.
v0.2.19patch
🕐 14 дн назад · релиз на GitHub ↗

Релиз v0.2.19: критическое обновление безопасности opentelemetry-api и обновление ast-grep-py.

  • Fixed: Исправлена уязвимость: opentelemetry-api заблокирован на версии 1.45.1.
  • Added: Обновлена зависимость ast-grep-py до версии 0.51.0.
  • Added: Внедрен ручной процесс тегирования и выпуска релизов в CI.
v0.2.16patch
🕐 14 дн назад · релиз на GitHub ↗

Релиз v0.2.16: исправление безопасности, улучшенный анализ кода на Python/Rust/JS и поддержка сжатых Xdebug-трейсов.

  • Fixed: Исправлена уязвимость безопасности (GHSA-6q48-6c7w-9gw2), обновление настоятельно рекомендуется.
  • Added: Улучшен анализ интерфейсов и вызовов Python в CodeQL, добавлена поддержка сжатых gzip Xdebug-трейсов.
  • Fixed: Исправлено определение атрибутов экземпляров Python по аннотациям и корректная обработка макросов в Rust.
  • Fixed: Улучшена проверка вызовов функций, исправлены ошибки импорта, парсинга UTF-16/32 и синхронизации проектов.
v0.2.10patch
🕐 18 дн назад · релиз на GitHub ↗

Выпуск v0.2.10: критическое обновление безопасности MCP, исправления графа и поддержка GitHub Sponsors.

  • Fixed: Критическое обновление безопасности: исправлена уязвимость в зависимости MCP (GHSA-84m7-p3x7-pcfv).
  • Fixed: Исправлена логика индексации: теперь корректно обрабатываются дубликаты директорий и сохраняются общие узлы папок/файлов.
  • Added: Добавлена поддержка GitHub Sponsors через командную строку.
  • Fixed: Операции delete-project и сбор статистики теперь корректно работают на встроенном движке.
  • Added: Улучшена документация: в README уточнено, что в качестве бэкенда используется встроенный граф.
v0.2.0majorbreaking
🕐 21 дн назад · релиз на GitHub ↗

SQLite стал бэкендом по умолчанию, добавлен Rust-расширение для ускорения и поддержка Neo4j 5.

  • Breaking: По умолчанию теперь используется встроенный граф SQLite, а не Memgraph; для возврата к Memgraph требуется явное указание бэкенда.
  • Added: Добавлено Rust-расширение cgr-graph-rs, обеспечивающее парсинг Cypher и обработку графов, что значительно ускоряет запросы.
  • Added: Появилась опциональная серверная векторная база данных SQLite через пакет code-graph-rag[sqlite-vec].
  • Fixed: Исправлены два запроса, которые Neo4j 5 отклонял как неоднозначные агрегации.
v0.1.90minor
🕐 22 дн назад · релиз на GitHub ↗

Обновление зависимостей, улучшение CLI для статистики и экспорта, поддержка детальных контекстных запросов и анализ кросс-сервисных связей.

  • Added: Добавлена поддержка детальных контекстных запросов, включая причины и чтение из ingestor оценки.
  • Added: CLI расширен: команды stats и export теперь поддерживают фильтрацию по проекту.
  • Added: Улучшен анализ графа: теперь отслеживаются кросс-сервисные ссылки и реализации.
  • Fixed: Исправлено хранение эмбеддингов в Qdrant при отсутствии переменной окружения QDRANT_URL.
  • Fixed: Обновлены зависимости, включая pydantic-ai-slim, transformers и GitHub Actions.
v0.1.38patch
🕐 1 мес назад · релиз на GitHub ↗

Исправления в Milvus, LiteLLM, CLI и парсерах языков; оптимизация производительности и scope.

  • Fixed: Улучшена работа с Milvus: исправлен пересбор коллекций с неверным размером вектора и добавлена валидация размеров эмбеддингов.
  • Fixed: По умолчанию используются эндпоинты LiteLLM, если конфигурация явно не задана.
  • Fixed: Улучшена работа CLI: статус синхронизации теперь корректно отображается, даже если репозиторий отсутствует.
  • Fixed: Исправлены ошибки в парсерах Java, Dart и C# (глубина вывода типов, префиксы импортов, разрешение вызовов).
  • Added: Оптимизировано время запуска ключевых компонентов (LLM, vector-store, parser) и ограничена область некоторых операций.
v0.0.996patch
🕐 1 мес назад · релиз на GitHub ↗

Исправления безопасности, поддержка Dart/C#/Java, рефакторинг генерации кода и улучшение скриптов.

  • Fixed: Обновлен anyio для устранения уязвимости TLS IDNA spoofing (CVE-2026-63374).
  • Fixed: Улучшена поддержка Dart, C# и Java, включая обработку конструкторов и переменных.
  • Added: Рефакторинг очистки ответов Cypher и валидации AST-grep для повышения читаемости.
  • Fixed: Исправлена логика скриптов: корректная обработка закрытых PR и улучшена отчетность об ошибках.
  • Added: Добавлены объявленные параметры для одиннадцати языков, кроме Python.
v0.0.945minor
🕐 1 мес назад · релиз на GitHub ↗

Добавлена поддержка Neo4j, узел Gloss для заметок агентов и улучшена обработка UTF-8 и CI.

  • Added: Добавлена поддержка Neo4j в качестве графового бэкенда через плагинный интерфейс.
  • Added: Введен узел Gloss для заметок, авторизованных агентами, с возможностью чтения и записи через MCP.
  • Added: Улучшена документация: теперь захватывается модульная документация и docstrings для всех языков.
  • Fixed: Исправлена потеря определений файлов из-за некорректных байтов UTF-8.
  • Added: Улучшены процессы CI: авто-ревью стека PR, проверка конфигураций и статусов запуска.
v0.0.895minor
🕐 1 мес назад · релиз на GitHub ↗

Релиз v0.0.895: улучшена безопасность (блокировка удаления корня), кэширование, парсинг C++/Go и добавлены детерминированные запросы к графу.

  • Fixed: Исправлена критическая уязвимость: заблокировано удаление корня проекта.
  • Added: Введены детерминированные инструменты запросов к графу для точного анализа связей кода.
  • Added: Улучшено управление кэшем: добавлено атомарное сохранение и обработка сиротских кэшей.
  • Added: Расширена интеграция с C++ и Go: добавлен парсинг модульных интерфейсов и алиасов классов.
  • Added: Улучшен процесс повторного анализа: добавлена поддержка удаления файлов и пересборка структур данных.
v0.0.845major
🕐 2 мес назад · релиз на GitHub ↗

Критическое исправление уязвимости обхода allowlist в EXECUTE_SHELL (GHSA-wvxg-744g-6pcg), улучшена стабильность тестов и индексации.

  • Fixed: Устранена критическая уязвимость обхода allowlist в EXECUTE_SHELL, позволявшая выполнять произвольный код через xargs, sed и git.
  • Added: Улучшена точность проверки наследования TypeScript с использованием tsc oracle.
  • Fixed: MCP-индексация теперь корректно учитывает файлы .cgrignore и .gitignore, как и CLI.
  • Fixed: Исправлена работа с флагом --exclude и устранены ошибки разбора отчетов о патчах.
  • Fixed: Улучшена надежность тестов и корректность удаления временных репозиториев на Windows.
v0.0.820minor
🕐 2 мес назад · релиз на GitHub ↗

Релиз v0.0.820: улучшен парсинг PHP/Scala, добавлен графовый реранкинг и транзакционные правки кода.

  • Added: Парсинг NODE_SCHEMAS переведен в машиночитаемый формат, добавлена поддержка PHP use function через пространства имен.
  • Added: Реализован прототип графового реранкинга по близости и ограничено извлечение графа рамками одного проекта.
  • Added: Добавлены транзакционные правки нескольких файлов с поэтапной проверкой и возможностью отмены.
  • Added: Улучшено понимание кода: добавлены ребра INHERITS для Scala и чтение Markdown front-matter в узлы Module.
  • Fixed: Исправлено нестабильное поведение теста scan-perf в Rust и добавлена ранняя проверка неизвестных ID моделей.
v0.0.770minor
🕐 2 мес назад · релиз на GitHub ↗

Релиз v0.0.770: добавлен AST-анализ дубликатов, улучшен индекс графа и внедрены строгие CI-гейты.

  • Added: Внедрена система обнаружения дубликатов кода на базе AST с поддержкой кросс-репозиторного анализа.
  • Added: Добавлен индекс для свойства name в графе и оптимизирован поиск вызовов SQL-рутин.
  • Added: Появился агентный QA-бенчмарк и инструменты для оценки качества индексации.
  • Added: В CI интегрированы pre-commit.ci для автофиксов и Sonar-гейт для слияния без замечаний.
  • Fixed: Исправлена обработка C# интерфейсов, внутренних пространств имен и парсинг markdown-заголовков.
v0.0.720minor
🕐 2 мес назад · релиз на GitHub ↗

Улучшен тaint-трекинг для Java и C#, добавлен in-process Jedi для Python, канонический индекс Protobuf и поддержка Dart/Scala.

  • Added: Улучшен тaint-трекинг в Java: поддержка JDK shims, цепочечных вызовов и литеральных аргументов.
  • Added: Улучшено распространение тaint в C# с учетом привязки аргументов, кортежей и async-методов.
  • Added: Добавлен in-process Jedi semantic frontend для Python и поддержка Dart (Process.run, Socket.connect).
  • Added: Внедрен канонический индекс Protobuf с манифестом происхождения и командой verify для целостности данных.
  • Added: Расширена поддержка Scala (io_access) и добавлены структурные диффы для индексов Protobuf.
  • Fixed: Исправлены ошибки: детерминированные списки директорий, валидация диапазонов кода и стабильность сборки.
v0.0.670major
🕐 2 мес назад · релиз на GitHub ↗

Исправлены критические уязвимости обхода авторизации команд, добавлено трассирование вызовов для C/C++/Rust и корреляция трассировок через MCP.

  • Fixed: Устранены две связанные уязвимости (GHSA-2rr7-8xrw-gmhr, GHSA-4p93-4vf7-4m8r), позволявшие злоумышленникам выполнять произвольные команды без согласования с пользователем через обход механизма EXECUTE
  • Added: Расширено динамическое трассирование графа вызовов: добавлена поддержка Rust, C и C++ (через shim -finstrument-functions), а также сбор данных eBPF continuous-profiler с разрешением фреймов для Python
  • Added: Введен новый инструмент MCP для корреляции runtime-трассировок (traceback) с графом кода, возвращающий ранжированный список вероятных корневых причин ошибок.
  • Added: Улучшено определение типов: переменные циклов в Python теперь выводятся из generic-аннотаций, а в TS/JS — из аннотаций и типов элементов for-of.
  • Added: Добавлена фиксация конкретных классов-получателей для вызовов в PHP, деконфликтование локальных функций CLR в C# и пометка ребер профилирования как приблизительных.
v0.0.639minor
🕐 2 мес назад · релиз на GitHub ↗

Релиз v0.0.639: добавлен трассинг вызовов для 8 языков, улучшена тейн-аналитика и исправлены баги с символическими ссылками.

  • Added: Добавлен runtime call tracing для Go, JVM, Node.js, .NET, PHP, Lua и Dart.
  • Added: Улучшено распространение тейна аргументов для анализа потока данных.
  • Fixed: Исправлена проблема с путями ссылок при удалении символических линков.
  • Fixed: Восстановлена читаемость логотипа в README для темной темы.
  • Added: Расширено покрытие FLOWS_TO для Lua и реализована обработка записей через дескрипторы.
v0.0.589major
🕐 2 мес назад · релиз на GitHub ↗

Критическое исправление уязвимости чтения файлов через симлинки в инструментах структурного поиска и замены.

  • Fixed: Исправлена уязвимость обхода ограничений пути (CVSS 7.1) в AstGrepService, позволявшая читать и записывать произвольные файлы через симлинки в инструментах structural_search и structural_replace.
  • Added: NEWS.md и раздел «Latest News» в README теперь автоматически обновляются при каждом релизе.
  • Added: Сборка бинарных файлов теперь запускается на pull-реквестах с изменениями и по еженедельному расписанию для предотвращения регрессий.