Редакция PLPB ·

Как дать Cursor контекст кодовой базы: @Code, @File, @Folder и .cursorignore

Как управлять контекстом в Cursor: использовать @Code, @File и @Folder, добавлять нужные документы, исключать секреты через .cursorignore и не создавать лишний шум в запросе.

Короткий ответ

Контекст Cursor — это сведения, которые AI получает вместе с вашей задачей: код, файлы, структура проекта, ошибка, документация и ограничения. Начните с автоматического контекста, а затем добавляйте точные ссылки через @Code, @File и @Folder. Ненужные и чувствительные пути исключайте через .cursorignore, но не считайте его полной защитой от доступа терминала и MCP-инструментов.

Официальный гайд Cursor по работе с контекстом разделяет контекст на намерение — что вы хотите получить — и состояние — что сейчас происходит в проекте. Хороший запрос содержит оба слоя.

Из чего состоит хороший контекст

Намерение

Это действие и критерий результата:

text
Добавь проверку ответа API и сохрани текущий публичный интерфейс.

Состояние

Это конкретная информация, на которой нужно основывать решение:

text
Ошибка возникает при пустом поле email. Текущий обработчик находится
в auth/validate.ts, тесты — в auth/validate.test.ts.

Если дать только намерение, AI будет угадывать архитектуру. Если дать только состояние, он может не понять, что именно должно измениться. Объединяйте цель, файлы, ограничения и проверку.

Автоматический контекст

Cursor может сам искать релевантные участки кодовой базы, учитывать текущий файл и предыдущие сообщения. Это удобно, когда задача типовая и проект небольшой. Но автоматический подбор не гарантирует, что будет выбран именно тот модуль, который вы считаете главным.

Признаки, что контекст нужно уточнить:

в ответе упоминается несуществующий файл;
Cursor предлагает новый паттерн, хотя в проекте уже есть готовый;
игнорируется тест или тип, который вы ожидали увидеть;
Agent меняет слой, не связанный с задачей;
ответ звучит уверенно, но не содержит ссылок на реальные места.

В таких случаях добавьте явные @-ссылки и попросите сначала перечислить использованный контекст.

@Code: конкретный символ

@Code подходит, когда вы знаете имя функции, класса, типа или другого символа, но не хотите прикладывать весь файл. Это хороший выбор для вопроса о контракте или поведении одной сущности.

Пример:

text
@Code validateOrder
Объясни, какие состояния она принимает и где формируется ошибка.
Не меняй код.

Плюс такого подхода — точность. Минус — нужно знать имя символа и понимать, не зависит ли он от соседних типов или констант. Если зависимостей много, добавьте файл с реализацией и тест.

@File: конкретный файл

Используйте @File, когда важно прочитать целый модуль: компонент, обработчик, конфигурацию или тест. Это удобно, если вы знаете путь, но не уверены, какой именно фрагмент важен.

Пример:

text
@File app/api/orders/route.ts
Найди путь обработки ошибки оплаты и перечисли все внешние вызовы.
Не вноси изменения.

Для длинных файлов уточните, какой раздел нужно разобрать. Целый большой модуль может добавить много нерелевантного контекста.

@Folder: папка и структура

@Folder подходит, когда задача затрагивает каталог или несколько тесно связанных файлов. Cursor получает путь и обзор содержимого; в настройках может быть доступен режим полного содержимого папки. На больших каталогах это увеличивает объём контекста, поэтому включайте полный режим только при понятной необходимости.

Пример:

text
@Folder components/checkout
Опиши, где находятся форма, валидация и запрос API.
Предложи минимальный план изменения без редактирования.

Для монорепозитория лучше начать с узкой папки, а не прикладывать весь src.

Другие @-источники

В зависимости от текущего режима и версии Cursor могут быть доступны ссылки на документацию, Git-изменения, веб-страницы и правила проекта. Смысл один: передать AI источник, который вы хотите обсуждать, вместо длинной ручной вставки.

Если нужно объяснить библиотечный API, лучше добавить официальную документацию и указать версию зависимости. Если нужно понять регрессию, приложите diff и тест, который падает.

.cursorignore: что исключать

Создайте в корне проекта файл .cursorignore в формате, близком к .gitignore:

text
# Секреты и учётные данные
**/.env
**/.env.*
**/credentials.json
**/*.pem
**/*.key

