Skip to main content
Glama
saitarrun

semantic-code-intelligence

Semantic Code Intelligence

ソフトウェアリポジトリ向けのローカルファーストなセマンティック検索と、引用付きコードウォークスルー。

Semantic Code Intelligence は、リポジトリをシンボル認識チャンクに解析し、そのチャンクを FAISS と BM25 でインデックス化して、両方の結果セットを融合し、クロスエンコーダーで最も有力な候補を再ランク付けします。結果には正確なファイルパスと行範囲が含まれます。すべてローカルで実行され、クラウド API キーは不要です。

提供される機能

  • ハイブリッドなセマンティックおよび語彙的コード検索

  • 正確なシンボル、パス、コンテキスト用語のブースティング

  • 検索の一致に基づく信頼性ラベル

  • Python AST 解析と一般的なプログラミング言語向けの構造解析

  • src/auth.py:L42-L67 などの正確な引用

  • ブラウザダッシュボードと REST API

  • CLI、MCP、LSP インターフェース

  • 決定論的エビデンスのフォールバックを備えた、ローカルの Ollama を利用したコードウォークスルー

  • FAISS、BM25、SQLite インデックスの永続化

  • インクリメンタルなファイルシステム監視

  • シンボルグラフと依存関係グラフ

  • 再現可能なインデックス作成と検索のベンチマーク

Related MCP server: Qurio MCP Server

必要条件

  • macOS または Linux

  • Python 3.10 以降

  • Git

  • Python の依存関係とローカルモデルキャッシュ用に約 2〜4 GB の空きディスク容量

  • 任意: uv(環境管理を高速化)

  • 任意: Ollama(コードウォークスルーの生成用)

最初のインデックス作成と再ランク付けの操作では、Hugging Face のモデル重みをダウンロードするためにインターネットアクセスが必要です。モデルがキャッシュされると、検索はオフラインで動作します。

クリーンなマシンでのクイックスタート

1. リポジトリのクローン

git clone https://github.com/saitarrun/Semantic-code-intelligence.git
cd semantic-code-intelligence

2. 環境を作成してアプリケーションをインストール

uv を使用する場合:

uv venv
source .venv/bin/activate
uv pip install -e .

標準の Python ツールを使用する場合:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .

Windows は現時点ではテスト対象ではありませんが、同等のアクティベーションコマンドは .venv\Scripts\activate です。

3. 検索モデルをダウンロードしてインデックスを作成

モデルのダウンロードは、通常のアプリケーションリクエストが予期しないネットワークトラフィックを発生させないよう、デフォルトで意図的に無効化されています。最初のインデックス作成とクエリの際に、明示的にダウンロードを有効にしてください:

export CODE_INTEL_ALLOW_MODEL_DOWNLOADS=1

code-intel index .
code-intel query "Where is HybridRetrievalPipeline implemented?" --citations-only

unset CODE_INTEL_ALLOW_MODEL_DOWNLOADS

これにより以下が準備されます:

  • 密な埋め込み用の sentence-transformers/all-MiniLM-L6-v2

  • 再ランク付け用の cross-encoder/ms-marco-MiniLM-L-6-v2

リポジトリインデックスは .code_intel_index/ に保存されます。このディレクトリには FAISS インデックス、BM25 データ、SQLite メタデータが含まれており、コミットすべきではありません。

4. Web アプリケーションを起動

code-intel serve --host 127.0.0.1 --port 8000

http://127.0.0.1:8000 を開きます。

ダッシュボードには以下が含まれます:

  • セマンティック検索

  • コードウォークスルー

  • 依存関係マップ

  • Diff および LSP ツール

  • リポジトリ選択と再インデックス作成のコントロール

  • ステージごとのレイテンシと検索信頼性のインジケーター

別のリポジトリをインデックス化

インデックスデータは、デフォルトでは対象リポジトリ内に保存されます:

code-intel index /absolute/path/to/project

そのリポジトリを検索:

code-intel query \
  "How are access tokens validated?" \
  --dir /absolute/path/to/project

