Классический ripgrep работает быстро, но всё равно читает каждый файл. В крупных монорепо это стоит 15+ секунд на один вызов, а агент делает их десятками.

Решение взяли из 1993 года: тригрaмный инвертированный индекс. Любой текст разбивается на все возможные 3-символьные последовательности, они становятся ключами в словаре, значения — список файлов. Regex-запрос декомпозируется в набор тригрaм, пересечение posting lists даёт кандидатов, и уже по ним запускается grep. Вместо тысячи файлов — десяток.
Поверх этого добавили sparse n-grams: длина каждого n-gram определяется детерминированно через веса символьных пар (crc32 или частотная таблица по терабайтам open-source кода). При индексации генерируются все возможные n-grams, а при поиске — минимальное покрывающее множество. Получается меньше lookup'ов и точнее скоуп.
Индекс живёт на машине пользователя по двум причинам: агент всё равно должен читать файлы локально для финального матча, и задержка на network roundtrip убивает смысл оптимизации. Хранится в двух mmap-файлах, привязан к git-коммиту, поверх которого накладываются незакоммиченные изменения.
Источник: https://cursor.com/blog/fast-regex-search
Русскоязычное сообщество про AI в разработке

Друзья! Эту новость подготовила команда ТГК «AI for Devs» — канала, где мы рассказываем про AI-агентов, плагины для IDE, делимся практическими кейсами и свежими новостями из мира ИИ. Подписывайтесь, чтобы быть в курсе и ничего не упустить!
