Документация

Унифицированный граф контекста

Унифицированный граф контекста

lean-ctx строит унифицированный граф, связывающий код, коммиты, тесты, знания и задачи - обеспечивая контекстное снабжение с учётом задач и глубокий анализ влияния.

Типы узлов

Граф содержит 8 типов узлов, представляющих различные аспекты проекта:

📄 File

Исходные файлы, отслеживаемые индексатором

🔣 Symbol

Функции, классы, типы и переменные

📦 Module

Логические группировки (пакеты, крейты, модули)

📝 Commit

Git-коммиты с сообщением и метаданными

🧪 Test

Тестовые функции и файлы тестов

🏗️ CIRun

Запуски CI/CD пайплайна и результаты

🧠 Knowledge

Знания проекта из ctx_session

🎫 Issue

Задачи и тикеты, связанные с кодом

Типы рёбер

Рёбра представляют связи между узлами. lean-ctx отслеживает 11 типов рёбер:

Тип ребраЗначениеПример
ImportsФайл импортирует другой файлA.ts → B.ts
CallsФункция вызывает другую функциюfn_a → fn_b
DefinesМодуль определяет символmod → fn
TestedByФайл тестируется тестовым файломutils.rs → test_utils.rs
ChangedInФайл изменён в коммитеfile → commit
MentionedInФайл упомянут в факте знанийfile → knowledge
AffectsЗадача затрагивает файлissue → file
BreaksКоммит ломает тестcommit → test

Обогащение графа

Обогащение расширяет граф кода данными из Git, тестов и знаний - создавая единое представление проекта.

Индексатор истории Git

Анализирует последние коммиты Git (по умолчанию: 500) и создаёт узлы Commit с рёбрами ChangedIn к затронутым файлам.

Индексатор тестов

Определяет тестовые файлы по соглашению об именах (test_, _test, _spec) и связывает их с исходными файлами рёбрами TestedBy.

Мост знаний

Связывает факты знаний проекта, записанные через ctx_session, с файлами рёбрами MentionedIn.

Команды MCP

ctx_graph enrich              # Enrich graph with git, tests, knowledge
ctx_graph build               # Index code structure
ctx_graph status              # Show node/edge counts

Community Detection (Louvain)

The Louvain algorithm clusters files into communities based on their dependency relationships. Files that frequently import each other or share transitive dependencies are grouped together, enabling smarter context preloading and relevance scoring for task-driven queries.

PageRank

Computes file importance scores based on the dependency graph structure. Files imported by many others (structural hubs) receive higher PageRank, which is used by Spectral Relevance and Boltzmann Allocation to prioritize high-impact files during context assembly.

Запросы контекста

Используйте запросы контекста на основе графа для поиска наиболее релевантных файлов для любой задачи.

Использование

ctx_graph context "fix auth bug"       # Find relevant files for task
ctx_graph related src/auth.rs          # Connected files
ctx_graph impact src/auth.rs           # Blast radius analysis
ctx_graph symbol src/auth.rs::verify   # Symbol definition/usages

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

  • Извлекает ключевые слова из описания задачи
  • Сопоставляет ключевые слова с именами файлов и сообщениями коммитов
  • Расширяет результаты через рёбра графа (импорты, тесты, знания)
  • Возвращает ранжированный список релевантных файлов с контекстом связей

Интерактивный HTML-экспорт

Экспортируйте граф зависимостей в виде одного автономного HTML-файла. Сгенерированный файл работает полностью офлайн - откройте его в любом браузере для визуального исследования кодовой базы. Без сервера, без зависимостей, всего один HTML-файл.

Использование

# Export full graph (all nodes)
lean-ctx graph export-html --out graph.html

# Limit to 100 most-connected nodes
lean-ctx graph export-html --out graph.html --max-nodes 100

# Custom project root
lean-ctx graph export-html --out graph.html --root /path/to/project

Интерактивные функции

🔍 Search

Введите подстроку пути к файлу, чтобы мгновенно выделить совпадающие узлы

🖱️ Pan & Zoom

Нажмите и перетащите для перемещения, прокрутите для масштабирования. Работает как карта.

📋 Node Details

Нажмите на любой узел, чтобы увидеть его импорты и зависимые файлы в боковой панели

🔗 Reverse Deps

Нажмите правой кнопкой мыши на узел, чтобы выделить все файлы, которые от него зависят (обход BFS)

🖼️ PNG Export

Скачайте текущий вид холста как PNG-изображение одним нажатием

📡 Offline

Без внешних зависимостей. Всё приложение встроено в один HTML-файл.

Советы

  • Используйте --max-nodes, чтобы визуализация оставалась читаемой для больших проектов (50–200 - хороший диапазон)
  • Сначала выполните graph build, чтобы убедиться, что индекс актуален перед экспортом
  • HTML-файл безопасно делиться с коллегами - он не содержит исходного кода, только пути к файлам и связи
  • Выделение правой кнопкой мыши показывает полную цепочку обратных зависимостей, что позволяет легко оценить радиус влияния изменений

API дашборда

ЭндпоинтОписание
/api/graph/statsКоличество узлов и рёбер, путь к базе данных
/api/graph/enrichЗапустить полное обогащение графа и вернуть статистику