ソースリポジトリを変更せずに残す場合は、別のインデックスディレクトリを使用します:

code-intel index /absolute/path/to/project \
  --index-dir /absolute/path/to/index-storage

code-intel query \
  "Where is the database connection pool created?" \
  --dir /absolute/path/to/project \
  --index-dir /absolute/path/to/index-storage

パーサーや埋め込みの動作を変更した後、クリーンな再構築を強制する:

code-intel index /absolute/path/to/project --force

セマンティック検索

ハイブリッドモードをお勧めします。自然言語の類似性と正確な識別子マッチングを組み合わせます:

code-intel query "How does the application serve the web UI?"

正確なシンボル検索:

code-intel query "Where is serve_ui implemented?"

より多くの結果を返す:

code-intel query "authentication middleware" --top-k 10

コードを表示せずに引用を表示:

code-intel query "database transaction rollback" --citations-only

診断用に個別の検索戦略を選択:

code-intel query "PaymentProcessor" --mode sparse
code-intel query "logic responsible for charging a customer" --mode dense
code-intel query "charge customer payment" --mode hybrid

精度よりも低レイテンシが重要な場合は、クロスエンコーダーの再ランク付けを無効にする:

code-intel query "configuration loader" --no-rerank

ランキングの仕組み

デフォルトのハイブリッドパイプラインは次のステージを実行します:

  1. 一般的な開発者の意図を、決定論的なコード領域用語で展開します。

  2. 最大 50 件の密な FAISS 候補を取得します。

  3. 最大 50 件の語彙的 BM25 候補を取得します。

  4. 最大 60 件のユニークな候補を Reciprocal Rank Fusion で融合します。

  5. ローカルのクロスエンコーダーで最大 40 件の候補を再ランク付けします。

  6. 正確なシンボル、パス、コンテキスト用語の一致をブーストします。

  7. 重複する引用を削除し、同じファイルからの繰り返しの結果を制限します。

  8. 根拠となるエビデンスとともに信頼性ラベルを返します。

信頼性は LLM の信頼度スコアではありません。密/語彙の一致、正確なシンボル一致、パスの重複、セマンティック類似度など、観測可能な検索シグナルを報告します。

コードウォークスルー

決定論的エビデンスモード

このモードは Ollama を必要としません。取得したシンボル、スコープ、依存関係、ソースブロック、引用を、動作を推測せずに返します:

code-intel ask \
  "How does the indexing pipeline persist metadata?" \
  --provider extractive

Ollama によるローカル生成ウォークスルー

Ollama をインストールして起動し、デフォルトモデルをダウンロードします:

ollama pull qwen2.5-coder:7b

引用付きウォークスルーを実行:

code-intel ask "Explain the hybrid retrieval control flow"

別のローカルモデルまたは Ollama サーバーを使用:

export CODE_INTEL_OLLAMA_MODEL=deepseek-coder-v2:lite
export OLLAMA_BASE_URL=http://127.0.0.1:11434

Ollama に到達できない場合、アプリケーションは応答を extractive-fallback と明確にラベル付けし、決定論的なソースエビデンスを返します。

対話型 CLI

継続的な検索セッションを開始:

code-intel interactive --dir /absolute/path/to/project

インデックス統計を確認:

code-intel stats --dir /absolute/path/to/project

すべてのコマンドを表示:

code-intel --help
code-intel query --help

REST API

サーバーを起動:

code-intel serve --host 127.0.0.1 --port 8000

ヘルスチェック:

curl http://127.0.0.1:8000/api/health

リポジトリをインデックス化:

curl -X POST http://127.0.0.1:8000/api/index \
  -H 'Content-Type: application/json' \
  -d '{
    "target_dir": "/absolute/path/to/project",
    "force": false
  }'

ハイブリッド検索を実行:

curl -X POST http://127.0.0.1:8000/api/search \
  -H 'Content-Type: application/json' \
  -d '{
    "query": "Where is token validation implemented?",
    "repo_path": "/absolute/path/to/project",
    "top_k": 5,
    "mode": "hybrid",
    "rerank": true
  }'

