Graphify — навык, который превращает проект в граф знаний

· 2 мин чтения
knowledge-graph agent-skills claude-code code-analysis local-first
📂 Исходный код на GitHub

Навык /graphify для ИИ-ассистентов: превращает код, документацию, PDF-файлы и изображения в граф знаний, по которому можно ходить запросами. Код парсится детерминированно через tree-sitter, каждое ребро помечено как EXTRACTED или INFERRED, векторное хранилище не используется. Поддерживает 20+ ассистентов, MCP-сервер и экспорт в Neo4j, FalkorDB, SVG, GraphML.

Graphify — навык, который превращает проект в граф знаний

Graphify — навык, который превращает проект в граф знаний

Graphify — это навык для ИИ-ассистентов, который по команде /graphify разбирает ваш проект (код, документацию, PDF, изображения, видео) и складывает всё в один граф знаний. Дальше ассистент отвечает на вопросы о проекте не грепом по файлам, а запросом к графу: можно спросить связь между двумя сущностями, объяснить один концепт или получить подграф по вопросу на естественном языке. Устанавливается он через одну команду и работает в Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot и ещё 20+ ассистентах.

Проект написан на Python, лицензия Apache-2.0, репозиторий публичный.

Что именно делает навык

Главное отличие от привычного семантического поиска — в том, что это не векторный индекс. Эмбеддингов и векторного хранилища нет вообще: строится настоящий граф, который можно обходить. У каждого ребра есть тег уверенности:

  • EXTRACTED — связь явно прослеживается в исходниках;
  • INFERRED — связь восстановлена самим graphify;
  • AMBIGUOUS — гипотеза, которую стоит перепроверить.

Это позволяет ассистенту честно показывать, что он прочитал напрямую, а что додумал. Отдельно извлекаются комментарии # NOTE:, # WHY:, # HACK:, докстринги и ссылки на ADR/RFC — они становятся самостоятельными узлами, связанными с кодом, который объясняют.

Ключевое обещание — локальность. Код разбирается через tree-sitter AST: детерминированно, без вызовов LLM, без единого байта наружу. Только семантический проход по документам, PDF и картинкам обращается к модели вашего ассистента. Корпус из одного лишь кода вообще не требует API-ключа и работает офлайн.

Установка

uv tool install graphifyy      # поставить CLI (или: pipx install graphifyy)
graphify install               # зарегистрировать навык в ассистенте

Дальше в ассистенте:

/graphify .

Обратите внимание на двойную «y» в имени пакета на PyPI: пакет называется graphifyy, а команда — graphify. Нужен Python 3.10+. В Windows PowerShell пишите graphify . без ведущего слэша — там это разделитель пути. На macOS и Windows авторы советуют избегать голого pip install и использовать uv tool install или pipx install, чтобы навык не подхватил чужое окружение.

Что остаётся на диске

graphify-out/
├── graph.html       интерактивный граф в браузере — клики, поиск, фильтр по сообществам
├── GRAPH_REPORT.md  ключевые концепты, неожиданные связи, подсказки вопросов
└── graph.json       полный граф — можно запрашивать спустя недели, не перечитывая файлы

Отчёт содержит узлы-максимумы (самые связанные концепты, через которые проходит всё остальное), неожиданные связи между сущностями из разных файлов и модулей, извлечённые «почему», а также 4–5 вопросов, на которые именно этот граф лучше всего умеет отвечать.

Запросы к графу

Пример реального вывода на кодовой базе FastAPI:

$ graphify explain "APIRouter"
Node: APIRouter
  Source:    routing.py L2210
  Community: 2
  Degree:    47

Connections (47):
  --> RequestValidationError [uses] [INFERRED]
  --> Dependant [uses] [INFERRED]
  --> .get() [method] [EXTRACTED]
  <-- __init__.py [imports] [EXTRACTED]
  ...

$ graphify path "FastAPI" "ModelField"
Shortest path (3 hops):
  FastAPI --uses--> DefaultPlaceholder <--references-- get_request_handler() --references--> ModelField

graphify query отдаёт подграф по вопросу на естественном языке, graphify path строит кратчайший путь между двумя сущностями, graphify explain разбирает один узел со списком связей. Популярные флаги: --mode deep для более агрессивного извлечения, --update для пересборки только изменённых файлов, --cluster-only для повторной кластеризации без повторного извлечения, --no-viz, если HTML слишком большой.

Какие файлы понимает

