sem - Git の上に関数/クラス単位の変更追跡を追加するセマンティック・バージョン管理ツール
(github.com/Ataraxy-Labs)- 行ではなくコードエンティティを比較し、どの関数/メソッド/クラスが追加・変更・削除・移動・リネームされたかを表示
- 「line x~y が変更」→「関数
blahが変更」
- 「line x~y が変更」→「関数
- 任意の Git リポジトリで設定不要で動作し、Git の外部でも任意のファイル比較が可能
- SQLite に保存されるエンティティキャッシュは、リポジトリ外の OS キャッシュディレクトリに保管されるため、作業ツリーを汚さない
- tree-sitter でコードをパースし、エンティティ ID → AST 構造ハッシュ → 80% 超のトークン類似度の順で変更前後のコードを紐付け、リネームと移動を検出
-
対応コマンド
sem diff: 作業ツリー/ステージング/コミット/コミット範囲/任意の 2 ファイルを比較し、プレーンテキスト/Markdown/JSON 出力に対応sem impact: 特定の関数変更時に影響を受ける依存コード/呼び出し元/テストを検出sem blame: 関数/クラス/メソッドのエンティティレベルでの最終変更者を表示sem log: git history を通じて、1 つのエンティティがどのように変化してきたかを追跡- エンティティを指定しない場合は、リポジトリの **hotspot(変更頻度が高いもの)/co-change pairs(繰り返し同時に変更されたペア)**を分析(「1 つ触るなら、これも忘れないで」)
sem entities: 現在のフォルダ配下のすべてのエンティティを表示sem context: エージェントに必要な周辺コードだけをトークン予算に合わせて構成sem setup: 実行すると既存のgit diffがエンティティ単位の出力に変わり、staged 変更の影響範囲を表示する pre-commit フックもインストール- macOS と Linux では Claude Code に常駐依存グラフとプロンプト開始時のコンテキストフックを接続し、毎回リポジトリを再解析したりコードを探し回ったりするコストを削減
sem mcp:diff,impact,context,entities,blame,logを MCP ツールとして提供し、コーディングエージェントがファイル全体ではなく必要な関数と依存関係だけを照会できるようにする
- GitHub Actionを追加すると、PR ごとに変更された関数/クラス/メソッドを 1 つの固定コメントとして更新し、フォーマット/コメントだけが変わった PR も区別
- TypeScript、Python、Go、Rust、Java、Swift、SQL、C/C++ などを含む 32 言語と JSON/YAML/TOML/CSV/Markdown をサポート
- 未対応ファイルはチャンク単位の diff として処理
- ライセンス: MIT OR Apache-2.0
まだコメントはありません。