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

npm version GitHub stars License: MIT

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*"
  • 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 rerankerMinScore para 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)

  1. Argumentos CLI - Parámetros de ejecución (--path, --config, --log-level, --force, etc.)
  2. Configuración de Proyecto - ./autodev-config.json (o ruta personalizada mediante --config)
  3. Configuración Global - ~/.autodev-cache/autodev-config.json
  4. 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íaOpcionesDescripción
EmbeddingembedderProvider, embedderModelId, embedderModelDimensionConfiguración de proveedor y modelo
API KeysembedderOpenAiApiKey, embedderOpenAiCompatibleApiKeyAutenticación
Vector StoreqdrantUrl, qdrantApiKeyConexión a Qdrant
SearchvectorSearchMinScore, vectorSearchMaxResultsComportamiento de búsqueda
RerankerrerankerEnabled, rerankerProviderReordenamiento de resultados
SummarizersummarizerProvider, summarizerLanguage, summarizerBatchSizeGeneración de resúmenes con IA

Argumentos CLI Clave:

  • index - Indexa el código base
  • search <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 dependencias
  • stdio - Inicia el adaptador stdio para MCP
  • config - Gestiona la configuración (úsalo con --get o --set)
  • --serve - Inicia el servidor HTTP de MCP (úsalo con el comando index)
  • --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