boyter/cs

codespelunker - CLI code search tool that understands code structure and ranks results by relevance. No indexing required with CLI, TUI, MCP and HTTP support.

何を解決するか

cs(codespelunker)は、コード検索におけるノイズ問題を解決するCLIツールです。grep や ripgrep などの従来のテキストベースの検索ツールとは異なり、コードを単なるテキストとして扱うのではなく、コードの構造を理解して関連性に基づいて結果をランク付けすることで、キーワードがコメントや設定ファイルに出現するだけの結果ではなく、実際の実装を効率的に見つけるのを支援します。

動作方法

事前に構築されたインデックスを必要とせず、リアルタイムでレキシカル解析を実行します。ファイルを解析してコード、文字列、コメントを区別し、重み付きBM25関連性スコアリングアルゴリズムを使用します。さらに「複雑性重力(complexity gravity)」を用いて、サイクロマティック複雑度を利用して、単純なボイラープレートやインターフェースよりも、コアロジックを含むファイルを優先的にランク付けします。

対象ユーザー

検索インデックスの維持コストを避けながら、1つ以上のリポジトリにまたがる構造的で関連性順に並べられたコード検索を必要とする開発者やAIエージェント。

特徴

  • 構造認識: コード、コメント、文字列、宣言(例: func, class)および使用箇所のみを結果にフィルタリング。
  • 複雑性重力: サイクロマティック複雑度を用いて、単純なインターフェースや設定ファイルよりも複雑な実装ファイルを優先。
  • インデックス不要: インデックスなしで検索エンジン並みのランク付けをリアルタイムで提供。現代のハードウェアではLinuxカーネルソースを3秒未満で検索可能。
  • 複数インターフェース: 標準CLI、TUI、HTTPサーバー、およびLLM統合用のMCP(Model Context Protocol)サーバーをサポート。
  • Git同期: 発見されたリポジトリに対して定期的に git pull を実行し、検索対象を自動的に最新状態に保つ。
  • スマートランク付け: BM25スコアリング、ファイル位置の重み付け、自動的なテストファイルの減衰処理を採用。

関連

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