semantic-code-intelligence
Inteligencia Semántica de Código
Búsqueda semántica local y recorridos de código con citas para repositorios de software.
Semantic Code Intelligence analiza un repositorio en fragmentos conscientes de símbolos, indexa esos fragmentos con FAISS y BM25, fusiona ambos conjuntos de resultados y reordena los candidatos más fuertes con un cross-encoder. Los resultados incluyen rutas de archivo exactas y rangos de líneas. Todo se ejecuta localmente; no se requiere clave de API en la nube.
Qué ofrece
Búsqueda híbrida de código semántica y léxica
Impulso exacto de símbolos, rutas y términos contextuales
Etiquetas de fiabilidad de búsqueda basadas en el acuerdo de recuperación
Análisis AST de Python y análisis estructural para lenguajes de programación comunes
Citas exactas como
src/auth.py:L42-L67Panel de control en el navegador y API REST
Interfaces CLI, MCP y LSP
Recorridos de código locales impulsados por Ollama con un respaldo de evidencia determinista
Persistencia de índices FAISS, BM25 y SQLite
Vigilancia incremental del sistema de archivos
Gráficos de símbolos y dependencias
Benchmarks reproducibles de indexación y recuperación
Related MCP server: Qurio MCP Server
Requisitos
macOS o Linux
Python 3.10 o más reciente
Git
Aproximadamente 2–4 GB de espacio libre en disco para dependencias de Python y cachés de modelos locales
Opcional: uv para una gestión de entornos más rápida
Opcional: Ollama para recorridos de código generados
Las primeras operaciones de indexación y reordenamiento requieren acceso a Internet para descargar los pesos de los modelos de Hugging Face. Después de que los modelos estén en caché, la recuperación funciona sin conexión.
Inicio rápido desde una máquina limpia
1. Clonar el repositorio
git clone https://github.com/saitarrun/Semantic-code-intelligence.git
cd semantic-code-intelligence2. Crear un entorno e instalar la aplicación
Usando uv:
uv venv
source .venv/bin/activate
uv pip install -e .Usando herramientas estándar de Python:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .Windows no es actualmente un objetivo probado, pero el comando de activación equivalente es .venv\Scripts\activate.
3. Descargar los modelos de recuperación y crear un índice
Las descargas de modelos están deliberadamente deshabilitadas por defecto para que las solicitudes normales de la aplicación nunca generen tráfico de red inesperado. Habilite explícitamente las descargas durante el primer índice y consulta:
export CODE_INTEL_ALLOW_MODEL_DOWNLOADS=1
code-intel index .
code-intel query "Where is HybridRetrievalPipeline implemented?" --citations-only
unset CODE_INTEL_ALLOW_MODEL_DOWNLOADSEsto prepara:
sentence-transformers/all-MiniLM-L6-v2para embeddings densoscross-encoder/ms-marco-MiniLM-L-6-v2para reordenamiento
El índice del repositorio se almacena en .code_intel_index/. El directorio contiene el índice FAISS, los datos BM25 y los metadatos SQLite y no debe ser confirmado.
4. Iniciar la aplicación web
code-intel serve --host 127.0.0.1 --port 8000Abra http://127.0.0.1:8000.
El panel de control incluye:
Búsqueda semántica
Recorrido de código
Mapa de dependencias
Herramientas de diff y LSP
Controles de selección de repositorio y reindexación
Indicadores de latencia por etapa y fiabilidad de recuperación
Indexar otro repositorio
Los datos del índice se almacenan dentro del repositorio de destino por defecto:
code-intel index /absolute/path/to/projectBuscar en ese repositorio:
code-intel query \
"How are access tokens validated?" \
--dir /absolute/path/to/projectUse un directorio de índice separado cuando el repositorio fuente deba permanecer intacto:
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-storageForzar una reconstrucción limpia después de cambiar el comportamiento del analizador o de los embeddings:
code-intel index /absolute/path/to/project --forceBúsqueda semántica
Se recomienda el modo híbrido. Combina similitud de lenguaje natural con coincidencia exacta de identificadores:
code-intel query "How does the application serve the web UI?"Búsqueda exacta de símbolos:
code-intel query "Where is serve_ui implemented?"Devolver más resultados:
code-intel query "authentication middleware" --top-k 10Mostrar citas sin imprimir código:
code-intel query "database transaction rollback" --citations-onlySeleccionar una estrategia de recuperación individual para diagnósticos:
code-intel query "PaymentProcessor" --mode sparse
code-intel query "logic responsible for charging a customer" --mode dense
code-intel query "charge customer payment" --mode hybridDeshabilitar el reordenamiento con cross-encoder cuando la latencia importa más que la precisión:
code-intel query "configuration loader" --no-rerankCómo funciona la clasificación
El pipeline híbrido por defecto realiza estas etapas:
Expandir intenciones comunes de desarrolladores con términos deterministas del dominio del código.
Recuperar hasta 50 candidatos densos de FAISS.
Recuperar hasta 50 candidatos léxicos de BM25.
Fusionar hasta 60 candidatos únicos con Reciprocal Rank Fusion.
Reordenar hasta 40 candidatos con un cross-encoder local.
Impulsar coincidencias exactas de símbolos, rutas y términos contextuales.
Eliminar citas duplicadas y limitar resultados repetitivos del mismo archivo.
Devolver una etiqueta de fiabilidad con la evidencia que la respalda.
La fiabilidad no es una puntuación de confianza de un LLM. Informa señales de recuperación observables, como el acuerdo denso/léxico, coincidencias exactas de símbolos, superposición de rutas y similitud semántica.
Recorridos de código
Modo de evidencia determinista
Este modo no requiere Ollama. Devuelve símbolos recuperados, ámbitos, dependencias, bloques de código y citas sin inventar comportamiento:
code-intel ask \
"How does the indexing pipeline persist metadata?" \
--provider extractiveRecorridos locales generados con Ollama
Instale e inicie Ollama, luego descargue el modelo por defecto:
ollama pull qwen2.5-coder:7bEjecutar un recorrido con citas:
code-intel ask "Explain the hybrid retrieval control flow"Usar otro modelo local o servidor Ollama:
export CODE_INTEL_OLLAMA_MODEL=deepseek-coder-v2:lite
export OLLAMA_BASE_URL=http://127.0.0.1:11434Si no se puede alcanzar Ollama, la aplicación etiqueta claramente la respuesta como extractive-fallback y devuelve evidencia de código determinista.
CLI interactivo
Iniciar una sesión de búsqueda continua:
code-intel interactive --dir /absolute/path/to/projectInspeccionar estadísticas del índice:
code-intel stats --dir /absolute/path/to/projectMostrar todos los comandos:
code-intel --help
code-intel query --helpAPI REST
Iniciar el servidor:
code-intel serve --host 127.0.0.1 --port 8000Verificación de salud:
curl http://127.0.0.1:8000/api/healthIndexar un repositorio:
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
}'Ejecutar búsqueda híbrida:
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
}'Generar un recorrido:
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"
}'Endpoints importantes:
Método | Endpoint | Propósito |
|
| Estado del servicio y del índice |
|
| Archivos, líneas, fragmentos y manifiesto del índice |
|
| Progreso de indexación SSE |
|
| Indexación síncrona de repositorios |
|
| Búsqueda densa, dispersa o híbrida |
|
| Respuesta de código con citas |
|
| Respuesta con citas en streaming |
|
| Gráfico de símbolos y dependencias |
|
| Iniciar o detener la vigilancia incremental |
|
| Definiciones, referencias y datos de hover |
|
| Generar un diff unificado propuesto |
|
| Aplicar un diff unificado al repositorio seleccionado |
Enlace a 127.0.0.1 a menos que se requiera acceso remoto intencionalmente. Los endpoints de parche y apertura de archivos operan en el sistema de archivos local y no deben exponerse a redes no confiables.
Integración MCP
El servidor MCP permite que VS Code, Cursor, Claude Code y otros agentes de codificación compatibles busquen en el código indexado y recuperen rangos de código exactos. Instale e indexe el proyecto primero:
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/projectUse la ruta ejecutable absoluta impresa por which code-intel en los ejemplos a continuación.
VS Code
Cree .vscode/mcp.json en el proyecto que desea que el agente busque:
{
"servers": {
"semanticCodeIntelligence": {
"type": "stdio",
"command": "/absolute/path/to/Semantic-code-intelligence/.venv/bin/code-intel",
"args": ["mcp", "--dir", "${workspaceFolder}"],
"cwd": "${workspaceFolder}"
}
}
}Ejecute MCP: List Servers desde la Paleta de Comandos, inicie semanticCodeIntelligence y apruebe sus herramientas. Si su lista de herramientas antigua está en caché, ejecute MCP: Reset Cached Tools.
Cursor
Cree .cursor/mcp.json en el proyecto de destino:
{
"mcpServers": {
"semantic-code-intelligence": {
"command": "/absolute/path/to/Semantic-code-intelligence/.venv/bin/code-intel",
"args": ["mcp", "--dir", "${workspaceFolder}"]
}
}
}Claude Code
Registre el servidor stdio local desde el proyecto que desea buscar:
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-intelligencePara otro agente compatible con MCP, configure el mismo ejecutable como un servidor stdio local con argumentos mcp --dir /ruta/absoluta/a/tu/proyecto. El servidor escribe solo mensajes JSON-RPC en stdout, como lo requieren los clientes stdio.
Herramientas MCP disponibles:
code_intel_search: recuperación híbrida, densa o dispersa con líneas exactas y metadatos de fiabilidadcode_intel_symbol_graph: datos de dependencias y gráfico de llamadas para un repositorio o símbolocode_intel_index: construir o actualizar un índice desde el agente de codificacióncode_intel_read_file: leer de forma segura hasta 400 líneas dentro del repositorio configurado
El proyecto de destino debe estar indexado antes de las solicitudes de búsqueda. Por defecto, su índice se almacena en <proyecto>/.code_intel_index; pase --index-dir /ruta/al/índice al comando MCP cuando use un directorio de índice separado. Las descargas de modelos siguen siendo opcionales: establezca CODE_INTEL_ALLOW_MODEL_DOWNLOADS=1 si el modelo de embeddings o de reordenamiento no está ya en caché.
LSP y vigilancia del sistema de archivos
Iniciar el puente LSP stdio:
code-intel lsp --dir /absolute/path/to/projectIniciar el vigilante incremental:
code-intel watch --dir /absolute/path/to/projectEl vigilante observa los archivos fuente compatibles y actualiza el estado del índice después de los cambios. Use Ctrl+C para detener cualquiera de los dos procesos.
Configuración
Variables de entorno:
Variable | Valor por defecto | Descripción |
|
| Establecer a |
|
| Modelo Ollama usado para recorridos generados |
|
| URL base de la API de Ollama |
| Orígenes de localhost | Orígenes de navegador separados por comas permitidos por la API |
|
| Número máximo de pipelines de repositorio en caché por la API |
Configuración programática:
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)Archivos compatibles
El escáner por defecto incluye:
Python
JavaScript y TypeScript
Go
Rust
Java
C y C++
C#
Ruby
PHP
Swift
Kotlin y Scala
Scripts de shell
SQL
HTML y CSS
JSON, YAML, TOML y Markdown
Los directorios generados comunes, entornos virtuales, carpetas de dependencias, archivos de bloqueo, binarios, activos minificados, .git, .code_intel_index y oss_evaluation se excluyen por defecto. Consulte ParserConfig en semantic_code_intel/config.py para personalizar extensiones y patrones de ignorado.
Arquitectura
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]Módulos principales:
Paquete | Responsabilidad |
| Escaneo de repositorios y fragmentación estructural de código |
| Embeddings, FAISS, BM25, SQLite y vigilancia |
| Expansión de consultas, fusión, reordenamiento, fiabilidad y citas |
| Prompts fundamentados, síntesis Ollama y respaldo determinista |
| Endpoints FastAPI y panel de control en el navegador |
| Interfaces de línea de comandos |
| Gráficos de símbolos y dependencias |
| Servidor de Protocolo de Contexto de Modelo |
| Puente de Protocolo de Servidor de Lenguaje |
| Generación de repositorios sintéticos y evaluación de recuperación |
Pruebas
Ejecutar la suite de pruebas completa:
uv run pytest -qO con un entorno activado:
pytest -qLa suite cubre analizadores, FAISS, BM25, expansión de consultas, impulso de coincidencia exacta, fusión, citas, endpoints de API, comportamiento de síntesis local, MCP, LSP, parches, vigilancia y generación de benchmarks.
Benchmarking
Ejecutar un benchmark sintético reproducible:
code-intel benchmark \
--workspace ./benchmark_workspace \
--loc 40000 \
--queries 30El ejecutor escribe benchmark_report.json que contiene:
Tamaños de dataset e índice
Rendimiento de indexación
Percentiles de latencia densa, dispersa, de reordenador y de extremo a extremo
Tasa de aciertos y rango recíproco medio
Registros de consultas ejecutadas
Metadatos de Python, plataforma, hardware, paquetes y modelos
Los resultados del benchmark dependen del hardware, el estado de la caché del modelo, la composición del repositorio y el conjunto de consultas. Trate las cifras históricas como mediciones, no como garantías.
Solución de problemas
El modelo no está disponible localmente
Ejecute la operación fallida una vez con descargas habilitadas:
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Índice no encontrado
Los valores de --dir y --index-dir usados para consultar deben coincidir con los usados para indexar.
code-intel stats --dir /absolute/path/to/projectEl recorrido dice que Ollama no está disponible
Verifique el servidor local y los modelos instalados:
ollama list
curl http://127.0.0.1:11434/api/tagsSiempre puede usar el modo de evidencia determinista:
code-intel ask "your question" --provider extractiveLos resultados de búsqueda son débiles
Use el nombre exacto de la clase, función, método, endpoint o configuración cuando se conozca.
Prefiere el modo híbrido para el uso normal.
Aumenta
--top-kcuando la respuesta abarque varios archivos.Reindexa con
--forcedespués de cambiar la configuración del parser o del embedding.Comprueba la etiqueta de fiabilidad; una fiabilidad baja significa que las señales de recuperación no coinciden claramente.
El puerto del servidor ya está en uso
Elige otro puerto:
code-intel serve --host 127.0.0.1 --port 8010Estado del proyecto
Este proyecto está en desarrollo activo. Revisa los parches generados antes de aplicarlos, mantén la API vinculada a localhost para el uso normal y valida las afirmaciones de los benchmarks en tus propios repositorios de destino.
Licencia
Todavía no se ha añadido ninguna licencia de código abierto. El acceso público al repositorio no otorga por sí mismo permiso para copiar, modificar o redistribuir el código.
This server cannot be installed
Maintenance
Related MCP Servers
- AlicenseAqualityAmaintenanceExtremely fast local hybrid code search for agents.152MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI coding assistants to search and retrieve information from a locally ingested knowledge base using hybrid search, grounded in user-curated documentation.17MIT
- AlicenseNot gradedqualityBmaintenanceProvides token-efficient code retrieval for coding agents by indexing repositories and enabling ranked snippet search, symbol outlines, and surgical line reads.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to perform semantic code search locally, finding code by meaning rather than exact keywords.3MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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