Разработчики, открывающие настройки свежих версий Cursor в поисках кнопки «Resync» или статуса переиндексации проекта, обнаруживают, что привычных тумблеров больше нет ни в меню IDE, ни в палитре команд, ни в настройках агента. При этом в сети до сих пор гуляют устаревшие мануалы про облачные эмбеддинги. Ниже — разбор того, почему команда Cursor полностью вырезала старый семантический индекс, как теперь устроен локальный Instant Grep и почему .cursorignore стал еще более критичным для чистоты контекста.
Куда исчезла кнопка Reindex: отказ от серверных эмбеддингов
В ранних версиях редактора кодовая база индексировалась через классический облачный RAG: файлы нарезались на чанки, улетали на серверы Cursor, где для них генерировались векторные представления (embeddings). При расхождении кэша требовалось вручную нажимать кнопку «Resync» в настройках.
В актуальных версиях Cursor разработчики намеренно удалили семантический индекс и серверные базы эмбеддингов по трем причинам:
- Галлюцинации векторного поиска: семантический поиск по эмбеддингам хорош для документации, но в коде часто вытягивал внешне похожие, но архитектурно нерелевантные фрагменты из других модулей.
- Проблемы синхронизации: фоновая отправка тысяч файлов на удаленные серверы постоянно отставала от реального состояния веток в Git, вынуждая разработчиков искать кнопку ручного сброса.
- Эволюция моделей: современные frontier-модели (Claude 3.5 Sonnet, GPT-4o) с поддержкой Function Calling на порядки точнее находят код через детерминированный поиск по ключевым словам, AST и точным путям, чем через «размытые» векторы.
Именно поэтому кнопки «Reindex» больше нет — серверный индекс упразднен, и переиндексировать в облаке больше нечего.
Как устроен Instant Grep под капотом
Вместо облачных эмбеддингов агент теперь опирается на связку из двух инструментов: прямое чтение конкретных файлов и локальный поисковый движок Instant Grep.
Архитектура Instant Grep работает следующим образом:
- Локальное хранение: служебный индекс хранится не на серверах, а локально прямо внутри вашего репозитория по пути
.git/cursor/. - Инкрементальность: движок привязан к дереву коммитов Git. При сохранении файлов и переключении веток индекс автоматически и бесшумно пересчитывает только измененные дельты в фоновом потоке.
- Принудительный сброс: если вам по какой-то причине требуется жестко обнулить локальный поисковый кэш, достаточно удалить директорию
.git/cursor/в корне проекта — при следующем обращении к агенту она соберется заново с нуля.
Зачем нужен .cursorignore, если индекса больше нет
Если серверный векторный индекс удален, зачем настраивать .cursorignore? В новой архитектуре его роль стала еще более жесткой.
Когда агент пытается решить задачу в проекте, он запускает поиск через Instant Grep. Если репозиторий не изолирован, поисковый движок начнет грепать миллионы строк в директориях vendor/, node_modules/, логах и минифицированных бандлах. Агент получает простыню нерелевантных совпадений, сжигает свои шаги (tool calls) и засоряет контекстное окно сторонними библиотеками.
Движок Instant Grep соблюдает два уровня ограничений:
- Ваш штатный
.gitignore. - Файл
.cursorignoreв корне проекта — это жесткий фильтр (hard block) для всех внутренних поисковых инструментов редактора.
Минимальный рабочий набор правил для бэкенд-проекта:
# Зависимости
vendor/
node_modules/
# Логи и кэши фреймворков
storage/logs/
storage/framework/
*.log
# Билды и скомпилированные ассеты
public/build/
dist/
*.min.js
*.min.css
*.map
# Лок-файлы и Git
composer.lock
package-lock.json
pnpm-lock.yaml
.git/
Подхватывает ли Cursor универсальные скиллы и инструкции агентов
В современной разработке стандартом стало описание правил в виде кросс-платформенных Markdown-файлов: SKILL.md, каталоги .skills/, .agents/ или ARCHITECTURE.md. Разработчики держат эти правила универсальными, чтобы они работали одинаково в консольных агентах, CI-пайплайнах и различных редакторах без привязки к проприетарным настройкам одной среды.
В Cursor такой подход работает нативно благодаря связке Instant Grep и контекстного роутинга:
- Автоматическое обнаружение архитектурных стандартов: Агент в режимах Composer и Agent перед началом работы сканирует структуру проекта. Если в корне лежат понятные файлы архитектуры (например,
ARCHITECTURE.mdили папка.skills/), агент через Instant Grep находит их по ключевым словам задачи и учитывает зафиксированные соглашения. - Точечный вызов без раздувания контекста: В отличие от файла
.cursorrules, который редактор принудительно вклеивает в каждый системный промпт (сжигая токен-бюджет на нерелевантные для текущей подзадачи инструкции), универсальный скилл можно вызвать явно:@.skills/laravel-strict.mdпрямо в чате. Агент прочитает файл как актуальный контекст только для текущей сессии. - Zero Vendor Lock-in: Модели Claude 3.5 Sonnet и GPT-4o идеально считывают YAML-frontmatter и маркированные списки правил из обычных
*.mdфайлов. Требования вроде «валидация только через FormRequest, отсутствие статических фасадов» исполняются одинаково строго как в Cursor, так и в сторонних автономных тулчейнах.
Резюме
- Искать кнопку «Reindex» больше не нужно — облачный семантический индекс упразднен в пользу локального Instant Grep в
.git/cursor/. - Обновление поисковой базы происходит автоматически на основе Git-дерева; ручной сброс сводится к очистке локальной папки
.git/cursor/. - Файл
.cursorignoreобязателен для отсечения `vendor/` и логов, чтобы агент не сжигал вызовы инструментов на поиск по стороннему коду. - Универсальные markdown-скиллы нативно читаются агентом без необходимости дублировать их в специфичные форматы редактора.