ウォークスルーを生成:

curl -X POST http://127.0.0.1:8000/api/synthesize \
  -H 'Content-Type: application/json' \
  -d '{
    "query": "Explain token validation failure paths",
    "repo_path": "/absolute/path/to/project",
    "top_k": 8,
    "provider": "extractive"
  }'

主要なエンドポイント:

Method

Endpoint

Purpose

GET

/api/health

サービスとインデックスのステータス

GET

/api/stats

ファイル、行、チャンク、インデックスマニフェスト

GET

/api/index/stream

SSE インデックス作成の進行状況

POST

/api/index

同期リポジトリインデックス作成

POST

/api/search

密、スパース、またはハイブリッド検索

POST

/api/synthesize

引用付きコード回答

POST

/api/synthesize/stream

ストリーミング引用付き回答

GET

/api/graph

シンボルおよび依存関係グラフ

POST

/api/watcher/toggle

インクリメンタル監視の開始または停止

GET

/api/lsp/inspect

定義、参照、ホバーデータ

POST

/api/patch/generate

提案された unified diff を生成

POST

/api/patch/apply

選択したリポジトリに unified diff を適用

リモートアクセスが意図的に必要な場合を除き、127.0.0.1 にバインドしてください。パッチ適用とファイルを開くエンドポイントはローカルファイルシステム上で動作するため、信頼できないネットワークに公開すべきではありません。

MCP 統合

MCP サーバーを使用すると、VS Code、Cursor、Claude Code、その他の互換性のあるコーディングエージェントが、インデックス化されたコードベースを検索し、正確なソース範囲を取得できます。最初にプロジェクトをインストールしてインデックス化してください:

git clone https://github.com/saitarrun/Semantic-code-intelligence.git
cd Semantic-code-intelligence
python -m venv .venv
source .venv/bin/activate
pip install -e .
code-intel index --dir /absolute/path/to/your/project

以下の例では、which code-intel が出力する実行ファイルの絶対パスを使用してください。

VS Code

エージェントに検索させたいプロジェクトに .vscode/mcp.json を作成します:

{
  "servers": {
    "semanticCodeIntelligence": {
      "type": "stdio",
      "command": "/absolute/path/to/Semantic-code-intelligence/.venv/bin/code-intel",
      "args": ["mcp", "--dir", "${workspaceFolder}"],
      "cwd": "${workspaceFolder}"
    }
  }
}

コマンドパレットから MCP: List Servers を実行し、semanticCodeIntelligence を起動して、そのツールを承認します。古いツールリストがキャッシュされている場合は、MCP: Reset Cached Tools を実行してください。

Cursor

対象プロジェクトに .cursor/mcp.json を作成します:

{
  "mcpServers": {
    "semantic-code-intelligence": {
      "command": "/absolute/path/to/Semantic-code-intelligence/.venv/bin/code-intel",
      "args": ["mcp", "--dir", "${workspaceFolder}"]
    }
  }
}

Claude Code

検索したいプロジェクトからローカルの stdio サーバーを登録します:

claude mcp add --transport stdio --scope project semantic-code-intelligence -- \
  /absolute/path/to/Semantic-code-intelligence/.venv/bin/code-intel mcp --dir /absolute/path/to/your/project
claude mcp get semantic-code-intelligence

他の MCP 互換エージェントの場合は、同じ実行ファイルを、引数 mcp --dir /absolute/path/to/your/project を指定したローカル stdio サーバーとして構成します。サーバーは、stdio クライアントの要件に従って、stdout に JSON-RPC メッセージのみを書き込みます。

利用可能な MCP ツール:

  • code_intel_search: 正確な行と信頼性メタデータを備えたハイブリッド、密、またはスパース検索

  • code_intel_symbol_graph: リポジトリまたはシンボルの依存関係およびコールグラフデータ

  • code_intel_index: コーディングエージェントからインデックスを構築または更新

  • code_intel_read_file: 設定されたリポジトリ内の最大 400 行を安全に読み取る

