Autodev Codebase
Una biblioteca de análisis de código independiente de la plataforma con capacidades de búsqueda semántica y soporte para servidor MCP.
Documentación
@autodev/codebase
Una herramienta de búsqueda semántica de código basada en embeddings vectoriales con servidor MCP e integración multi-modelo. Puede usarse como herramienta CLI pura. Compatible con Ollama para embedding y reranking totalmente locales, lo que permite operación completamente offline y protección de la privacidad de tu repositorio de código.
# Semantic code search - Find code by meaning, not just keywords
╭─ ~/workspace/autodev-codebase
╰─❯ codebase search "user manage" --demo
Found 20 results in 5 files for: "user manage"
==================================================
File: "hello.js"
==================================================
< class UserManager > (L7-20)
class UserManager {
constructor() {
this.users = [];
}
addUser(user) {
this.users.push(user);
console.log('User added:', user.name);
}
getUsers() {
return this.users;
}
}
……
# Call graph analysis - Trace function call relationships and execution paths
╭─ ~/workspace/autodev-codebase
╰─❯ codebase call --demo --query="app,addUser"
Connections between app, addUser:
Found 2 matching node(s):
- demo/app:L1-29
- demo/hello.UserManager.addUser:L12-15
Direct connections:
- demo/app:L1-29 → demo/hello.UserManager.addUser:L12-15
Chains found:
- demo/app:L1-29 → demo/hello.UserManager.addUser:L12-15
# Code outline with AI summaries - Understand code structure at a glance
╭─ ~/workspace/autodev-codebase
╰─❯ codebase outline 'hello.js' --demo --summarize
# hello.js (23 lines)
└─ Defines a greeting function that logs a personalized hello message and returns a welcome string. Implements a UserManager class managing an array of users with methods to add users and retrieve the current user list. Exports both components for external use.
2--5 | function greetUser
└─ Implements user greeting logic by logging a personalized hello message and returning a welcome message
7--20 | class UserManager
└─ Manages user data with methods to add users to a list and retrieve all stored users
12--15 | method addUser
└─ Adds a user to the users array and logs a confirmation message with the user's name.
🚀 Características
- 🔍 Búsqueda Semántica de Código: Búsqueda basada en vectores mediante modelos de embedding avanzados
- 🔗 Análisis de Grafo de Llamadas: Rastrea relaciones de llamadas entre funciones y rutas de ejecución
- 🌐 Servidor MCP: Servidor MCP basado en HTTP con adaptadores SSE y stdio
- 💻 Herramienta CLI Pura: Interfaz de línea de comandos independiente sin dependencias de GUI
- ⚙️ Configuración en Capas: Gestión de configuración CLI, de proyecto y global
- 🎯 Filtrado Avanzado de Rutas: Patrones glob con expansión de llaves y exclusiones
- 🌲 Análisis con Tree-sitter: Soporte para más de 40 lenguajes de programación
- 💾 Integración con Qdrant: Base de datos vectorial de alto rendimiento
- 🔄 Múltiples Proveedores: OpenAI, Ollama, Jina, Gemini, Mistral, OpenRouter, Vercel
- 📊 Vigilancia en Tiempo Real: Actualizaciones automáticas del índice
- ⚡ Procesamiento por Lotes: Procesamiento paralelo eficiente
- 📝 Extracción de Esquemas de Código: Genera esquemas de código estructurados con resúmenes de IA
- 💨 Caché de Análisis de Dependencias: Caché inteligente para un reanálisis de 10 a 50 veces más rápido
📦 Instalación
1. Dependencias
brew install ollama ripgrep
ollama serve
ollama pull nomic-embed-text
2. Qdrant
docker run -d -p 6333:6333 -p 6334:6334 --name qdrant qdrant/qdrant
3. Instalación
npm install -g @autodev/codebase
codebase config --set embedderProvider=ollama,embedderModelId=nomic-embed-text
🛠️ Inicio Rápido
# Demo mode (recommended for first-time)
# Creates a demo directory in current working directory for testing
# Index & search
codebase index --demo
codebase search "user greet" --demo
# Call graph analysis
codebase call --demo --query="app,addUser"
# MCP server
codebase index --serve --demo
📋 Comandos
📝 Esquemas de Código
# Extract code structure (functions, classes, methods)
codebase outline "src/**/*.ts"
# Generate code structure with AI summaries
codebase outline "src/**/*.ts" --summarize
# View only file-level summaries
codebase outline "src/**/*.ts" --summarize --title
# Clear summary cache
codebase outline --clear-summarize-cache
🔗 Análisis de Grafo de Llamadas
# 📊 Statistics Overview (no --query)
codebase call # Show statistics overview
codebase call --json # JSON format
codebase call src/commands # Analyze specific directory
# 🔍 Function Query (with --query)
codebase call --query="getUser" # Single function call tree (default depth: 3)
codebase call --query="main" --depth=5 # Custom depth
codebase call --query="getUser,validateUser" # Multi-function connections (default depth: 10)
# 🎨 Visualization
codebase call --viz graph.json # Export Cytoscape.js format
codebase call --open # Open interactive viewer
codebase call --viz graph.json --open # Export and open
# Specify workspace (works for both modes)
codebase call --path=/my/project --query="main"
Patrones de Consulta:
- Coincidencia exacta:
--query="functionName"o--query="*ClassName.methodName" - Comodines:
*(cualquier carácter),?(un solo carácter)- Ejemplos:
--query="get*",--query="*User*",--query="*.*.get*"
- Ejemplos:
- Función única:
--query="main"- Muestra el árbol de llamadas (ascendente + descendente)- Profundidad predeterminada: 3 (evita salida excesiva)
- Múltiples funciones:
--query="main,helper"- Analiza rutas de conexión entre funciones- Profundidad predeterminada: 10 (se necesita una búsqueda más profunda para encontrar rutas)
Lenguajes Compatibles:
- TypeScript/JavaScript (.ts, .tsx, .js, .jsx)
- Python (.py)
- Java (.java)
- C/C++ (.c, .h, .cpp, .cc, .cxx, .hpp, .hxx, .c++)
- C# (.cs)
- Rust (.rs)
- Go (.go)
🔍 Indexación y Búsqueda
# Index the codebase
codebase index --path=/my/project --force
# Search with filters
codebase search "error handling" --path-filters="src/**/*.ts"
# Search with custom limit and minimum score
codebase search "authentication" --limit=20 --min-score=0.7
codebase search "API" -l 30 -S 0.5
# Search in JSON format
codebase search "authentication" --json
# Clear index data
codebase index --clear-cache --path=/my/project
🌐 Servidor MCP
# HTTP mode (recommended)
codebase index --serve --port=3001 --path=/my/project
# Stdio adapter
codebase stdio --server-url=http://localhost:3001/mcp
⚙️ Configuración
# View config
codebase config --get
codebase config --get embedderProvider --json
# Set config
codebase config --set embedderProvider=ollama,embedderModelId=nomic-embed-text
codebase config --set --global qdrantUrl=http://localhost:6333
🚀 Funciones Avanzadas
🔍 Reordenamiento de Búsqueda con LLM
Habilita el reordenamiento con LLM para mejorar drásticamente la relevancia de la búsqueda:
# Enable reranking with Ollama (recommended)
codebase config --set rerankerEnabled=true,rerankerProvider=ollama,rerankerOllamaModelId=qwen3-vl:4b-instruct
# Or use OpenAI-compatible providers
codebase config --set rerankerEnabled=true,rerankerProvider=openai-compatible,rerankerOpenAiCompatibleModelId=deepseek-chat
# Search with automatic reranking
codebase search "user authentication" # Results are automatically reranked by LLM
Beneficios:
- 🎯 Mayor precisión: El LLM comprende la relevancia semántica más allá de la similitud vectorial
- 📊 Puntuación inteligente: Los resultados se reordenan en una escala de 0 a 10 según la relevancia de la consulta
- ⚡ Procesamiento por lotes: Maneja eficientemente grandes conjuntos de resultados con tamaños de lote configurables
- 🎛️ Control de umbral: Filtra resultados con
rerankerMinScorepara conservar solo coincidencias de alta calidad
Filtrado de Rutas y Exportación
# Path filtering with brace expansion and exclusions
codebase search "API" --path-filters="src/**/*.ts,lib/**/*.js"
codebase search "utils" --path-filters="{src,test}/**/*.ts"
# Export results in JSON format for scripts
codebase search "auth" --json
Filtrado de Rutas y Exportación
# Path filtering with brace expansion and exclusions
codebase search "API" --path-filters="src/**/*.ts,lib/**/*.js"
codebase search "utils" --path-filters="{src,test}/**/*.ts"
# Export results in JSON format for scripts
codebase search "auth" --json
⚙️ Configuración
Capas de Configuración (Orden de Prioridad)
- Argumentos CLI - Parámetros de ejecución (
--path,--config,--log-level,--force, etc.) - Configuración de Proyecto -
./autodev-config.json(o ruta personalizada mediante--config) - Configuración Global -
~/.autodev-cache/autodev-config.json - Valores Predeterminados - Valores de respaldo
Nota: Los argumentos CLI proporcionan anulación en tiempo de ejecución para rutas, registro y comportamiento operativo. Para configuración persistente (embedderProvider, claves API, parámetros de búsqueda), usa config --set para guardar en archivos de configuración.
Ejemplos Comunes de Configuración
Ollama:
{
"embedderProvider": "ollama",
"embedderModelId": "nomic-embed-text",
"qdrantUrl": "http://localhost:6333"
}
OpenAI:
{
"embedderProvider": "openai",
"embedderModelId": "text-embedding-3-small",
"embedderOpenAiApiKey": "sk-your-key",
"qdrantUrl": "http://localhost:6333"
}
Compatible con OpenAI:
{
"embedderProvider": "openai-compatible",
"embedderModelId": "text-embedding-3-small",
"embedderOpenAiCompatibleApiKey": "sk-your-key",
"embedderOpenAiCompatibleBaseUrl": "https://api.openai.com/v1"
}
Opciones Clave de Configuración
| Categoría | Opciones | Descripción |
|---|---|---|
| Embedding | embedderProvider, embedderModelId, embedderModelDimension | Configuración de proveedor y modelo |
| API Keys | embedderOpenAiApiKey, embedderOpenAiCompatibleApiKey | Autenticación |
| Vector Store | qdrantUrl, qdrantApiKey | Conexión a Qdrant |
| Search | vectorSearchMinScore, vectorSearchMaxResults | Comportamiento de búsqueda |
| Reranker | rerankerEnabled, rerankerProvider | Reordenamiento de resultados |
| Summarizer | summarizerProvider, summarizerLanguage, summarizerBatchSize | Generación de resúmenes con IA |
Argumentos CLI Clave:
index- Indexa el código basesearch <query>- Busca en el código base (argumento posicional obligatorio)outline <pattern>- Extrae esquemas de código (admite patrones glob)call- Analiza relaciones de llamadas entre funciones y grafos de dependenciasstdio- Inicia el adaptador stdio para MCPconfig- Gestiona la configuración (úsalo con --get o --set)--serve- Inicia el servidor HTTP de MCP (úsalo con el comandoindex)--summarize- Genera resúmenes de IA para esquemas de código--dry-run- Previsualiza operaciones antes de ejecutarlas--title- Muestra solo resúmenes a nivel de archivo--clear-summarize-cache- Limpia todas las cachés de resúmenes--path,--demo,--force- Opciones comunes--limit/-l <number>- Número máximo de resultados de búsqueda (predeterminado: desde la configuración, máx. 50)--min-score/-S <number>- Puntuación mínima de similitud para resultados de búsqueda (0-1, predeterminado: desde la configuración)--query <patterns>- Patrones de consulta para análisis de grafo de llamadas (separados por comas)--viz <file>- Exporta datos completos de dependencias para visualización (no se puede usar con --query)--open- Abre el visor interactivo de grafos--depth <number>- Establece la profundidad de análisis para grafos de llamadas--help- Muestra todas las opciones disponibles
Comandos de Configuración:
# View config
codebase config --get
codebase config --get --json
# Set config (saves to file)
codebase config --set embedderProvider=ollama,embedderModelId=nomic-embed-text
codebase config --set --global embedderProvider=openai,embedderOpenAiApiKey=sk-xxx
# Use custom config file
codebase --config=/path/to/config.json config --get
codebase --config=/path/to/config.json config --set embedderProvider=ollama
# Runtime override (paths, logging, etc.)
codebase index --path=/my/project --log-level=info --force
Para la referencia completa de configuración, consulta CONFIG.md.
🔌 Integración MCP
Modo HTTP Streamable (Recomendado)
codebase index --serve --port=3001
Configuración del IDE:
{
"mcpServers": {
"codebase": {
"url": "http://localhost:3001/mcp"
}
}
}
Adaptador Stdio
# First start the MCP server in one terminal
codebase index --serve --port=3001
# Then connect via stdio adapter in another terminal (for IDEs that require stdio)
codebase stdio --server-url=http://localhost:3001/mcp
Configuración del IDE:
{
"mcpServers": {
"codebase": {
"command": "codebase",
"args": ["stdio", "--server-url=http://localhost:3001/mcp"]
}
}
}
🤝 Contribuciones
¡Las contribuciones son bienvenidas! No dudes en enviar un Pull Request o abrir un Issue en GitHub.
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT.
🙏 Agradecimientos
Este proyecto es un fork y trabajo derivado basado en Roo Code. Hemos construido sobre su excelente base para crear esta herramienta especializada de análisis de código con funciones mejoradas y capacidades de servidor MCP.
🌟 Si encuentras útil esta herramienta, ¡danos una estrella en GitHub!
Hecho con ❤️ para la comunidad de desarrolladores