Последние полгода в AI coding тренд очевиден: все хотят засунуть код в RAG pipeline, но векторные базы часто дают хрупкие и непрозрачные результаты. Graphify предлагает альтернативу — deterministic AST parsing с явными связями между сущностями. Я потестил его на mid-size TypeScript codebase и вот что выяснил.
Как это работает (без магии)
Graphify — это не очередной wrapper над OpenAI API. Под капотом:
- AST-first подход: парсит код в синтаксические деревья через tree-sitter (поддерживает 40+ языков)
- Извлечение отношений: находит imports, function calls, type references без эвристик
- Объединение контекста: связывает код с документацией через точные анкоры, а не эмбеддинги
Пример вывода для запроса “show me all components using AuthService”:
{
"edges": [
{
"source": "components/UserProfile.tsx",
"target": "services/AuthService.ts",
"relation": "imports",
"evidence": "Line 12: import { AuthService } from '../../services'"
}
]
}
Главное отличие от vector-based подходов — здесь каждое соединение между нодами можно проверить в исходниках. В работе это напоминает гибрид ESLint и GraphQL.
Сценарии, где это реально полезно
1. Onboarding в legacy проект
Вместо “поищи в коде X” получаешь интерактивную карту зависимостей. Для TypeScript с barrel-imports это спасение — Graphify видит сквозные связи даже через 5 уровней реэкспортов.
2. Refactoring с гарантиями
Перед тем как выносить хелпер в отдельный пакет, можно одним запросом проверить:
/graphify impact --target=src/utils/helpers.ts --depth=3
Инструмент покажет все callers и зависимости, включая тесты и docs.
3. Документирование “на лету”
Интеграция с Claude Code позволяет генерировать архитектурные диаграммы, где стрелки соответствуют реальным импортам, а не предположениям LLM.
Ограничения, которые стоит учесть
-
Не заменяет semantic search
Если ищешь “как у нас работает OAuth”, вектора всё ещё лучше справляются с fuzzy matching. Graphify — про структуру, а не про смысл. -
Требует точных запросов
Запросы вида “где тут баг” не сработают — нужны конкретные entity names или relation types. -
Нагрузка на CPU
Первичный парсинг 100к LOC проекта занимает 3-5 минут (но потом работает с snapshot).
Интеграция в agentic workflow
Интереснее всего Graphify выглядит в связке с AI-агентами. Пример пайплайна:
-
Agent 1 (анализирует ошибку в логах):
“В стектрейсе упоминается AuthMiddleware, но нет контекста” -
Agent 2 (через Graphify):
“AuthMiddleware используется в routes/api.ts, зависит от AuthService, который…” -
Agent 3 (генерирует fix):
Учитывает граф зависимостей при предложении изменений
Такая связка даёт меньше hallucination, чем чистый RAG, но требует тонкой настройки.
Что попробовать на этой неделе
- Поставить локально через
npm install -g @graphify/cliи прогнать на своём монорепо - Сравнить вывод
/graphify relations --entity=UserModelс тем, что даётgrep -r "UserModel" - Запустить в Cursor с плагином — там есть визуализация графа через D3
Лично мне подход кажется перспективным, особенно для кодовых баз с высокой связностью. Но это не silver bullet — скорее, ещё один инструмент в pipeline, который снижает когнитивную нагрузку при работе с чужим кодом.
Попробуй сам: Cursor — AI-редактор для разработчиков.