Muvon/octocode

Structural code intelligence for AI agents — semantic search, knowledge graphs, and a built-in MCP server in one Rust binary. Give Claude, Cursor, and any MCP client a deep understanding of your codebase.

Octocode – AIエージェント向けの構造的コードインテリジェンス

何であるか – Octocodeは、コードベースをライブでクエリ可能な知識グラフに変換するオープンソースのRustツールです。Claude Desktop、Cursor、Windsurfなどに使われるModel-Center-Protocol(MCP)を内蔵したMCPサーバーを提供しており、AIアシスタントがプロジェクトの構造を人間のように検索・ナビゲーション・推論できるようにします。

なぜ重要か – 一般的なRetrieval-Augmented Generation(RAG)はソースファイルをフラットなテキストチャンクとして扱い、インポート、関数呼び出し、継承、モジュール境界などの関係性を失います。OctocodeはASTベースのシンボルグラフを抽出し、確定的なエッジ(importscallsextendsimplementsなど)を保持。このグラフに加え、意味検索機能をMCP互換エージェントに提供します。その結果、「認証はどこで処理されていますか?」や「支払いモジュールに依存しているファイルは?」といった、キーワード一致から推測する必要のない、コードに特化した回答が可能になります。


コア機能

機能 得られるもの
意味検索 自然言語クエリで、BM25キーワードマッチングとベクトル埋め込み(Voyage、OpenAI、Jinaなど)のハイブリッド方式により、最も関連性の高いファイルを返します。
ライブASTグラフ Tree-sitterが現在のソースツリーをノード(ファイル、シンボル)とエッジ(importscallsなど)に解析。常に最新の状態を維持。別インデックスは不要です。
GraphRAG(オプション) オプションの永続化グラフにより、LLMが生成した説明と、より広範なアーキテクチャ的関係を確定的グラフの上に追加できます。
LSP統合 --with-lspで起動すると、goto-definitionfind-referenceshovercompletionなど、言語サーバー(例:rust-analyzer)を使用してリクエストを転送します。
構造検索 ASTパターンマッチングにより、特定のコードパターン(例:すべての.unwrap()呼び出し)を検出できます。
マルチ言語対応 16言語が標準でサポート(Rust、Python、TypeScript/JS、Go、PHP、C++、Ruby、Elixir、Java、Swift、Svelte、Lua、CSS、JSON、Bash、Markdown)。
ローカル優先・プライバシー優先 fastembedでローカルで埋め込みを生成可能。クラウドプロバイダーはオプションで、送信するチャンクのみを確認できます。

動作原理(概要)

  1. Tree-sitterが各ソースファイルを解析 → ファイル、関数、クラスなどのノードに変換。
  2. ライブシンボルグラフがこれらのノードから確定的なエッジ(containsimportscallsなど)で構築。
  3. オプションのインデックス:各ファイル(またはシンボル)に対して埋め込みを計算し保存。オプションのLLMでテキスト説明を追加可能。
  4. MCPサーバーがRPCツール(semantic_searchview_signaturesgraphragstructural_search、LSPヘルパー)を公開。AIエージェントが呼び出します。
  5. ハイブリッドリトリーバル:BM25キーワードスコアとベクトル類似度(RRF融合)を組み合わせて結果をランク付け。

クイックスタート(インストール → インデックス → 検索)

# インストール(curlインストーラ、Homebrew、またはcargo)
curl -fsSL https://raw.githubusercontent.com/Muvon/octocode/master/install.sh | sh
# または:brew install muvon/tap/octocode
# または:cargo install octocode

# 埋め込みプロバイダーを設定(例:Voyage AIキー)
export VOYAGE_API_KEY="your-key"

# プロジェクトをインデックス化
cd /path/to/your/project
octocode index   # すべてのファイルを処理し、ライブグラフを構築

# 自然言語検索
octocode search "authentication middleware"

AIアシスタントの接続(MCPクライアント)

クライアントのmcpServers設定にサーバーエントリを追加。例:Claude Desktopの場合

{
  "mcpServers": {
    "octocode": {
      "command": "octocode",
      "args": ["mcp", "--path", "/path/to/your/project"]
    }
  }
}

これにより、アシスタントはsemantic_searchgraphragなどのツールを呼び出し、具体的な場所やコールグラフを含むコードベースの質問に答えられるようになります。

リトリーバル品質(ベンチマーク)

Octocodeは自らのソースツリー上で実行される再現可能なベンチマーク(127件のコード検索クエリ)を同梱しています。単純なハイブリッド(BM25 0.3 + ベクトル 0.7)で以下の成績を達成:

  • Hit@5 = 0.732
  • Hit@10 = 0.835
  • MRR = 0.572
  • Recall@10 = 0.807 キーワード重視の重み付けにより、密度のみのリトリーバルに比べてHit@5が**+22%**向上。また、汎用的なコードリランカー(bge-reranker-base)は性能を低下させることが示され、コード特化型リランカーの必要性が確認されました。

どのような人が使うか

  • 開発者:LLM搭載アシスタント(Claude、Cursorなど)がリポジトリの実際のアーキテクチャを理解できるようにしたい人。
  • チーム:信頼性とプライバシーを保ちつつ、コードナビゲーションが必要な内部AIエージェントを構築したい人。
  • ツール開発者:ASTパースを再実装せずに、LSPレベルの精度を提供する即戦力のMCPサーバーを探している人。

ライセンスとコミュニティ

  • ライセンス:Apache 2.0(許容性高く、商用利用に適しています)。
  • リポジトリ活動:CIバッジ、カバレッジバッジ、crates.ioでのリリース、増加するスター数。
  • サポート:GitHub Issues、Discussions、連絡先メール(opensource@muvon.io)。

結論:Octocodeは実用的でプロダクションレベルのRustプロジェクトであり、AIエージェントにコードの構造的・グラフベースのビューを提供。すべてをローカルで管理し、完全に自分の制御下に置きながら、正確で文脈に応じた支援を可能にします。

関連

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