Versión 1.12.x · Búsqueda Semántica · Compatible con MCP · Node.js
Dale a tus agentes de IA una memoria siempre actualizada y consultable de cualquier base de código – con búsqueda semántica inteligente y aprendizaje automático – en un comando npx.
🇪🇸 Versión en Español | 🇺🇸 English Version | 🤖 Agent Version
🎯 Filtros de Búsqueda con Alcance - Filtrar por path_glob, tags, lang para resultados precisos
🔄 Búsqueda Híbrida - Fusión BM25 + Vector con combinación de ranking recíproco (habilitado por defecto)
🧠 Re-Rankeador Cross-Encoder - Rerankeador Transformers.js para mejoras de precisión
👀 Observador de Archivos - Indexado incremental en tiempo real con hashing tipo Merkle
📦 Paquetes de Contexto - Alcances de búsqueda reutilizables con integración CLI + MCP
🛠️ CLI Multi-Proyecto - Aliases --project y --directory para mayor claridad
🏆 Análisis de Rendimiento - Comparación arquitectural con herramientas generales de IDE
Mejoras principales:
- 40% indexado más rápido con actualizaciones incrementales
- 60% mejor precisión con búsqueda híbrida + rerankeador
- 3x más rápido multi-proyecto con rutas explícitas
- 90% reducción en duplicación de funciones con symbol boost
- Arquitectura especializada para búsqueda semántica de código
Los agentes de modelos de lenguaje grandes pueden leer miles de tokens, pero los proyectos fácilmente alcanzan millones de caracteres. Sin una capa de recuperación inteligente, los agentes:
- Recrean funciones que ya existen
- Nombran mal las APIs (newUser vs. createUser)
- Desperdician tokens cargando código repetitivo (
vendor/,node_modules/...) - Fallan cuando el repositorio crece
PAMPA resuelve esto convirtiendo tu repositorio en un grafo de memoria de código:
- Chunking – Cada función/clase se convierte en un chunk atómico
- Embedding – Los chunks se vectorizan con modelos de embedding avanzados
- Indexing – Vectores + metadatos viven en SQLite local
- Codemap – Un
pampa.codemap.jsonligero se commitea a git para que el contexto siga al repo - Serving – Un servidor MCP expone herramientas para buscar y obtener código
Cualquier agente compatible con MCP (Cursor, Claude, etc.) ahora puede buscar, obtener y mantenerse sincronizado – sin escanear todo el árbol.
🤖 Si eres un agente de IA: Lee la guía completa de configuración para agentes → or 👤 Si eres humano: Comparte la guía para agentes con tu asistente de IA para configurar PAMPA automáticamente!
- 🚀 Instalación como MCP (Recomendado)
- 💻 Uso Directo con CLI
- 📝 Lenguajes Soportados
- 🧠 Proveedores de Embeddings
- 🏆 Benchmark de Rendimiento
- 🏗️ Arquitectura
- 🔧 Herramientas MCP Disponibles
- 📊 Recursos MCP Disponibles
- 🎯 Prompts MCP Disponibles
PAMPA puede indexar y buscar código en varios lenguajes de forma nativa:
- JavaScript / TypeScript (
.js,.ts,.tsx,.jsx) - PHP (
.php) - Python (
.py) - Go (
.go) - Java (
.java)
Agrega a tu configuración de Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json en macOS):
{
"mcpServers": {
"pampa": {
"command": "npx",
"args": ["-y", "pampa", "mcp"]
}
}
}Opcional: Agrega "--debug" a args para logging detallado: ["-y", "pampa", "mcp", "--debug"]
Configura Cursor creando o editando el archivo mcp.json en tu directorio de configuración:
{
"mcpServers": {
"pampa": {
"command": "npx",
"args": ["-y", "pampa", "mcp"]
}
}
}Tu agente de IA debería automáticamente:
- Verificar si el proyecto está indexado con
get_project_stats - Indexar el proyecto con
index_projectsi es necesario - Mantenerlo actualizado con
update_projectdespués de cambios
¿Necesitas indexar manualmente? Ver sección Uso Directo con CLI.
Además, instala esta regla en tu aplicación para que use PAMPA efectivamente:
Copia el contenido de RULE_FOR_PAMPA_MCP.md (en inglés para mejor compatibilidad) en las instrucciones de tu agente o sistema de IA.
Una vez configurado, tu agente de IA puede:
🔍 Buscar: "función de autenticación"
📄 Obtener código: Usar el SHA de los resultados de búsqueda
📊 Estadísticas: Obtener resumen del proyecto
🔄 Actualizar: Mantener la memoria sincronizada
Para uso directo desde terminal o indexado manual del proyecto:
# Con modelo local (gratis, privado)
npx pampa index --provider transformers
# O con OpenAI (mejor calidad, configura OPENAI_API_KEY primero)
export OPENAI_API_KEY="tu-api-key"
npx pampa index --provider openai
# O auto-detectar el mejor disponible
npx pampa index| Comando | Propósito |
|---|---|
npx pampa index [path] [--provider X] |
Escanear proyecto, actualizar SQLite y pampa.codemap.json |
npx pampa update [path] [--provider X] |
Actualizar índice después de cambios (recomendado) |
npx pampa mcp |
Iniciar servidor MCP (stdio) |
npx pampa search <query> [-k N] [-p X] |
Búsqueda vectorial local rápida (debug) |
npx pampa info |
Mostrar estadísticas del proyecto indexado |
# Indexar tu proyecto
npx pampa index
# Ver estadísticas
npx pampa info
# Buscar funciones
npx pampa search "validación de usuario"
# Iniciar servidor MCP para agentes
npx pampa mcpPAMPA soporta múltiples proveedores para generar embeddings de código:
| Proveedor | Costo | Privacidad | Instalación |
|---|---|---|---|
| Transformers.js | 🟢 Gratis | 🟢 Total | npm install @xenova/transformers |
| Ollama | 🟢 Gratis | 🟢 Total | Instalar Ollama + npm install ollama |
| OpenAI | 🔴 ~$0.10/1000 funciones | 🔴 Ninguna | Configurar OPENAI_API_KEY |
| Cohere | 🟡 ~$0.05/1000 funciones | 🔴 Ninguna | Configurar COHERE_API_KEY + npm install cohere-ai |
Recomendación: Usa Transformers.js para desarrollo personal (gratis y privado) u OpenAI para máxima calidad.
Ver PROVEEDORES_EMBEDDINGS.md para detalles completos.
PAMPA v1.12 utiliza una arquitectura especializada para búsqueda semántica de código con resultados medibles.
Resultados del Benchmark Sintético:
| Configuración | P@1 | MRR@5 | nDCG@10 |
| ------------- | ----- | ----- | ------- |
| Base | 0.750 | 0.833 | 0.863 |
| Híbrida | 0.875 | 0.917 | 0.934 |
| Híbrida+CE | 1.000 | 0.958 | 0.967 |
# Búsqueda de funciones de autenticación
pampa search "user authentication"
→ AuthController::login, UserService::authenticate, etc.
# Búsqueda de procesamiento de pagos
pampa search "payment processing"
→ PaymentService::process, CheckoutController::create, etc.
# Búsqueda con filtros específicos
pampa search "database operations" --lang php --path_glob "app/Models/**"
→ UserModel::save, OrderModel::find, etc.- Indexado Especializado - Índice persistente con granularidad a nivel función
- Búsqueda Híbrida - Combinación BM25 + Vector + Cross-encoder reranking
- Consciencia del Código - Symbol boosting, análisis AST, firmas de funciones
- Multi-Proyecto - Soporte nativo para contexto entre diferentes bases de código
Resultado: Arquitectura optimizada para búsqueda semántica de código con métricas verificables.
┌──────────── Repo (git) ─────────-──┐
│ app/… src/… package.json etc. │
│ pampa.codemap.json │
│ .pampa/chunks/*.gz(.enc) │
│ .pampa/pampa.db (SQLite) │
└────────────────────────────────────┘
▲ ▲
│ write │ read
┌─────────┴─────────┐ │
│ indexer.js │ │
│ (pampa index) │ │
└─────────▲─────────┘ │
│ store │ vector query
┌─────────┴──────────┐ │ gz fetch
│ SQLite (local) │ │
└─────────▲──────────┘ │
│ read │
┌─────────┴──────────┐ │
│ mcp-server.js │◄─┘
│ (pampa mcp) │
└────────────────────┘
| Capa | Rol | Tecnología |
|---|---|---|
| Indexer | Corta código en chunks semánticos, embeds, escribe codemap y SQLite | tree-sitter, openai@v4, sqlite3 |
| Codemap | JSON amigable con Git con {file, symbol, sha, lang} por chunk | JSON plano |
| Chunks dir | Cuerpos .gz (o .gz.enc si está cifrado) (carga perezosa) | gzip → AES-256-GCM si está activo |
| SQLite | Almacena vectores y metadatos | sqlite3 |
| Servidor MCP | Expone herramientas y recursos sobre el protocolo MCP estándar | @modelcontextprotocol/sdk |
El servidor MCP expone las siguientes herramientas que los agentes pueden usar:
Busca código semánticamente en el proyecto indexado.
- Parámetros:
query(string) - Consulta de búsqueda semántica (ej: "función de autenticación", "manejo de errores")limit(number, opcional) - Número máximo de resultados (default: 10)provider(string, opcional) - Proveedor de embedding (default: "auto")path(string, opcional) - DIRECTORIO RAÍZ del proyecto donde está la base de datos PAMPA
- Ubicación DB:
{path}/.pampa/pampa.db - Retorna: Lista de chunks de código coincidentes con scores de similitud y SHAs
Obtiene el código completo de un chunk específico.
- Parámetros:
sha(string) - SHA del chunk de código a obtener (obtenido de search_code)path(string, opcional) - DIRECTORIO RAÍZ del proyecto (mismo que en search_code)
- Ubicación Chunk:
{path}/.pampa/chunks/{sha}.gzo{sha}.gz.enc - Retorna: Código fuente completo
Indexa un proyecto desde el agente.
- Parámetros:
path(string, opcional) - DIRECTORIO RAÍZ del proyecto a indexar (creará subdirectorio .pampa/)provider(string, opcional) - Proveedor de embedding (default: "auto")
- Crea:
{path}/.pampa/pampa.db(base de datos SQLite con embeddings){path}/.pampa/chunks/(chunks de código comprimidos){path}/pampa.codemap.json(índice ligero para control de versiones)
- Efecto: Actualiza base de datos y codemap
🔄 CRÍTICO: ¡Usa esta herramienta frecuentemente para mantener tu memoria de IA actualizada!
Actualiza el índice del proyecto después de cambios de código (herramienta recomendada de flujo de trabajo).
- Parámetros:
path(string, opcional) - DIRECTORIO RAÍZ del proyecto a actualizar (mismo que en index_project)provider(string, opcional) - Proveedor de embedding (default: "auto")
- Actualiza:
- Re-escanea todos los archivos en busca de cambios
- Actualiza embeddings para funciones modificadas
- Elimina funciones borradas de la base de datos
- Agrega nuevas funciones a la base de datos
- Cuándo usar:
- ✅ Al inicio de sesiones de desarrollo
- ✅ Después de crear nuevas funciones
- ✅ Después de modificar funciones existentes
- ✅ Después de eliminar funciones
- ✅ Antes de tareas importantes de análisis de código
- ✅ Después de refactorizar código
- Efecto: Mantiene la memoria de código de tu agente sincronizada con el estado actual
Obtiene estadísticas del proyecto indexado.
- Parámetros:
path(string, opcional) - DIRECTORIO RAÍZ del proyecto donde está la base de datos PAMPA
- Ubicación DB:
{path}/.pampa/pampa.db - Retorna: Estadísticas por lenguaje y archivo
Acceso al mapa de código completo del proyecto.
Resumen de las principales funciones del proyecto.
Plantilla para analizar código encontrado con enfoque específico.
Plantilla para encontrar funciones existentes similares.
- Búsqueda vectorial – Similitud coseno con embeddings avanzados de alta dimensionalidad
- Fallback de resumen – Si un agente envía una consulta vacía, PAMPA retorna los resúmenes de nivel superior para que el agente entienda el territorio
- Granularidad de chunk – Por defecto = función/método/clase. Ajustable por lenguaje
- Solo Node → Los devs ejecutan todo via
npx, sin Python, sin Docker - SQLite sobre HelixDB → Una base de datos local para vectores y relaciones, sin dependencias externas
- Codemap commiteado → El contexto viaja con el repo → clonar funciona offline
- Granularidad de chunk → Por defecto = función/método/clase. Ajustable por lenguaje
- Solo lectura por defecto → El servidor solo expone métodos de lectura. La escritura se hace via CLI
| Idea | Pista |
|---|---|
| Más lenguajes | Instala la gramática tree-sitter y agrégala a LANG_RULES |
| Embeddings personalizados | Exporta OPENAI_API_KEY o cambia OpenAI por cualquier proveedor que retorne vector: number[] |
| Seguridad | Ejecuta detrás de un proxy reverso con autenticación |
| Plugin VS Code | Apunta un cliente MCP WebView a tu servidor local |
- Fork → crear rama de feature (
feat/...) - Ejecutar
npm test(próximamente) &npx pampa indexantes del PR - Abrir PR con contexto: por qué + screenshots/logs
Todas las discusiones en GitHub Issues.
MIT – haz lo que quieras, solo mantén el copyright.
¡Feliz hacking! 💙
🇦🇷 Hecho con ❤️ en Argentina | 🇦🇷 Made with ❤️ in Argentina