Тип Расширения Как разбирается
Код около 40 языков: .py .ts .go .rs .java .php .rb .cs .kt .swift .zig и другие AST через tree-sitter, рёбра calls / imports / inherits / mixes_in
Terraform .tf .tfvars .hcl отдельный экстрактор, есть рёбра module_source
Конфиги MCP .mcp.json, claude_desktop_config.json узлы серверов, ссылки на пакеты, нужные переменные
Манифесты пакетов pyproject.toml, go.mod, pom.xml, apm.yml один узел на пакет и рёбра depends_on
Документация .md .mdx .txt .rst .html .yaml семантический проход, ссылки и [[wikilinks]] становятся рёбрами
PDF, изображения .pdf, .png .jpg .webp .gif семантический проход через модель ассистента
Видео и аудио .mp4 .mov .mp3 .wav, URL YouTube локальная транскрипция faster-whisper (экстра video)
Базы данных живая схема PostgreSQL интроспекция через --postgres DSN (экстра postgres)

Исходя из .gitignore поведение тоже продуманное: игнорируются сгенерированное и скомпилированное, а .graphifyignore добавляет свои правила и имеет приоритет.

Бенчмарки

Бенчмарк Метрика graphify У конкурентов
LOCOMO (n=300) recall@10 0.497 mem0 0.048, supermemory 0.149
LOCOMO (n=300) точность QA 45.3% supermemory 49.7%, mem0 27.3%
LongMemEval-S (n=50) точность QA 76% на уровне плотного RAG
Построение графа кредиты LLM 0 у большинства систем — per-token

Все системы гонялись на одном стенде с одной моделью и одинаковыми бюджетами; оценки выставлял судья, проверенный вторым судьёй вслепую (согласие 90.6%, Cohen's kappa 0.81). Подробные таблицы и команды воспроизведения — в файле BENCHMARKS.md.

Как заставить ассистент всегда пользоваться графом

Отдельная команда платформенного уровня записывает инструкции, по которым ассистент сначала спрашивает граф, а не файлы:

graphify claude install    # CLAUDE.md + PreToolUse hook (Claude Code)
graphify codex install     # AGENTS.md + hook-запись в .codex/hooks.json
graphify cursor install    # .cursor/rules/graphify.mdc с alwaysApply: true
graphify opencode install  # AGENTS.md + плагин tool.execute.before

Для платформ с хуками (Claude Code, Gemini CLI) хук срабатывает перед поисковыми вызовами инструментов и мягко подталкивает ассистент к graphify query. Для платформ с файлами инструкций (Codex, OpenCode, Cursor) ту же роль играет постоянный файл с инструкциями. Убирается всё разом через graphify uninstall, а --purge дополнительно удаляет graphify-out/.

Отдельный режим --strict для Claude Code идёт дальше мягкой подсказки: он блокирует первое чтение исходника в сессии и перенаправляет к графу, после чего возвращается к обычному режиму.

График живёт в git

graphify-out/ рекомендуют коммитить, чтобы вся команда начинала с готовой карты. Дальше три привычные git-команды держат граф актуальным сами:

Вы делаете graphify делает
graphify hook install (один раз) ставит хуки и merge-драйвер, чтобы в graph.json не появлялись маркеры конфликта
git commit перестраивает граф в фоне, только AST, без затрат на API
git checkout / git switch перестраивает граф автоматически
git pull / git merge нужно один раз прогнать graphify update .

Приватность

  • Код обрабатывается локально через tree-sitter, ничего не уходит с машины.
  • Видео и аудио транскрибируются локально faster-whisper.
  • Документация, PDF и картинки уходят в модель ассистента — для headless-запуска нужен один из ключей: Gemini, Kimi, Claude, OpenAI, DeepSeek, Azure, Bedrock (по IAM, без ключа), Ollama или бинарник claude.
  • Телеметрии и аналитики нет.
  • Локальный лог запросов выключен по умолчанию и включается через GRAPHIFY_QUERY_LOG_ENABLE=1.

Заметный нюанс: Kimi (MOONSHOT_API_KEY) маршрутизирует запросы на серверы Moonshot AI в Китае — при требованиях к резидентности данных используйте --backend ollama или явно указывайте провайдера.

Что ещё есть

Граф можно отдать наружу: экспорт в SVG, GraphML (Gephi, yEd), Obsidian-хранилище, markdown-вики для навигации агентом, выгрузка Cypher для Neo4j и FalkorDB. Есть MCP-сервер с инструментами query_graph, get_node, get_neighbors, shortest_path, list_prs, get_pr_impact, triage_prs — как по stdio, так и общий HTTP-сервер для всей команды за одним адресом. Отдельная линия — работа с pull request: graphify prs показывает дашборд с CI, ревью и влиянием на граф, а graphify prs --conflicts находит PR, затрагивающие одни и те же сообщества графа. Наконец, graphify reflect собирает итоги прошлых вопросов-ответов в LESSONS.md и накладывает «уроки» поверх графа, помечая узлы как предпочтительные, спорные или устаревшие.

Дальше

Активная разработка идёт в ветке v8, компания Graphify Labs выпустила продукт на YC (S26).

Источник: https://github.com/Graphify-Labs/graphify