Один бинарник graphify, две задачи: подключить навык /graphify к ассистенту и читать граф обратно через query, path, explain и дашборд PR. Всё работает локально с graphify-out/graph.json.
Установка и настройка
CLI поставляется в пакете graphifyy на PyPI. Установка даёт бинарник graphify; затем graphify install регистрирует навык /graphify во всех обнаруженных AI-ассистентах (поддержано 17).
uv tool install graphifyy
graphify install [--platform <name>]
graphify uninstall [--purge]
--platform <name> — зарегистрировать в одном конкретном ассистенте вместо всех обнаруженных: claude, cursor, codex, gemini, aider, devin.
--purge (с uninstall) — также удалить директорию graphify-out/.
$ uv tool install graphifyy
✓ installed graphify
$ graphify install
✓ detected Claude Code, Cursor, GitHub Copilot
✓ /graphify skill registered · 17 assistants supported
/graphify: построение графа
Построение графа происходит внутри ассистента, а не в терминале: выполните /graphify ., и он отобразит проект (36 языков кода плюс документы, SQL и др.) в graphify-out/. CLI-команды ниже читают graph.json, который produces этот шаг.
/graphify <path> [--update] [--mode deep]
--update — пересканировать только изменившееся с последнего запуска вместо полного перестроения.
--mode deep — более глубокий многопроходный анализ: медленнее, больше выведенных (inferred) связей.
# в ассистенте (Claude Code, Cursor, Copilot, …):
/graphify .
✓ graphify-out/graph.html interactive graph
✓ graphify-out/GRAPH_REPORT.md architecture report
✓ graphify-out/graph.json machine-readable graph
# пересканировать только изменившееся:
/graphify . --update
# глубже:
/graphify . --mode deep
graphify query
Задать вопрос на естественном языке. CLI обходит граф в ширину от лучше всего совпадающих узлов и выводит релевантный подграф текстом: явные пути с цитатами file:line, каждое ребро помечено EXTRACTED, INFERRED или AMBIGUOUS.
graphify query "<question>" [--dfs] [--context <c>] [--budget <n>] [--graph <path>]
--dfs — обход в глубину вместо ширину: отследить одну конкретную цепочку вместо сбора широкого контекста.
--context <c> — явный фильтр контекста рёбер, например call. Можно повторять.
--budget <n> — ограничить вывод n токенами (по умолчанию 2000), чтобы уложить в контекст ассистента.
--graph <path> — путь к graph.json (по умолчанию graphify-out/graph.json).
$ graphify query "what connects auth to the database?"
AuthService → SessionStore → DatabasePool [EXTRACTED]
src/auth/service.py:42 → src/db/pool.py:17
# отследить конкретную цепочку вместо широкого контекста:
$ graphify query "how does a request reach the cache?" --dfs
graphify path
Кратчайший путь между двумя узлами: как две части кодовой базы реально связаны, шаг за шагом. Концы сопоставляются по метке, поэтому достаточно близкого имени.
graphify path "<source>" "<target>" [--graph <path>]
$ graphify path "UserService" "DatabasePool"
UserService → UserRepository → DatabasePool (2 hops)
graphify explain
Объяснение одного узла и его окружения человеческим языком: что это, где живёт, кто его вызывает и что вызывает он.
graphify explain "<node>" [--graph <path>]
$ graphify explain "RateLimiter"
RateLimiter · class · src/middleware/rate_limit.py
called by ApiGateway, WebhookHandler · calls RedisClient
graphify prs
Graph-aware дашборд открытых GitHub pull request’ов: статус CI и ревью по каждому PR плюс влияние на граф — какие сообщества затрагивает каждый PR, где они перекрываются и какие пары несут риск мёржа. Передайте номер для глубокого разбора одного PR.
graphify prs [<number>] [--triage] [--conflicts] [--worktrees] [--base <branch>] [--repo <owner/repo>]
--triage — ранжировать очередь ревью через настроенный LLM-бэкенд: что ревьюить первым и почему.
--conflicts — показать PR, затрагивающие одни и те же сообщества графа: риск порядка мёржа до того, как он станет конфликтом.
--worktrees — сопоставить локальные git worktrees с ветками и открытыми PR.
--base <branch> — только PR, нацеленные на эту базовую ветку (по умолчанию автоопределение).
--repo <owner/repo> — GitHub-репозиторий (по умолчанию текущий).
$ graphify prs
#482 refactor: extract PaymentGateway touches 12 nodes · 3 shared with #479
#479 fix: retry logic in RedisClient touches 4 nodes
$ graphify prs --triage
#482 HIGH overlaps #479 on RedisClient · review first
#479 LOW isolated change
$ graphify prs --conflicts
#482 ↔ #479 both modify RedisClient.retry · merge risk
Прочее
У CLI больше возможностей, чем помещается здесь: обновление и наблюдение за графом, headless-экстракция для CI, экспорт, git-хуки. graphify --help перечисляет все команды и флаги, а README на GitHub описывает их подробно.
Предпочитаете, чтобы ассистент вызывал граф нативно вместо shell-out? Те же данные доступны через MCP — см. справочник MCP-инструментов.
Заметка практика: Флаг
--budgetвgraphify queryполезен, когда ответ пойдёт прямо в контекст ассистента: лимит в 2000 токенов по умолчанию сбалансирован, но для простых вопросов можно поставить меньше, чтобы не засорять контекст. Для глубокого разбора архитектуры — наоборот, увеличить.
Локализованный справочник на основе официальной документации CLI Graphify.