検索リクエストの前に、対象プロジェクトをインデックス化する必要があります。デフォルトでは、そのインデックスは <project>/.code_intel_index に保存されます。別のインデックスディレクトリを使用する場合は、MCP コマンドに --index-dir /path/to/index を渡してください。モデルのダウンロードは引き続きオプトインです: 埋め込みまたは再ランク付けモデルがまだキャッシュされていない場合は、CODE_INTEL_ALLOW_MODEL_DOWNLOADS=1 を設定してください。

LSP とファイルシステムウォッチャー

stdio LSP ブリッジを起動:

code-intel lsp --dir /absolute/path/to/project

インクリメンタルウォッチャーを起動:

code-intel watch --dir /absolute/path/to/project

ウォッチャーはサポートされているソースファイルを監視し、変更後にインデックスの状態を更新します。いずれかのプロセスを停止するには Ctrl+C を使用します。

設定

環境変数:

Variable

Default

Description

CODE_INTEL_ALLOW_MODEL_DOWNLOADS

0

1 に設定すると Hugging Face モデルのダウンロードを許可します

CODE_INTEL_OLLAMA_MODEL

qwen2.5-coder:7b

生成ウォークスルーに使用される Ollama モデル

OLLAMA_BASE_URL

http://127.0.0.1:11434

Ollama API のベース URL

CODE_INTEL_CORS_ORIGINS

Localhost origins

API が許可するブラウザオリジンのカンマ区切りリスト

CODE_INTEL_PIPELINE_CACHE_SIZE

4

API によってキャッシュされるリポジトリパイプラインの最大数

プログラムによる構成:

from pathlib import Path

from semantic_code_intel.config import CodeIntelConfig
from semantic_code_intel.indexing.engine import HybridIndexer
from semantic_code_intel.retrieval.pipeline import HybridRetrievalPipeline

project = Path("/absolute/path/to/project")
config = CodeIntelConfig(project_root=project)
config.retrieval.dense_top_k = 75
config.retrieval.sparse_top_k = 75
config.retrieval.final_top_k = 8

HybridIndexer(config).index_codebase(project)
response = HybridRetrievalPipeline(config).query(
    "Where is request authentication enforced?",
    top_k=8,
)

for result in response.results:
    print(result.citation, result.chunk.symbol_name, result.score)

print(response.reliability, response.reliability_reasons)

サポートされているファイル

デフォルトのスキャナーには以下が含まれます:

  • Python

  • JavaScript と TypeScript

  • Go

  • Rust

  • Java

  • C と C++

  • C#

  • Ruby

  • PHP

  • Swift

  • Kotlin と Scala

  • シェルスクリプト

  • SQL

  • HTML と CSS

  • JSON、YAML、TOML、Markdown

一般的な生成ディレクトリ、仮想環境、依存関係フォルダー、ロックファイル、バイナリ、圧縮済みアセット、.git.code_intel_indexoss_evaluation はデフォルトで除外されます。拡張子と無視パターンをカスタマイズするには、semantic_code_intel/config.pyParserConfig を参照してください。

アーキテクチャ

flowchart LR
    A[Repository] --> B[Scanner and ignore rules]
    B --> C[Python AST or polyglot parser]
    C --> D[Symbol-aware chunks]
    D --> E[Local embedding model]
    E --> F[(FAISS)]
    D --> G[Code-aware tokenizer]
    G --> H[(BM25)]
    D --> I[(SQLite metadata)]

    Q[Query] --> X[Intent expansion]
    X --> F
    X --> H
    F --> R[Reciprocal Rank Fusion]
    H --> R
    R --> J[Cross-encoder reranker]
    J --> K[Exact symbol and path boosts]
    K --> L[Diversity and reliability]
    L --> M[CLI, API, Web, MCP, LSP]

コアモジュール:

Package

Responsibility

parser

リポジトリのスキャンと構造的なコードチャンク化

indexing

埋め込み、FAISS、BM25、SQLite、監視

retrieval

クエリ展開、融合、再ランク付け、信頼性、引用

