# Управление контекстом

Каждый сеанс Claude Code работает в **контекстном окне**. Понимание принципов работы контекста поможет вам эффективнее использовать Claude и избежать ошибок, вызванных переполнением контекста.

## Понимание контекстного окна

Claude Code по умолчанию использует контекстное окно в **200 000 token**. Модели Opus 4.8 и Sonnet 4.6 поддерживают расширение до **1 миллиона token (1M context)**.

Контекст включает:
- Всю историю диалога (ваши вопросы + ответы Claude)
- Содержимое файлов, добавленных через `@`
- Входные данные и результаты вызовов инструментов
- Системные подсказки и содержимое CLAUDE.md

По мере продолжения диалога контекст постоянно растёт. Когда контекст приближается к лимиту, скорость ответов Claude может снижаться, и в конечном счёте сработает автоматическое сжатие или возникнет ошибка.

## Сжатие контекста: /compact

Команда `/compact` сжимает текущую историю диалога в краткое резюме, освобождая пространство контекста и сохраняя при этом важную информацию.

```
/compact
```

Вы также можете добавить пользовательские инструкции для управления фокусом сжатия:

```
/compact сохранить все примеры кода и список выполненных задач
```

**Механизм автоматического сжатия**: Claude Code по умолчанию автоматически запускает сжатие при достижении контекстом **95% ёмкости**. Вы также можете запустить `/compact` заблаговременно при заполнении контекста на 70-80%, не дожидаясь последнего момента.

## Очистка истории: /clear

Команда `/clear` удаляет всю историю диалога и начинает новый сеанс:

```
/clear
```

> **Примечание**: `/clear` удаляет весь контекст, включая информацию о проекте, которую уже усвоил Claude. Подходит для переключения на совершенно новую несвязанную задачу.

## Просмотр состояния контекста: /context

Используйте команду `/context` для просмотра текущего использования контекста:

```
/context
```

## Ссылки на файлы через @

Используйте символ `@` для добавления содержимого файлов в контекст:

```
@src/main.ts объясни функциональность этого файла
@package.json проверь версии зависимостей
@README.md
```

**Лучшие практики**:
- Добавляйте только файлы, связанные с текущей задачей, избегая лишнего контекста
- Большие файлы быстро расходуют пространство контекста, отдавайте приоритет ключевым файлам
- Используйте `CLAUDE.md` для предоставления контекста проекта, а не повторяйте его в каждом диалоге

## Ввод через конвейер

Передавайте вывод команд или содержимое файлов в Claude через конвейер:

```bash
# Передать содержимое файла
cat error.log | claude "проанализируй эту ошибку"

# Передать вывод команды
git diff | claude "сгенерируй сообщение коммита"

# Многострочный ввод
echo "Пожалуйста, проанализируй следующий код:
$(cat src/utils.ts)" | claude
```

## Предотвращение переполнения при длительных сеансах

### Симптом: E015 Internal server error

Когда контекст диалога приближается к пределу ёмкости модели (~95%), API Anthropic возвращает ошибку 500. QCode.cc преобразует её в ответ 429:

```
429 {"error":{"code":"E015","message":"Internal server error"},"status":500}
```

Это известное поведение API Anthropic (не уникальная проблема QCode.cc). QCode.cc преобразует вышестоящие ошибки 5xx в ответы 429, чтобы задействовать встроенный механизм повторных попыток Claude Code.

### Шаги по устранению

1. **Попробуйте `/compact`**:
   - Если успешно, диалог может продолжаться в обычном режиме
   - Если `/compact` сам выдаёт ошибку (запрос на сжатие тоже требует отправки полного контекста), выполните следующий шаг

2. **Выйдите и перезапустите Claude Code**:
   ```bash
   # Нажмите Ctrl+C или введите /exit
   # Затем перезапустите
   claude
   ```

### Рекомендации по предотвращению

- **Регулярное сжатие**: запускайте `/compact` заблаговременно при заполнении контекста на 70-80%, не дожидаясь переполнения
- **Декомпозиция задач**: разбивайте большие задачи на несколько небольших, используя отдельный сеанс для каждой
- **Используйте CLAUDE.md вместо повторного копирования**: записывайте контекст проекта в `CLAUDE.md` — Claude автоматически прочитает его при запуске, без необходимости повторно предоставлять в каждом диалоге
- **Избегайте добавления больших файлов**: каждый добавленный большой файл расходует значительное количество контекста, отдавайте приоритет ключевым фрагментам
- **Используйте `/cost` для мониторинга**: команда `/cost` позволяет просмотреть расход token в текущем сеансе

## Краткий справочник команд

| Команда | Действие |
|------|------|
| `/compact` | Сжать контекст (сохранить резюме) |
| `/clear` | Очистить весь контекст |
| `/context` | Просмотреть состояние контекста |
| `/cost` | Просмотреть расход token |
| `@путь_к_файлу` | Добавить файл в контекст |
## Иерархия контекстной инженерии

«Контекстная инженерия» означает осознанную организацию того, что Claude читает при каждом запросе — размещение ценной, стабильной информации на первом плане и отсечение шума. Контекст Claude Code следует чёткой **иерархии приоритетов** (от высшего к низшему):

1. **Корпоративная / управляемая политика** — правила, спускаемые организацией. Высший приоритет; отдельный пользователь не может их переопределить.
2. **Память проекта `CLAUDE.md` / `AGENTS.md`** — инструкции уровня проекта в корне репозитория, описывающие соглашения по коду, команды сборки и контекст проекта.
3. **Правила с привязкой к пути** — вложенные файлы `CLAUDE.md` или `.claude/rules` в подкаталогах, действующие только на работу в пределах этого пути.
4. **Живая история диалога** — обмен сообщениями в текущем сеансе. Низший приоритет и та часть, которая чаще всего разрастается.

Понимание этой иерархии помогает размещать инструкции в **правильном месте**: общие соглашения — в `CLAUDE.md` уровня проекта, специфичные для каталога правила — в правилах с привязкой к пути, а не повторять их в каждом диалоге.

### Практические рекомендации

- **Держите инструкции краткими и содержательными**: чем лаконичнее ваш `CLAUDE.md`, тем легче Claude их соблюдать; длинное, не относящееся к делу содержимое размывает ключевые инструкции.
- **`/compact` в логических точках**: сжимайте историю после завершения этапа — длинные, расфокусированные диалоги снижают точность.
- **`/clear` между несвязанными задачами**: очищайте историю при переключении на совершенно новую задачу, чтобы старый контекст не мешал.
- **Ссылайтесь по пути вместо вставки**: используйте `@путь_к_файлу`, чтобы Claude читал файлы по мере необходимости, вместо того чтобы вставлять большие блоки в диалог — это экономит контекст и повышает точность.
- **Размещайте стабильное содержимое в начале**: неизменное содержимое — системные подсказки, `CLAUDE.md`, большие блоки фоновой информации — должно идти первым и не редактироваться часто, чтобы попадать в **кэширование подсказок** (чтение из кэша стоит примерно 10% от обычного ввода). Именно поэтому краткий, стабильный `CLAUDE.md` и повторное использование сеансов экономят деньги.

Коротко: погружайте стабильное, ценное содержимое в верх иерархии и не меняйте его, а изменчивую историю диалога периодически сворачивайте. Подробнее см. [Память проекта CLAUDE.md](/docs/usage/claude-md) и [Оптимизация затрат](/docs/usage/cost-optimization).