1broseidon/cymbal

Language-agnostic code navigation CLI powered by tree-sitter

何を解決するか

Cymbalは、大規模でなじみのないコードベースをナビゲートする問題を解決します。grep、find、ファイル読み取りを連鎖して使う遅い手動検索パターンを、高速でインデックス化されたアプローチに置き換えます。構造的な方法でシンボルの関係性、依存関係、変更の影響を理解できるようにし、特にコード探索のトークン集約プロセスに苦労する人間の開発者やAIエージェントにとって非常に有用です。

動作方法

Cymbalはtree-sitterを使用してソースファイルを抽象構文木(AST)に解析し、シンボル、インポート、参照を抽出します。このデータは、高速なシンボル検索を可能にするFTS5を備えたローカルSQLiteインデックスに格納されます。クエリの前に変更されたファイルのみをインクリメンタルに再解析するため、バックグラウンドデーモンを必要とせずにインデックスを最新の状態に保つことができます。また、複数のGitワークツリーにわたるフェデレーテッド検索もサポートしています。

対象ユーザー

  • コードベースの探索や影響分析に高速なCLIを求める開発者。
  • トークン使用量を削減し、長大な検索呼び出しの連鎖を回避するために構造化されたコードナビゲーション層を必要とするAIエージェント。
  • エディターやボット、自動化ツールにインデックス化されたコードナビゲーションを埋め込みたいツールビルダー(Goライブラリ経由)。

特徴

  • 適応的探索:investigateコマンドは、ソース、呼び出し元、影響範囲を1回の呼び出しで統合的に表示します。
  • 関係性マッピング:trace(下流依存)とimpact(上流呼び出し元)をサポートし、オプションでMermaid、DOT、JSON形式の視覚的グラフ生成が可能です。
  • 変更分析:changedコマンドはGitの差分を特定のシンボルとその影響範囲にマッピングします。
  • 言語非依存:Go、Python、Rust、TypeScript、Java、C++など、幅広い言語をサポートしています。
  • エージェント統合:OpenCodeやClaude Code用の専用フックを備えており、エージェントによるコードナビゲーションをスムーズにします。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト