Разработчик устраняет ошибки кода на ноутбуке — символ отладки потери контекста в Cursor и Claude Code в больших проектах

Вы просите Cursor Agent изменить модуль платежей в monorepo, а он правит DTO пользовательского центра. Claude Code выполняет двадцать раундов bash и забывает «никогда не импортировать внутренние legacy-пакеты напрямую». Это не внезапное «ослабление» модели — это самый частый сбой в больших проектах: потеря контекста.

В 2026 году и Cursor, и Claude Code рекламируют контекст на миллион токенов, но на реальных инженерных этажах «забыл нашу договорённость» всё ещё случается часто. Эта статья даёт повторяемый метод из пяти шагов: сначала классифицируйте, как потерялся контекст, затем по порядку проверьте бюджет, индекс, границы, соглашения репозитория и стратегию сессий. Версии инструментов на 2026-07-17 (Cursor 1.x, актуальный CLI Claude Code).

Краткий ответ: обзор пяти шагов

ШагЧто проверяетеТипичное действиеСигнал успеха
1. Классификация симптомовОбрезка сессии / промах индекса / правила не загруженыИспользуйте таблицу ниже — не меняйте модель первым деломПонятно, чинить «сессию» или «репозиторий»
2. Бюджет контекстаРаунды инструментов и авто-инъекция заполняют окноЗакройте лишние вкладки, уменьшите @-файлы, возьмите меньшую модель для разведкиМеньше повторных инструкций; diff перестают противоречить друг другу
3. Пересборка индекса.cursorignore, огромные каталоги, устаревший индексReindex; исключите node_modules / DerivedDataAgent сам находит нужный путь пакета
4. Границы задачиСлишком широкая область работыРабочая область подкаталога, явная @-цепочка вызовов, блок передачиИзменённые файлы остаются в ожидаемом модуле
5. Соглашения в репозиторииУстные правила не стали поисковым текстомAGENTS.md, .cursor/rules, разбиение длинных сессийНовые сессии соблюдают те же ограничения
Краткий ответ: потерю контекста редко лечат «переключением на Max-модель». Чаще всего это шум индекса, слишком широкая граница задачи или правила только в чате прошлой недели — записать соглашения в репозиторий надёжнее, чем забивать окно историей чата.

Что значит «потеря контекста» в большом проекте?

Сначала согласуем термины: длинное окно контекста отвечает на вопрос «поместится ли столько токенов прямо сейчас?» Эффективный контекст — «какие факты модель реально использовала для этого решения?» Разрыв между ними в больших репозиториях шире — см. нашу статью о долговременной памяти в AI-программировании.

Когда инженеры говорят, что контекст «потерялся», обычно это одна из трёх категорий:

ТипЧто видитеЧастая причинаПроверить сначала
A. Обрезка сессииОдин поток дрейфует; ранние ограничения отменяютсяМногораундовый вывод инструментов вытесняет ранние инструкции; compact / сводка теряет деталиШаги 2, 5
B. Промах индекса«Не могу найти модуль» / «считает, что таблицы нет»Слишком агрессивный ignore, устаревший индекс, слишком большой репо с шумным поискомШаги 3, 4
C. Правила не загруженыНовая сессия забывает стиль именования и запрещённые путиПравила только в чате; отсутствует или слишком длинный AGENTS.mdШаг 5
Контрпример: если репозиторий всего несколько тысяч строк с чёткими границами модулей, проверьте, не открыли ли вы не тот корень рабочей области (подпакет вместо корня monorepo) — это встречается чаще, чем кажется, и важнее слоёв памяти.

Шаг 1: Сначала классифицируйте — не считайте каждое «забыл» проблемой модели

При ошибке или абсурдном diff пройдите это дерево решений за 60 секунд:

  • Та же сессия противоречит сама себе? → Вероятно A обрезка сессии — шаг 2.
  • Новая сессия забывает договорённости? → Вероятно C правила не загружены — шаг 5.
  • Модель настаивает, что файла нет, а grep находит? → Вероятно B промах индекса — шаги 3–4.
  • Ошибка context length exceeded / prompt is too long? → Явная проблема бюджета — сразу шаг 2.

Cursor и Claude Code немного различаются: Cursor Composer / Agent автоматически подставляет открытые файлы и фрагменты индекса, поэтому IDE может «тихо раздуть» окно; терминальные Agent Claude Code чаще теряют промежуточные решения после длинных bash-цепочек + auto-compact. Сравнение инструментов — в гиде по выбору 2026.

Шаг 2: Проверьте бюджет контекста — большое окно не означает автоматическую экономию

Реальное потребление токенов в одной задаче Agent обычно складывается из: системного промпта + файлов правил + @-файлов + вывода инструментов (grep, логи тестов) + сводки истории. В monorepo TypeScript на 120k строк один запуск Cursor Agent, который автоматически читает восемь связанных файлов и гоняет полный набор тестов, легко даёт 80K–120K входных токенов — до повторных попыток.

2.1 На стороне Cursor

  • Закройте вкладки редактора, не связанные с задачей; не держите открытыми огромные JSON или lock-файлы.
  • Для разведки используйте модель с меньшим контекстом или обычный Chat; Agent открывайте, когда план ясен.
  • Не связывайте в одном Composer «рефакторинг + тесты + CI» — разбейте на три задачи с явным списком файлов.
  • Следите за Codebase indexing в Settings; при сбое индекса Agent откатывается к grep, и окно раздувается быстрее.

2.2 На стороне Claude Code

  • На длинных задачах следите за auto-compact; после compact вставьте фиксированный блок «нельзя нарушать».
  • Перенаправляйте огромный вывод команд в файл и просите Agent tail ключевых строк вместо 5000 строк лога в чат.
  • Перед /clear или новой сессией запишите выводы в HANDOFF.md или комментарий к issue.
СигналВероятная причинаДействие сейчас
Правки ухудшаются к концуРанние ограничения вытеснены из окнаНовая сессия + блок передачи + более короткая задача
Счёт API резко растёт на одной задачеПовторное чтение больших файлов / полный вывод тестовОграничьте область тестов; используйте head/tail
Ошибка «Context exceeded»Достигнут жёсткий лимитМеньше @-файлов, разбейте задачу, модель для разведки

Шаг 3: Пересоберите индекс и настройте ignore — помогите Agent «найти» код

Суть типа B: модель не отказывается искать — retrieval не доставил нужный файл.

3.1 Проверьте .cursorignore / .claudeignore

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

  • node_modules/, .git/, dist/, build/, DerivedData/
  • Каталоги с огромным сгенерированным кодом (если нужно править generated — явно @ один файл)
  • Бинарники и медиа-ресурсы

Не игнорируйте бездумно бизнес-пакеты с исходниками — многие команды исключают весь legacy/, а потом удивляются, почему Agent не видит слой совместимости.

3.2 Запустите reindex

Cursor: Settings → Indexing & Docs → Resync Index (формулировка зависит от версии). Первый полный индекс большого репо на M4 часто занимает 15–40 минут; если на ноутбуке параллельно Ollama + Xcode, имеет смысл индексировать на выделенном облачном узле Mac, чтобы избежать swap и таймаутов IDE и Agent — согласуется с выводами о памяти в наших бенчмарках AI-программирования на M4.

Совет для ops: команды могут в еженедельном CI запускать git ls-files | wc -l и сравнивать с числом проиндексированных файлов. При резком падении покрытия запланируйте общий Reindex вместо того, чтобы каждый перезапускал Cursor наугад.

Шаг 4: Задайте границы — «весь репозиторий сразу» — враг

Иногда потеря контекста — это на самом деле слишком широкое определение задачи: вы просите «оптимизировать платежи», а модель чуть-чуть трогает сорок пакетов.

4.1 Сузьте рабочую область

  • Используйте multi-root workspace VS Code / Cursor — откройте только apps/checkout + packages/payment-sdk.
  • Запускайте Claude Code в подкаталоге: cd apps/checkout && claude, чтобы посторонние пути не попадали в retrieval.

4.2 Явная @-цепочка вызовов

При изменении API @ как минимум: определение интерфейса → серверная реализация → один реальный вызывающий код → связанный тест. В full-stack репозиториях Vue + Spring Boot добавление @ по цепочке вызовов снизило «забыл фронтенд» примерно с 40% до менее 10% — более системный подход в нашем кейсе CodeGraph.

4.3 Шаблон блока передачи

Перед сменой сессии на длинной задаче вставьте фиксированную структуру:

## Handoff
- Goal:
- Done:
- Not done:
- Non-negotiable: (paths / naming / forbidden imports)
- Suggested files to open next:

Это лучше, чем «суммируй выше», потому что пункты проверяемы, а не проза, где теряются ограничения.

Шаг 5: Зафиксируйте соглашения в репозитории и научитесь разбивать сессии

Исправление типа C: сделайте правила частью репозитория, а не чата.

5.1 AGENTS.md и Cursor Rules

В корне репозитория поддерживайте короткие, actionable соглашения (цель — < 200 строк; при большем объёме разбейте):

  • Границы модулей и пути «не давать ИИ править» (например generated/, vendor/)
  • Стиль именования и обработки ошибок (по одному хорошему и плохому примеру)
  • Чеклист: какие слои менять при изменении API
  • Команды, которые обязательно запускать: pnpm test payment --filter=...