generation

根拠に基づくプロンプト、Ollama による合成、決定論的フォールバック

api

FastAPI エンドポイントとブラウザダッシュボード

cli

コマンドラインインターフェース

graph

シンボルおよび依存関係グラフ

mcp

Model Context Protocol サーバー

lsp

Language Server Protocol ブリッジ

benchmark

合成リポジトリの生成と検索評価

テスト

完全なテストスイートを実行:

uv run pytest -q

または、アクティベートされた環境で実行:

pytest -q

このスイートは、パーサー、FAISS、BM25、クエリ展開、完全一致ブースティング、融合、引用、API エンドポイント、ローカル合成動作、MCP、LSP、パッチ適用、監視、ベンチマーク生成をカバーしています。

ベンチマーキング

再現可能な合成ベンチマークを実行:

code-intel benchmark \
  --workspace ./benchmark_workspace \
  --loc 40000 \
  --queries 30

ランナーは以下を含む benchmark_report.json を書き出します:

  • データセットとインデックスのサイズ

  • インデックス作成スループット

  • 密、スパース、再ランク付け、エンドツーエンドのレイテンシパーセンタイル

  • ヒット率と平均逆順位(Mean Reciprocal Rank)

  • 実行されたクエリのレコード

  • Python、プラットフォーム、ハードウェア、パッケージ、モデルのメタデータ

ベンチマーク結果は、ハードウェア、モデルキャッシュの状態、リポジトリの構成、クエリセットによって異なります。過去の数値は保証ではなく測定結果として扱ってください。

トラブルシューティング

モデルがローカルにない場合

ダウンロードを有効にして、失敗した操作をもう一度実行します:

CODE_INTEL_ALLOW_MODEL_DOWNLOADS=1 code-intel index /absolute/path/to/project --force
CODE_INTEL_ALLOW_MODEL_DOWNLOADS=1 code-intel query "warm up reranker" --dir /absolute/path/to/project

インデックスが見つからない場合

クエリに使用する --dir--index-dir の値は、インデックス作成に使用した値と一致している必要があります。

code-intel stats --dir /absolute/path/to/project

ウォークスルーが Ollama を利用できないと表示する場合

ローカルサーバーとインストール済みモデルを確認します:

ollama list
curl http://127.0.0.1:11434/api/tags

常に決定論的エビデンスモードを使用できます:

code-intel ask "your question" --provider extractive

検索結果が弱い場合

  • 既知の場合は、正確なクラス、関数、メソッド、エンドポイント、または構成名を使用してください。

  • 通常の使用ではハイブリッドモードを推奨します。

  • 回答が複数のファイルにまたがる場合は、--top-k を増やしてください。

  • パーサーまたは埋め込み構成を変更した後は、--force で再インデックスしてください。

  • 信頼性ラベルを確認してください。信頼性が低い場合は、取得シグナルが強く一致していないことを意味します。

サーバーポートがすでに使用中です

別のポートを選択してください:

code-intel serve --host 127.0.0.1 --port 8010

プロジェクトの状態

このプロジェクトは活発に開発中です。生成されたパッチを適用する前にレビューし、通常の使用ではAPIをlocalhostにバインドしたままにし、ベンチマークの主張はご自身のターゲットリポジトリで検証してください。

ライセンス

オープンソースライセンスはまだ追加されていません。リポジトリへの公開アクセスは、それ自体ではコードのコピー、変更、再配布の許可を与えるものではありません。

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI coding assistants to search and retrieve information from a locally ingested knowledge base using hybrid search, grounded in user-curated documentation.
    17
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides token-efficient code retrieval for coding agents by indexing repositories and enabling ranked snippet search, symbol outlines, and surgical line reads.
    MIT

View all related MCP servers

Related MCP Connectors

  • Token-efficient search for coding agents over public and private documentation.

  • Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.

  • Search your knowledge bases from any AI assistant using hybrid RAG.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/saitarrun/Semantic-code-intelligence'

If you have feedback or need assistance with the MCP directory API, please join our Discord server