Volver al inicio

Índices de Trigramas de Cursor para Búsqueda Regex Rápida

Cursor implementó índices de trigramas locales para acelerar la búsqueda regex en IDE. La tecnología usa n-gramas dispersos y archivos mmap vinculados al commit de git. La aceleración alcanza 100x en grandes monorepos.

Cursor: trigramas y mmap para búsqueda instantánea en IDE
Advertisement 728x90

Los índices locales de trigramas de Cursor aceleran la búsqueda regex en repositorios grandes

Cursor ha implementado índices locales para búsqueda regex directamente en el IDE. Esto soluciona el problema del escaneo lento en grandes monorepos, donde ripgrep clásico tarda 15+ segundos por llamada, y el agente de IA genera docenas de tales consultas.

La tecnología se basa en el índice invertido de trigramas de 1993. El texto se descompone en todas las secuencias de 3 caracteres (trigramas), que sirven como claves en un diccionario. Cada clave corresponde a una lista de archivos que contienen esa secuencia. La consulta regex se descompone en un conjunto de trigramas, se intersectan las listas de postings para seleccionar candidatos. Luego se aplica grep solo a una docena de archivos en lugar de miles.

N-gramas dispersos para un ámbito preciso

Sobre el índice base, se añaden n-gramas dispersos. La longitud de cada n-grama se calcula de forma determinística: usando pesos de pares de caracteres basados en crc32 o una tabla de frecuencias construida a partir de terabytes de código de fuente abierta.

Google AdInline article slot

Durante el indexado, se generan todos los posibles n-gramas; durante la búsqueda, un conjunto de cobertura mínima. Esto reduce el número de búsquedas y mejora la precisión del filtrado.

// Example dekompozitsii regex in n-grams
regex: \w+@\w+\.com
n-grams: ['@', 'w+', '.c', 'com', ...]  // sparse pokryodkrycie
candidates = intersect(postings(ngrams))

Almacenamiento local y vinculación a commits

El índice se almacena localmente en la máquina del usuario en dos archivos mmap. Razones:

  • El agente de IA aún lee archivos localmente para la verificación final de todos modos.
  • Las idas y venidas por red destruyen la ganancia de velocidad.

El índice está ligado a un commit git específico. Los cambios no confirmados se superponen encima sin reconstruir.

Google AdInline article slot
  • Ventajas de mmap: carga sin sobrecarga, navegación rápida a través de listas de postings.
  • Actualización: se activa en git pull/push o reconstrucción manual.
  • Tamaño: proporcional al codebase; para 10M LoC — ~500MB.

Comparación de rendimiento

| Enfoque | Tiempo por consulta (10k archivos) | Candidatos para grep |

|---------------|------------------------------------|----------------------|

| ripgrep | 15–20 seg | 10k |

Google AdInline article slot

| Índice Cursor | 50–200 ms | 10–50 |

En escenarios reales con 100+ consultas del agente, la aceleración general alcanza 100x.

Los trigramas aseguran completitud (recall=1 para subcadenas exactas), mientras que los n-gramas dispersos añaden precisión sin falsos positivos.

Puntos clave

  • Índice de trigramas reduce candidatos de miles a docenas de archivos.
  • N-gramas dispersos minimizan búsquedas vía conjunto de cobertura mínima.
  • Almacenamiento mmap local elimina retrasos de red.
  • Vinculación a commit git con superposición de cambios no confirmados.
  • Aceleración 100x para búsqueda regex de agentes de IA en grandes monorepos.

— Editorial Team

Advertisement 728x90

Leer después