graphify は何をしますか?
AIコーディングアシスタントスキル(Claude Code、Codex、OpenCode、OpenClaw、Factory Droid、Trae)。コード、ドキュメント、論文、画像の任意のフォルダをクエリ可能なナレッジグラフに変換します。
概要
graphifyは、プロジェクト内のファイル間の関係を自動的に発見し整理することで、開発者が複雑なコードベースをナビゲートし理解するのを支援します。これは、ソースコード、ドキュメント、論文、画像スキャンなど、さまざまな入力タイプを処理し、セマンティック検索、依存関係分析、コンセプトマッピングを可能にする統一グラフ表現を作成します。
特徴
- マルチフォーマットサポート: コード(Python、JavaScript、TypeScript、Go、Rustなど)、マークダウン、PDF、画像(OCR経由)を処理します。
- 自動エンティティ抽出: 関数、クラス、変数、ドキュメントセクション、キーワードを識別します。
- 関係マッピング: インポート、関数呼び出し、継承、クロスリファレンス、トピックの類似性を検出します。
- グラフクエリ: 自然言語または構造化されたクエリを使用してグラフを探索し、特定の情報を取得します。
- プラットフォーム統合: Claude Code、Codex、OpenCode、OpenClaw、Factory Droid、Traeとシームレスに動作します。
インストール
Claude Code
claude add graphify
手動インストール
-
リポジトリをクローンします:
git clone https://github.com/rhanka/graphify.git -
依存関係をインストールします:
pip install -r requirements.txt -
.envファイルで環境変数を設定します(詳細は設定を参照)。
使用法
基本コマンド
プロジェクトのルートディレクトリから:
graphify build /path/to/project --output graph.json
グラフのクエリ
グラフが構築されたら、自然言語でクエリできます:
graphify query "このプロジェクトの主要なエントリポイントは何ですか?" --graph graph.json
AIアシスタントとの統合
graphifyをAIアシスタントスキルとして使用するには、プラットフォーム固有の設定ファイルに追加します:
Claude Code (claude.md):
<!-- Claude Code用にgraphifyを有効にする -->
- このプロジェクトでは、クエリ可能なナレッジグラフを維持するためにgraphifyを使用します。
設定
config.yamlを使用して、抽出プロセスと出力形式をカスタマイズします:
input:
include_extensions: [".py", ".js", ".md", ".pdf"]
exclude_dirs: ["node_modules", ".git", "dist"]
max_file_size: 10 # MB
extraction:
entity_types: ["function", "class", "variable", "section", "keyword"]
relationship_types: ["imports", "calls", "extends", "references", "similar"]
similarity_threshold: 0.7
output:
format: "json" # json, neo4j, csv
enrich: true # LLMベースの要約でエンティティを強化
環境変数:
OPENAI_API_KEY: エンティティの強化と高度な推論に必要です。GRAPHIFY_CACHE_DIR: キャッシュされたグラフ(デフォルト:~/.graphify/cache)を保存するためのカスタムディレクトリ。
アーキテクチャ
graphifyは3段階のパイプラインで動作します:
- スキャン: 指定されたフォルダを再帰的にトラバースし、各ファイルのタイプを識別し、内容を読み取ります。
- 抽出: 言語固有のパーサーとMLモデルを使用してエンティティと関係を識別します。コードファイルは、構文ツリーパターンを使用して解析されます。画像はOCRを使用して処理され、ドキュメントはNLPを使用して解析されます。
- グラフ構築: 抽出されたエンティティと関係をグラフデータベース(Neo4j)またはJSONファイルに保存します。グラフは、検索速度を最適化するためにインデックス付けされます。
例
# 使用方法:
# graphify build .
# graphify query "認証を処理する関数を見つける"
import json
from pathlib import Path
# グラフをロード
with open("graph.json") as f:
graph = json.load(f)
# 類似点を検索
def find_similar(entity_name, graph, top_k=5):
# ...類似性マッチングのロジック...
pass
貢献
プルリクエストは大歓迎です。大きな変更の場合は、最初にイシューを開いて何を変更したいかを議論してください。
新しいファイルタイプのサポートを追加するには:
parsers/に新しいパーサーを追加します。config.yamlのサポートされている拡張子のリストにファイル拡張子を追加します。- テストを実行します:
pytest tests/
ライセンス
MIT