CodeGraph — техническое описание
Гибридный многоагентный RAG + граф свойств кода (CPG) для интеллектуального анализа кода
1. Аннотация
Проблема: Разработчики тратят 60% рабочего времени на понимание существующего кода. Традиционные инструменты (grep, IDE, ChatGPT) не справляются с контекстным анализом больших кодовых баз.
Решение: CodeGraph объединяет гибридный RAG (векторный + графовый поиск) с графом свойств кода (CPG) для мгновенного ответа на вопросы о коде с полным пониманием контекста.
Результат: 95.6% точность на бенчмарке из 160 вопросов, ускорение анализа кода в 10–600 раз, собственный CPG-генератор GoCPG с 30–60x ускорением.
2. Проблема
Корпоративная разработка сталкивается с критическими проблемами при работе с большими кодовыми базами. Эти проблемы приводят к потере продуктивности, пропущенным уязвимостям и замедлению разработки.
| Проблема | Масштаб | Источник |
|---|---|---|
| Разработчики тратят 60% времени на понимание существующего кода | 90,000 разработчиков | GitHub Survey 2023 |
| Ручной code review пропускает до 80% уязвимостей | 100+ корпоративных проектов | Отчёт NIST |
| Онбординг новых сотрудников занимает 3-6 месяцев | Отраслевой стандарт | Опросы CTO |
| Документация устаревает за 2-4 недели | 500+ команд | Опрос разработчиков |
| Аудит безопасности занимает 2-4 недели вручную | Корпоративные проекты | Отраслевой бенчмарк |
Стоимость проблемы
Для команды из 50 разработчиков со средней зарплатой 200,000 руб./мес потери составляют:
- 60 млн руб./год — время на понимание кода (60% × 50 × 200K × 12)
- Неизмеримые риски — пропущенные уязвимости, утечки данных
- Замедление TTM — отложенные релизы из-за долгой проверки кода
3. Предпосылки: почему традиционные подходы не работают
Существующие инструменты анализа кода имеют фундаментальные ограничения:
Текстовый поиск (grep, IDE search)
- Проблема: Нет понимания семантики — ищет только точные совпадения строк
- Пример: Поиск SQL-инъекций не найдёт уязвимости с параметризованными запросами
- Результат: Низкая полнота, много пропущенных угроз
Статический анализ (SonarQube, CodeQL)
- Проблема: Требует предопределённых правил, не понимает намерение пользователя
- Пример: Нельзя спросить «какие функции обрабатывают пользовательский ввод?»
- Результат: Много ложных срабатываний, нет интерактивности
ChatGPT / Copilot
- Проблема: Ограниченное контекстное окно (128K токенов ≈ 2-3 файла)
- Пример: Не видит граф вызовов на ~87,000 методов
- Результат: Галлюцинации, неполные ответы без учета контекста и зависимостей крупных корпоративных проектов
Вывод: Требуется система, которая сочетает семантическое понимание LLM с полным знанием структуры кодовой базы через граф кода (CPG).
4. Методология: Гибридный многоагентный RAG + кодовый граф
CodeGraph использует научно обоснованный подход, объединяющий три ключевые технологии:
4.1 Граф свойств кода (CPG)
CPG — это унифицированное представление кода, генерируемое собственным инструментом GoCPG (Go + Tree-sitter, 33 аналитических прохода). CPG объединяет:
- AST (абстрактное синтаксическое дерево) — синтаксическая структура
- CFG (граф потока управления) — поток управления
- PDG (граф зависимостей программы) — зависимости данных и управления
- DDG (граф зависимостей данных) — чистые зависимости данных
- Граф вызовов (Call Graph) — связи между функциями
4.2 Гибридный поиск с адаптивным взвешиванием
Комбинация двух методов поиска с RRF-слиянием и адаптивным взвешиванием по типу запроса: семантические (75% вектор / 25% граф), структурные (25% вектор / 75% граф), смешанные (60% / 40%):
| Метод | Что находит | Сильные стороны |
|---|---|---|
| Векторный поиск | Семантически похожие фрагменты кода | Понимание намерения, нечёткий поиск |
| Графовый поиск | Структурные связи (вызовы, зависимости) | Точный граф вызовов, поток данных |
| RRF-слияние | Объединённый ранжированный список | Лучшее из обоих подходов |
4.3 Многоагентная архитектура
Система использует 13 специализированных агентов и 97 обработчиков, организованных в три уровня:
Конвейер обработки запросов
5 RAG-агентов образуют основной последовательный конвейер:
| Агент | Роль | Функции |
|---|---|---|
| Analyzer | Классификатор намерений | Понимание запроса, извлечение ключевых слов, выбор сценария |
| Enrichment | Обогащение контекста | Маппинг на CPG-теги, добавление доменного контекста |
| Retriever | Гибридный поиск | Векторный + графовый поиск, RRF-слияние с адаптивными весами |
| Generator | Синтез запросов | Генерация SQL/PGQ запросов, варианты запросов, построение промптов |
| Interpreter | Интерпретатор | Синтез ответа на естественном языке, группировка, рекомендации |
Вспомогательные обработчики: CallChainAnalyzer, ControlFlowGenerator, LogicSynthesizer, AdaptiveQueryRefiner, FallbackStrategySelector, TagEffectivenessTracker и другие. Ранжирование результатов встроено в Retriever (RRF-слияние с адаптивным скорингом).
Доменные модули
8 аналитических агентов координируют 9 специализированных модулей с 97 обработчиками:
| Модуль | Обработчики | Назначение |
|---|---|---|
| Безопасность | SecurityScanner, DataFlowAnalyzer, VulnerabilityReporter, RemediationAdvisor | Сканирование уязвимостей, анализ потоков данных, отчёты и рекомендации |
| Архитектура | DependencyAnalyzer, LayerValidator, ArchitectureReporter | Анализ зависимостей модулей, валидация архитектурных слоёв |
| Производительность | PerformanceProfiler, ResourceAnalyzer, OptimizationAdvisor | Узкие места, потребление ресурсов, рекомендации по оптимизации |
| Рефакторинг | DeadCodeDetector, TechnicalDebtDetector, ImpactAnalyzer, RefactoringPlanner | Мёртвый код, признаки плохого кода, анализ влияния изменений |
| Code Review | PRAnalyzer, ContextAggregator, ReviewReporter | Анализ pull request, сбор контекста из CPG, замечания |
| Инциденты ИБ | CVESearcher, BlastRadiusAnalyzer, RemediationPlanner | Поиск CVE, оценка радиуса поражения, планирование устранения |
| Соответствие | LicenseDetector, ComplianceValidator, StandardsChecker | Проверка лицензий, соответствие 152-ФЗ, ГОСТ Р 56939, стандарты |
| Технический долг | DebtCalculator, PrioritizationEngine, RepaymentPlanner | Измерение долга, ранжирование по ROI, планирование погашения |
| Кросс-репозиторный | RepositoryIndexer, CrossRepoAnalyzer, DependencyMapper | Индексация репозиториев, дублирование, межпроектные зависимости |
4.4 Покрытие уязвимостей CWE/CAPEC
Модуль безопасности обнаруживает 58 типов уязвимостей CWE и связывает их с 27 паттернами атак CAPEC:
| Категория | CWE | Примеры |
|---|---|---|
| Инъекции | 11 | SQL (CWE-89), Command (CWE-78), LDAP (CWE-90), Code (CWE-94/95), Format String (CWE-134), SpEL (CWE-917), Template (CWE-1336), NoSQL (CWE-943), File Include (CWE-98) |
| Память | 9 | Buffer Overflow (CWE-120/119/787/125), Use-After-Free (CWE-416), Double Free (CWE-415), Null Deref (CWE-476), String Termination (CWE-170), Stack Return (CWE-562) |
| Валидация ввода | 6 | Path Traversal (CWE-22), Deserialization (CWE-502), SSRF (CWE-918), Open Redirect (CWE-601), Info Exposure (CWE-200/209) |
| Криптография | 8 | Weak Crypto (CWE-327/328), Weak PRNG (CWE-330/338), Bad Certificate (CWE-295), Cleartext (CWE-319), Weak PBE (CWE-916), Predictable IV (CWE-329) |
| Доступ и авторизация | 6 | Hardcoded Credentials (CWE-798), Missing Auth (CWE-862), Broken Access Control (CWE-284), Privilege Escalation (CWE-250), IDOR (CWE-639), Exposed API (CWE-749) |
| Веб-приложения | 4 | XSS (CWE-79), CSRF (CWE-352), Prototype Pollution (CWE-1321), XXE (CWE-611) |
| Многопоточность | 2 | Race Condition (CWE-362), TOCTOU (CWE-367) |
| Управление ресурсами | 8 | Dangerous Function (CWE-242), Unchecked Return (CWE-252), Temp File (CWE-377), DoS (CWE-400), Resource Leak (CWE-404), ReDoS (CWE-1333), Input Diff (CWE-183/1025) |
| Целочисленные ошибки | 3 | Integer Overflow (CWE-190), Integer Underflow (CWE-191), Truncation (CWE-197) |
| Журналирование | 2 | Log Injection (CWE-117), Insufficient Logging (CWE-778) |
| Итого | 58 | + языковые правила: Python/Django, JavaScript, TypeScript, Java, Go, C#, Kotlin, PHP, 1С:Предприятие (190 YAML-правил) |
Паттерны атак CAPEC
Система связывает уязвимости CWE с реальными паттернами атак CAPEC для приоритизации:
| CAPEC ID | Атака | Связанные CWE |
|---|---|---|
| CAPEC-66 | SQL Injection | CWE-89 |
| CAPEC-88 | OS Command Injection | CWE-78 |
| CAPEC-86 | XSS через HTTP Headers | CWE-79 |
| CAPEC-100 | Buffer Overflow | CWE-120 |
| CAPEC-126 | Path Traversal | CWE-22 |
| CAPEC-586 | Object Injection (Deserialization) | CWE-502 |
| CAPEC-664 | Server-Side Request Forgery | CWE-918 |
| CAPEC-201 | XML External Entity (XXE) | CWE-611 |
| CAPEC-136 | LDAP Injection | CWE-90 |
| CAPEC-97 | Cryptanalysis | CWE-327, CWE-328 |
| CAPEC-112 | Brute Force (Weak PRNG) | CWE-330, CWE-338 |
| CAPEC-94 | Man-in-the-Middle | CWE-295, CWE-319 |
| CAPEC-268 | Audit Log Manipulation | CWE-117 |
| CAPEC-492 | Regular Expression DoS (ReDoS) | CWE-1333 |
И ещё 13 паттернов CAPEC для race conditions, криптографических атак, форматных строк, privilege escalation и др.
5. Техническая архитектура
5.1 Конвейер обработки запроса
5.2 Поддерживаемые LLM-провайдеры
CodeGraph поддерживает 4 LLM-провайдера с единым интерфейсом:
| Провайдер | Модели | Контекст | Особенности |
|---|---|---|---|
| GigaChat (Сбер) | GigaChat-2, -Pro, -Max | 32K | Российский провайдер, соответствие требованиям |
| Yandex AI Studio | Qwen3-235B, gpt-oss-120b, YandexGPT | до 262K | Большой контекст, совместимый с OpenAI API |
| OpenAI | GPT-5.2 | 128K | Международный стандарт |
| Локальный | Qwen3-Coder | 32K | Автономная работа, изолированная среда |
5.3 Поддерживаемые языки программирования
GoCPG анализирует код на 11 языках через Tree-sitter парсеры:
| Категория | Языки | Расширения |
|---|---|---|
| Системные | C, C++ | .c, .h, .cpp, .hpp, .cc, .cxx |
| Корпоративные | Java, C#, Kotlin | .java, .cs, .kt, .kts |
| Веб | JavaScript, TypeScript, PHP | .js, .ts, .jsx, .tsx, .php |
| Скриптовые | Python, Go | .py, .go |
| Отечественные | 1С:Предприятие | .bsl, .os |
5.4 Технологический стек
| Компонент | Технология | Описание |
|---|---|---|
| Backend | Python 3.11+ / FastAPI | Async REST API + WebSocket |
| Frontend | TUI (Rich) + CLI | Терминальный интерфейс, билингвальный EN/RU |
| Vector DB | ChromaDB | 250K+ документов, embeddings (all-MiniLM-L6-v2) |
| Graph DB | DuckDB | CPG: 87K+ методов, 2.8M+ узлов, 48M+ рёбер |
| CPG Parser | GoCPG (Go + Tree-sitter) | 11 языков, 33 аналитических прохода, 30–60x ускорение vs Joern |
| Workflow | LangGraph | Оркестрация 13 агентов (5 RAG + 8 аналитических), 21 сценарий |
| IDE Integration | ACP (Agent Client Protocol) | VS Code, JetBrains — stdio/HTTP/WebSocket |
6. Сценарии использования
CodeGraph предоставляет 21 готовый сценарий для типичных задач разработки:
Полный список сценариев
| # | Сценарий | Описание | Пример запроса |
|---|---|---|---|
| 1 | Онбординг в кодовую базу | Навигация по кодовой базе для новых разработчиков | "Объясни архитектуру проекта" |
| 2 | Аудит безопасности | Комплексный аудит безопасности с анализом потоков данных | "Найди все SQL инъекции" |
| 3 | Генерация документации | Автоматическая генерация технической документации | "Сгенерируй API документацию" |
| 4 | Разработка функционала | Поддержка разработки новых функций (навигация по зависимостям) | "Где добавить новый endpoint?" |
| 5 | Рефакторинг | Рекомендации по рефакторингу с анализом влияния изменений | "Найди неиспользуемые функции" |
| 6 | Анализ производительности | Выявление узких мест производительности | "Найди N+1 запросы к БД" |
| 7 | Покрытие тестами | Анализ тестового покрытия и рекомендации по тестам | "Какие функции не покрыты тестами?" |
| 8 | Проверка соответствия | Проверка соответствия 152-ФЗ, ГОСТ Р 56939, OWASP | "Проверь на соответствие OWASP Top 10" |
| 9 | Обзор кода | Автоматизированное рецензирование кода (PR/MR) | "Проверь этот PR на проблемы" |
| 10 | Кросс-репозиторный анализ | Анализ межмодульных зависимостей | "Найди дублирующийся код между репо A и B" |
| 11 | Анализ архитектуры | Выявление нарушений архитектурных ограничений | "Найди циклические зависимости" |
| 12 | Оценка технического долга | Количественная оценка технического долга | "Оцени технический долг модуля" |
| 13 | Массовый рефакторинг | Автоматизация массового рефакторинга (миграции API) | "План миграции с v1 на v2 API" |
| 14 | Реагирование на инциденты ИБ | Реагирование на инциденты ИБ с рекомендациями | "Проанализируй CVE-2024-XXXX" |
| 15 | Поддержка отладки | Помощь в отладке на основе потоков данных | "Найди все места с elog(ERROR)" |
| 16 | Точки входа и поверхность атаки | Анализ поверхности атак и точек входа | "Какие функции принимают пользовательский ввод?" |
| 17 | Редактирование файлов | Точечное редактирование кода на основе AST | "Переименуй функцию X в Y во всех файлах" |
| 18 | Оптимизация кода | Комплексная оптимизация: безопасность, рефакторинг, архитектура | "Оптимизируй модуль авторизации" |
| 19 | Проверка по стандартам | Проверка кода по эталонным стандартам и руководствам | "Проверь код на соответствие стандартам проекта" |
| 20 | Анализ зависимостей | Анализ зависимостей и импортов | "Покажи дерево зависимостей модуля" |
| 21 | Структурный поиск паттернов | Поиск по структурным шаблонам с CPG-ограничениями | "Найди все функции с цикломатической сложностью >20" |
7. Результаты и бенчмарки
7.1 Производительность системы
| Метрика | Значение | Комментарий |
|---|---|---|
| Сквозное время ответа | от 30 мс до 71 с | 30 мс (compliance) — 71 с (incident response), в зависимости от сценария |
| GoCPG парсинг | 30–60x ускорение | По сравнению с Joern через Appender API |
| Пропускная способность | 50+ QPS | 100+ параллельных пользователей |
| Память на экземпляр | < 4 GB | Нативный бинарник GoCPG без JVM |
7.2 Качество анализа
Комплексный бенчмарк на 160 вопросах по 21 сценарию, двуязычный ground truth (EN/RU), кодовая база PostgreSQL 17 (~1M строк C):
| Метрика | Значение | Комментарий |
|---|---|---|
| Общая точность | 95.6% | 153 из 160 вопросов |
| Сценарии с точностью ≥80% | 16 из 16 | Все протестированные сценарии |
| MRR (Mean Reciprocal Rank) | 0.83 | Диапазон 0.58–0.95 |
| Recall@10 | 0.78 | Диапазон 0.44–0.97 |
CPG-метрики (GoCPG vs Joern)
| Метрика | GoCPG | Joern | Коэффициент |
|---|---|---|---|
| Узлы CPG | 1 419 954 | 1 804 013 | 0.79x (компактнее) |
| Рёбра CPG | 15 598 692 | 18 340 154 | 0.85x (компактнее) |
| Методы | 47 335 | 27 825 | 1.70x (больше) |
7.3 Бизнес-эффект
Измеримые результаты внедрения CodeGraph:
| Сценарий | Без CodeGraph | С CodeGraph | Ускорение |
|---|---|---|---|
| Онбординг разработчика | 3-6 месяцев | 2-4 недели | 6x |
| Аудит безопасности | 2-4 недели | 2-4 часа | 40x |
| Код ревью (PR) | 2-4 часа | 10-15 минут | 15x |
| Поиск функции в коде | 5-30 минут | 2-3 секунды | 600x |
| Генерация документации | 1-2 дня | 5 минут | 200x |
ROI для команды из 50 разработчиков: Экономия ~60 млн руб./год на понимании кода (60% → 10% времени) + снижение рисков безопасности через автоматический аудит.
8. Команда
CodeGraph разрабатывается командой с опытом в области:
- Статический анализ кода — собственный CPG-генератор GoCPG, опыт работы с CodeQL, Semgrep
- Машинное обучение — NLP, embeddings, LLM fine-tuning
- Корпоративная разработка — масштабируемые системы, высокие нагрузки
- Информационная безопасность — SAST/DAST/fuzzing, нормативные требования и стандарты
Контакт: Для обсуждения технических деталей или партнёрства свяжитесь с нами через форму на главной странице или напишите на hello@codegraph.ru
9. Заключение
CodeGraph решает фундаментальную проблему корпоративной разработки — понимание больших кодовых баз — через инновационное сочетание:
- GoCPG — собственный CPG-генератор на Go (33 аналитических прохода, 30–60x ускорение vs Joern)
- Гибридный RAG — комбинация векторного и графового поиска с адаптивным RRF-слиянием
- 13 агентов — 5 RAG + 8 аналитических + 97 обработчиков в 21 сценарии
- Мульти-провайдерность — GigaChat, Yandex AI Studio, OpenAI, локальные модели
Результаты:
- 95.6% точность на бенчмарке из 160 вопросов (153/160)
- 21 готовый сценарий для типичных задач
- 11 поддерживаемых языков программирования
- 1.4M+ узлов и 15.6M+ рёбер в CPG на кодовой базе PostgreSQL 17
Подробнее по направлениям
Безопасность
Межпроцедурный анализ потоков данных, FP rate 12%, SIEM интеграция, SARIF 2.1.0 экспорт.
Продуктивность
Онбординг 6x быстрее, поиск 600x быстрее, ROI 60M+ руб/год для команды из 50 человек.
Соответствие
152-ФЗ, ГОСТ Р 56939, DLP-защита исходного кода, RBAC с интеграцией LDAP/AD.
Граф свойств кода (CPG)
GoCPG: нативный Go-бинарник, 33 аналитических прохода, 11 языков, 30-60x быстрее Joern.
Готовы увидеть CodeGraph в действии?
Запросите персональную демонстрацию для вашей команды и кодовой базы
Запросить демо