- Cursor рассказала о локальном индексировании для regex-поиска прямо в IDE.
- В крупных монорепозиториях обычный поиск по ripgrep может занимать 15+ секунд на один запрос.
- Индекс хранится локально в двух mmap-файлах и привязывается к конкретному git-коммиту.
Cursor сообщила, что ускорила regex-поиск в своей IDE с помощью локального индекса на устройстве пользователя. Подход уже описан в блоге компании. Он нужен для работы с большими кодовыми базами, где обычный запуск ripgrep, несмотря на высокую скорость, всё равно вынужден читать каждый файл и может занимать больше 15 секунд на один запрос.
В основе решения — триграммный инвертированный индекс, идея которого существует давно. Текст разбивается на все возможные последовательности из трёх символов, а затем для каждой такой последовательности сохраняется список файлов, где она встречается. Когда пользователь или AI-агент запускает regex-поиск, запрос раскладывается на набор триграмм. После этого система быстро отбирает только те файлы, которые с высокой вероятностью подходят под запрос, и уже по ним запускает обычный grep. Вместо просмотра тысяч файлов поиск сужается до небольшого числа кандидатов.
Поверх этого Cursor добавила sparse n-grams — более гибкий способ разбиения текста на фрагменты разной длины. Размер каждого такого фрагмента определяется детерминированно, например по crc32 или на основе частотной таблицы, собранной по большому объёму open-source-кода. При индексации создаются все возможные n-grams, а при поиске выбирается минимальный набор, который покрывает запрос. Это уменьшает число обращений к индексу и точнее ограничивает область поиска.
Компания отдельно объясняет, почему индекс хранится локально, а не на сервере. Во-первых, агенту всё равно нужен доступ к файлам на машине пользователя, чтобы проверить финальные совпадения. Во-вторых, дополнительная сетевая задержка сводит на нет выигрыш от ускорения. Сам индекс хранится в двух mmap-файлах — это способ работать с данными через отображение файлов в память — и привязывается к состоянию конкретного git-коммита, поверх которого учитываются ещё и незакоммиченные изменения.
Инструменты для разработки с AI всё активнее упираются не только в качество моделей, но и в скорость базовых операций по коду. Для IDE и агентных сценариев поиск по репозиторию становится одной из самых частых и дорогих операций.
Для разработчиков это должно сократить задержки при поиске по большим проектам прямо в IDE. Для AI-агентов это уменьшает время на серию повторяющихся regex-запросов, когда нужно быстро найти нужные файлы и участки кода.