# Сгенерированные и тяжёлые каталоги
node_modules/
.next/
dist/
coverage/
**/*.log

Официальная справка Cursor по ignore-файлу указывает, что .cursorignore ограничивает доступ к перечисленным путям для Agent, Tab, Inline Edit и @-ссылок. Одновременно она предупреждает: терминал и MCP-серверы Agent не блокируются этим файлом.

Поэтому .cursorignore не заменяет:

секретное хранилище;
права операционной системы;
ограничение окружения выполнения;
ротацию случайно раскрытого ключа;
проверку команд перед запуском.

Как написать запрос с точным контекстом

Используйте шаблон:

text
Цель: [что должно измениться]
Контекст: @File ... @Code ... @Folder ...
Ограничения: [что нельзя менять]
Критерий готовности: [какая проверка должна пройти]
Сначала: [объясни / составь план / предложи diff]

Пример для отладки:

text
Цель: найти причину 500 при пустом customerId.
Контекст: @File app/api/orders/route.ts @File lib/orders.ts
Ограничения: не менять схему базы и публичный ответ успешного запроса.
Критерий готовности: добавить регрессионный тест и запустить текущую проверку.
Сначала объясни цепочку вызовов, без правок.

Чего не стоит делать

Прикладывать весь репозиторий

Большой объём не равен хорошему контексту. Начните с точки входа и ближайших зависимостей.

Смешивать несколько задач

Запрос «перепиши авторизацию, обнови дизайн и исправь CI» сложно проверить. Разделите его на этапы.

Просить прочитать секретный файл

Если в конфигурации есть ключи, замените их на плейсхолдеры и опишите форму данных.

Путать контекст и разрешение на действие

Переданный файл — это источник информации, а не автоматическое разрешение его изменять. В запросе явно указывайте, что можно редактировать.

Связь с Agent и Rules

Контекст одного запроса — краткосрочный. Если инструкция должна применяться к проекту постоянно, вынесите её в Rules или AGENTS.md. Если нужно поручить задачу на несколько файлов, используйте Agent. Полное объяснение этих режимов — в гайде по работе с Cursor и статье про Cursor Rules.

Как понять, что контекста недостаточно

Недостаток контекста заметен не только по ошибке в коде. Cursor может:

предложить уже существующий в проекте, но другой паттерн;
проигнорировать тип, который ограничивает решение;
перепутать тестовый и production-обработчик;
сослаться на устаревший файл;
добавить новую зависимость вместо использования текущей.

В такой ситуации не добавляйте сразу весь репозиторий. Сначала попросите назвать предположения, затем приложите один источник, который их проверяет: @File, @Code, тест, лог или документацию.

Схема контекста для разных задач

Рефакторинг функции

Передайте @Code функции, @File с тестами и опишите неизменяемый публичный контракт.

Ошибка API

Добавьте маршрут, сервис, тип ответа, текст ошибки и шаг воспроизведения. Не прикладывайте .env и реальные токены.

Изменение UI

Передайте компонент, родительский layout, существующий похожий компонент и скриншот или описание состояния. Укажите, какие стили нельзя менять глобально.

Миграция

Приложите текущую схему, миграции и команду проверки. Запретите выполнять миграцию на рабочей базе без отдельного подтверждения.

@Folder и полный контент

По официальной справке Cursor про файлы и папки, ссылка на папку по умолчанию передаёт путь и обзор содержимого. В некоторых режимах можно включить полный контент папки. Это удобно для небольшого каталога, но на большой папке увеличивает объём запроса и расход использования.

Практическое правило: начинайте с обзора, затем добавляйте отдельные файлы. Полное содержимое включайте только для компактной папки, где большая часть файлов действительно нужна для задачи.

Ignore-файлы и двойная проверка

Помните о трёх разных задачах:

.gitignore управляет Git и частью стандартного поиска;
.cursorignore ограничивает контекст Cursor;
права операционной системы ограничивают процессы.

Они не взаимозаменяемы. Проверьте каждый слой отдельно и не кладите секреты в проект в открытом виде «потому что файл исключён».

Контекст после изменения проекта

После крупного рефакторинга старые сообщения могут содержать устаревшие предположения. Начните новый запрос с короткого описания текущего состояния, приложите свежий diff и попросите перечитать канонические файлы. Это полезнее, чем продолжать длинную цепочку, где Cursor уже опирается на старую структуру.

Частые вопросы (FAQ)

Что лучше выбрать: @Code или @File?

@Code — для конкретного символа. @File — когда важен весь модуль или вы не знаете, какой фрагмент внутри него определяет поведение.

Когда нужен @Folder?

Когда задача относится к каталогу и нескольким связанным файлам. Начинайте с узкой папки, чтобы не добавлять лишний контекст.

Видит ли Cursor файлы из .cursorignore?

Обычные AI-контекстные функции должны исключать перечисленные пути, но терминал и MCP-инструменты имеют отдельные правила доступа. Не храните секреты в рабочем окружении без дополнительной защиты.

Нужно ли вручную добавлять файл в каждый запрос?

Нет. Автоматического контекста часто достаточно для простых задач. Явные @-ссылки нужны, когда важно направить поиск или исключить ошибочную интерпретацию.

Как проверить, какой контекст использован?

Попросите Cursor перечислить файлы и символы, на которых основан ответ, затем сравните их с задачей.

Можно ли добавить в контекст документацию?

Да, если текущий режим поддерживает ссылку на документацию или веб-страницу. Используйте первичный источник и укажите версию библиотеки или продукта.

Нужен доступ к сервису?

Выберите товар в каталоге, оформите заказ и оплатите его на сайте. Дальнейшие шаги появятся в чате заказа.

Каталог подписок

Вопросы: help@plpb.tech