Cursor читает .cursor/rules; Claude Code — AGENTS.md и CLAUDE.md. Держите их фактически согласованными — противоречивые копии путают оба инструмента.

5.2 Когда разбивать сессии

СценарийРекомендация
Одна фича смержена; начинаете следующуюНовая сессия + Handoff
Agent три раза подряд не понимает задачуСтоп, напишите Handoff, сузьте @-область
Сработал compact / полоска контекста за половинуСохраните соглашения на диск перед продолжением
Продолжаете на следующий деньВсегда новая сессия + ссылка на PR/issue

Когда цепочки вызовов охватывают дюжину пакетов и @-файлов всё равно не хватает, тогда оцените инструменты графа знаний кода — это усиление после шага 5, а не первый ход.

Кейс: 45 минут на monorepo в 120k строк

Команда B2B SaaS (8 backend + 4 frontend) использует Cursor + Claude Code в pnpm monorepo (~118k LOC, 6 apps, 23 packages). Симптом: когда Agent правил billing-api, он снова и снова ломал экспорт типов из auth-middleware — и новые сессии повторяли это.

ПорядокНаходкаДействиеРезультат
Шаг 1Новые сессии тоже забывали правила → тип CПодтвердили отсутствие AGENTS.mdКорневая причина найдена
Шаг 3.cursorignore ошибочно исключал packages/authИсправили ignore + ReindexAgent мог ссылаться на middleware
Шаг 4Задача «fix billing» слишком широкаяОбласть сужена до billing + auth; @ тестыФайлов затронуто: с 19 до 6
Шаг 5Устные правила не были записаныДобавили AGENTS.md на 120 строк + CI-проверку границ importНеделю PR без регрессий того же класса

Они не перешли на более дорогую модель. Среднее число токенов на задачу упало ~на 35%, потому что Agent перестал гонять полный grep по репозиторию. Reindex и ночные тесты перенесли на облачный узел Macstripe 24GB; ноутбук только подключался по SSH для кода — предупреждения swap при индексации исчезли.

Чеклист самопроверки: 2 минуты перед стартом

  • ☐ Вы можете назвать, относится ли задача к типу A, B или C
  • ☐ В редакторе только нужные файлы; нет открытых огромных логов
  • .cursorignore не исключает бизнес-исходники
  • ☐ Индекс здоров или Reindex запланирован
  • ☐ Область workspace ≤ 2–3 связанных пакета
  • ☐ Ключевые файлы цепочки вызовов @ (включая один тест)
  • AGENTS.md перечисляет непреложные правила для этой задачи
  • ☐ Шаблон Handoff готов для длинной задачи

FAQ

Окно контекста заявлено как 200K — почему контекст всё равно теряется?

Окно — это потолок ёмкости, а не гарантия внимания. Многораундовые вызовы инструментов Agent вытесняют ранние инструкции из эффективного внимания; сводки compact теряют детали. Поисковые соглашения в репозитории надёжнее более длинной истории чата.

Кто чаще теряет контекст — Cursor или Claude Code?

Cursor чаще теряет границы из-за авто-инъекции в IDE и длинных цепочек Composer; Claude Code чаще теряет промежуточные решения после длинных bash-запусков и compact. Оба нуждаются в явных @, AGENTS.md и разбиении задач — ни один не «проще».

Влияет ли .cursorignore на ручные @-ссылки?

Ручной @ одного файла обычно всё ещё работает; ломается индексация всего репо и авто-поиск. Игнорируемые каталоги требуют явного @, иначе Agent не найдёт их сам.

Стоит ли добавить граф знаний кода?

Имеет смысл пилот, когда цепочки пересекают много пакетов, а @-файлов всё равно не хватает. Для небольших репо или чётких границ сначала AGENTS.md + CI дают лучший ROI.

Поможет ли смена Mac или переход в облако?

Это не увеличит контекст модели, но выделенный M4 на 24 ГБ снижает swap при индексации и тестах, избегая таймаутов Agent — и может быть общей средой команды для «тяжёлых» задач. Попробуйте посуточно, чтобы проверить.

Итог

«Потеря контекста» в Cursor / Claude Code в больших проектах — в основном инженерная проблема, а не то, что волшебно лечит новый тариф модели. Пройдите эти пять шагов — классификация симптомов → бюджет → пересборка индекса → границы → AGENTS.md и разбиение сессий — и вы обычно тратите меньше и получаете более стабильный результат, чем слепо включая Max mode.

  • Дрейф внутри сессии: уменьшите инъекцию, разбейте задачи, используйте Handoff.
  • Не находит файлы: исправьте ignore, Reindex, сузьте workspace.
  • Новая сессия забывает: зафиксируйте соглашения в репо; пусть CI их проверяет.

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

Читать также