Граф кодовой базы
Что это такое
understand-anything - плагин для Claude Code, который анализирует кодовую базу и создает интерактивный граф знаний. Каждый файл распределяется по архитектурному слою, извлекаются связи между компонентами, генерируется экскурсия по проекту.
Дашборд: finapp-graph.ilko.me
Команды
| Команда | Описание |
|---|---|
/understand | Запустить анализ - инкрементальный если граф есть, полный если нет |
/understand --full | Принудительная полная пересборка с нуля |
/understand --review | Запустить LLM-ревьювер на существующем графе (без повторного анализа) |
/understand --auto-update | Включить автоматическое обновление графа при каждом коммите |
/understand --no-auto-update | Отключить автоматическое обновление графа |
/understand --language ru | Генерировать весь текст на заданном языке (en, ru, zh, ja, ko и др.) |
/understand /путь/к/проекту | Анализировать другую директорию вместо текущей |
Опции можно комбинировать: /understand --full --language ru
Как это работает
Команда проходит 7 фаз:
| Фаза | Что происходит |
|---|---|
| 0 | Pre-flight - определяет инкрементальную или полную пересборку |
| 0.5 | Читает правила исключений из .understandignore |
| 1 | Сканирует все файлы проекта |
| 1.5 | Группирует файлы в семантические батчи |
| 2 | Анализирует каждый батч через LLM (5 параллельных субагентов) |
| 3-5 | Объединяет батчи, собирает граф, проверяет |
| 6-7 | Строит шаги экскурсии, записывает результат |
Результаты сохраняются в .understand-anything/:
knowledge-graph.json- полный граф (узлы, рёбра, слои, экскурсия)meta.json- хеш коммита и время последнего анализаfingerprints.json- хеши файлов для инкрементальных обновлений
Исключения
.understand-anything/.understandignore управляет тем, что исключается из анализа. Использует синтаксис gitignore. По умолчанию всегда исключаются node_modules/, dist/, *.lock, изображения и т.д.
Текущие активные исключения:
.playwright-mcp # Скриншоты Playwright MCP
docs/ # Сайт документации (отдельный проект)
*.test.* # Тестовые файлы
*.spec.* # Spec файлы
*.snap # Снапшоты
Раскомментируйте или добавьте паттерны для дополнительных исключений, затем снова запустите /understand.
Инкрементальные обновления
Если граф уже существует, /understand сравнивает текущий коммит git с meta.json:
- Тот же коммит - предлагает пересобрать или пропустить
- Изменённые файлы - повторно анализирует только изменённые файлы и вливает в существующий граф
- Флаг
--full- принудительная полная пересборка с нуля
Обновление дашборда
После запуска /understand нужно переразместить дашборд:
# 1. Скопировать обновлённый граф в public директорию дашборда
cp .understand-anything/knowledge-graph.json \
~/.claude/plugins/cache/understand-anything/understand-anything/2.7.5/packages/dashboard/public/
cp .understand-anything/meta.json \
~/.claude/plugins/cache/understand-anything/understand-anything/2.7.5/packages/dashboard/public/
# 2. Сборка (demo режим - граф отдаётся с того же origin)
cd ~/.claude/plugins/cache/understand-anything/understand-anything/2.7.5/packages/dashboard
VITE_DEMO_MODE=true pnpm exec vite build --config vite.config.demo.ts --base /
# 3. Деплой
cd dist && vercel deploy --prod --yes
Возможности дашборда
В дашборде три вида:
- Knowledge Graph - полный граф связей между файлами с раскраской по слоям, фильтрами по слою или типу рёбер
- Domain Graph - бизнес-процессы (если был запущен анализ доменов)
- Architecture Layers - файлы, сгруппированные по слоям с описаниями
Из любого узла можно открыть исходный файл прямо в интерфейсе, посмотреть его импорты и зависимые файлы, пройти экскурсию по проекту.
Архитектурные слои
Каждый файл распределяется в один из 9 слоёв:
| Слой | Описание |
|---|---|
| Entry | Точки входа приложения и Nuxt конфиг |
| Config | Конфиги сборки, ESLint, TypeScript |
| Backend | Схема Supabase Postgres + RLS + правила синхронизации PowerSync (app/supabase/, app/powersync/) |
| Auth | Supabase Auth (email/пароль); двухуровневая защита маршрутов |
| Store | Pinia сторы (categories, wallets, trns, rates, settings) |
| Composables | Vue composables и утилиты |
| Components | Vue компоненты, сгруппированные по фичам |
| Pages | Nuxt страницы и лейауты |
| Types | Общие TypeScript типы и валидаторы |