Перейти к содержимому

Контекст ИИ-агента: как управлять памятью и экономно тратить токены

Кодинг-агент отработал 40 минут над рефакторингом, и на 41-й выдаёт странное предложение — как будто забыл всё, что делал ранее. Это не баг модели: агент переслал 14 534 токена на «привет» в Codex, а на 417-м ходу контекст заполнился настолько, что модель начала терять нити. Разработчик Mohammed Reschreiter сократил этот «пустой» расход на 80% — и в статье покажем, как.

Что такое контекст агента и почему это считается

Контекст — это всё, что модель видит при каждом запросе: системный промпт, определения инструментов, история диалога, содержимое прочитанных файлов. Модель ничего не «помнит» между ходами. Каждый раз она получает полный «мешок» текста и генерирует ответ заново (Claude Code Docs, Explore the context window).

Размер контекстного окна задаёт потолок — но не гарантию качества. Когда окно заполняется на 40–50%, деградирует внимание модели: она пропускает инструкции, путает переменные, галлюцинирует имена файлов. Автор одной из частых статей на Хабре формулирует проблему прямо:

Мы складываем состояние задачи в историю чата и надеемся, что модель удержит его сама. Не удержит.

«Проблема не в промпте: как Claude Code плывет на длинных задачах», Habr, март 2026

Чем больше окно, тем дольше агент может работать без потери качества. Но и тем дороже каждый ход: агент пересылает весь контекст при каждом запросе к модели.

Контекстные окна: сравнение моделей на момент публикации

Модель Нативное окно Расширяемое до Где используется
Claude Opus 5 1M токенов Claude Code, API
Claude Sonnet 5 1M токенов Claude Code, API
Claude Fable 5 1M токенов Claude Code
GLM-5.3 1M токенов Open-weight, Claude Code, Ollama
Qwen3.8-Flash-Next 262 144 1M токенов Ollama, vLLM, SGLang
GPT-5.6 258 000 Codex, API

Данные по Claude — из документации Claude Code, по GLM-5.3 — из карточки модели на Hugging Face, по Qwen3.8-Flash-Next — из карточки модели, по Codex — из кейса m-reschreiter (контекст 258K в Codex CLI).

Миллион токенов — это примерно 750 000 слов, или ~2000 страниц текста. Звучит много, но агент съедает это быстрее, чем кажется: один файл на 500 строк — это ~3 000 токенов, вывод тестов — ещё 1 000–5 000, каждая итерация тула — от 500 до 10 000. На практике агенты работают в окне от 200K до 1M и ограничиваются компакцией задолго до лимита.

Из чего состоит контекст: реальные цифры

Автор Mohammed Reschreiter провёл бенчмарк: отправил одно слово «hi» четырём разным агентам и посмотрел, сколько токенов потрачено до первого реального действия (m-reschreiter.at):

Агент Тулов на старте Токены turn zero % от окна
Codex 79 (100+ с плагинами) 14 534 6.0% (из 258K)
Antigravity (Gemini) 17 19 900
Claude Code 8–10 встроенных (30–40+ с MCP) 3 500–14 000+
Pi (4 тула) 4 3 600 1.3% (из 272K)

Antigravity с 17 тулами потратил больше Codex с 79 — потому что «лишние» тулы в Antigravity не дублируют shell-команды, а каждый несёт полную JSON-схему с описаниями параметров. Ключевая проблема: на 90% ходов агенту нужны только базовые операции (чтение, запись, shell), но все схемы загружаются и оплачиваются на каждом ходу.

Схема: из чего складывается контекст агента и реальные цифры turn zero
Схема автора: компоненты контекстного окна (слева) и реальные данные turn zero для четырёх агентов (справа). По материалам m-reschreiter.at.

Кейс m-reschreiter: минус 80% контекстного оверхеда

Mohammed Reschreiter (автор denkr.ai и агента Pi) опубликовал детальный разбор 28 августа 2026 (оригинал, обсуждение на HN). Публикация вызвала дискуссию — в частности, вопрос о влиянии на промпт-кеширование (об этом — ниже).

Проблема

Каждый агент при старте загружает JSON-схемы всех доступных тулов. В Codex это 79 инструментов с полными описаниями параметров. Даже если агенту нужны только read/bash/edit/write, модель «видит» модули управления сайтами, спавнеры подагентов, редакторы изображений и плагины безопасности. Reschreiter называет это «attention dilution» — переполнение пространства решений неактуальными опциями.

Решение: два принципа

Принцип 1. Консолидация по действию вместо CRUD. Вместо четырёх отдельных тулов (memory_read, memory_write, memory_update, memory_delete) — два: memory_read (поиск и получение) и memory_write с параметром action (create | update | delete). Схема одного тула на 15–20% больше, чем одного CRUD-тула, но заменяет три определения. Экономия на схемах — ~50%.

Принцип 2. Динамическая загрузка тулов. Вместо постоянного подключения всех инструментов — старт с четырьмя базовыми (read, bash, edit, write). Остальные тулы переходят в режим «standby» и активируются по demand через команду в shell:

pi-tool activate browser_use

При активации схема тула добавляется в контекст. Через 2 хода неиспользования TTL-счётчик обнуляет тул и контекст сжимается обратно. Вместо JSON-схемы в 500+ токенов для standby-тула — одна строка текста (~5–10 токенов) в списке доступных инструментов.

Результаты за 417 ходов

Метрика Статичный подход (Codex) Pi + динамические тулы Сокращение
Turn zero overhead 14 500–19 900 3 600 –75% до –82%
Активных схем 17–79+ 4 базовых –76% до –95%
Ходов с кэш-миссом из-за тулов 5 из 417 (1.2%)

За сессию из 417 ходов с 669 вызовами тулов — 98.1% операций прошли через 4 базовых инструмента. Динамическая активация тулов вызвала кэш-мисс всего 5 раз за всю сессию (оригинал).

До и после: сокращение контекста агента
Схема автора: сравнение «до» (статичный набор из 79 тулов) и «после» (динамическая загрузка с 4 базовыми). По материалам m-reschreiter.at.

Возражение с HN: а кэш?

На HN один из комментаторов высказал сомнение: каждое подключение/отключение тула ломает кэш-префикс (тред). Другой добавил: удаление тулов — «instant cache nuke». Reschreiter ответил телеметрией: активация тулов отвечала за 1.2% кэш-мисс (5 из 417 ходов). Основные причины сброса кэша — компакция и чтение больших файлов (40%), смена модели (20%) и idle-timeout (13%). Подробнее про механику кэша — в статье «Промпт-кеширование: как экономить на API агентов».

Паттерны, которые работают

1. AGENTS.md как постоянный контекст

Файл AGENTS.md (или CLAUDE.md в Claude Code) загружается в начале каждой сессии и переживает компакцию. Это единственный способ гарантированно донести до агента правила, которые не потеряются при сжатии контекста.

Иерархия файлов в Claude Code (документация):
Организация/Library/Application Support/ClaudeCode/CLAUDE.md (macOS), все сотрудники
Пользователь~/.claude/CLAUDE.md, все проекты
Проект./CLAUDE.md, команда через git
Локальный./CLAUDE.local.md, только вы

Аналогичные файлы существуют у других агентов: Codex читает AGENTS.md, OpenCode — AGENTS.md и CLAUDE.md. Стандарт описан в статье «AGENTS.md: файл-конвенций, который понимают все AI-агенты».

Практическое правило: держите файл короче 200 строк. Всё, что не касается всего проекта — выносите в path-scoped rules или скиллы, чтобы грузилось по требованию, а не тратило контекст на каждом ходу.

2. Компакция: сжатие контекста на лету

Компакция заменяет историю диалога структурированным резюме. В Claude Code команда /compact, в Codex — автоматическая при приближении к лимиту. Что происходит после сжатия (документация):

Что было После компакции
Системный промпт Не меняется
Корневой CLAUDE.md Перечитывается с диска
Вложенные CLAUDE.md Потеряны до повторного чтения
Skill-инструкции Перечитываются (лимит 5 000 токенов/скилл)
Прочитанные файлы Claude перечитывает до 5 последних

Приём с фокусом: запускайте компакцию с указанием, что важно сохранить:

/compact focus on the auth bug fix и список изменённых файлов

Без фокуса автоматическая компакция выбирает, что оставить, по своим эвристикам — и может выбросить как раз то, что вам нужно.

Команда /autocompact 500k позволяет запускать компакцию раньше — при 500K токенах вместо лимита модели. Полезно, если вы замечаете деградацию качества до заполнения окна.

3. Сабагенты: изоляция тяжёлых задач

Сабагент работает в собственном контекстном окне. Когда вы делегируете ему исследование большого файла или поиск по кодовой базе — основное окно остаётся чистым. В родительскую сессию возвращается только резюме.

Используй сабагентов, чтобы исследовать, как система аутентификации
обрабатывает обновление токена и есть ли готовые OAuth-утилиты.

Подход m-reschreiter идёт дальше: динамическая активация тулов работает в сабагентах аналогично основной сессии — по 4 базовых тула на агента, специализированные — по demand.

4. /clear между задачами

Самый недооценённый инструмент. Старая история не просто занимает окно — она стоит токенов на каждом ходу. Один вопрос «а что там с ошибкой?» в сессии, открытой весь день, пересылает контекст за весь день. Команда /clear обнуляет историю, сохраняя только системный промпт и файлы памяти (документация).

5. Точечные инструкции вместо размазанных

m-reschreiter фиксирует ещё один паттерн: моделям «нравится overthinking». Когда агенту даётся размытая задача, модель начинает «исследовать» контекст, читает лишние файлы, генерирует промежуточные резюме — и сжирает окно. Решение — формулировать задачу точно:

Размыто Точно
«Исправь баг в авторизации» «Добавь проверку refresh_token в middleware/auth.py:37. Если token пустой — верни 401»
«Улучши тесты» «Добавь 3 теста в test_auth.py: edge cases для expired, malformed и отсутствующего токена»

Точная инструкция = меньше ходов = меньше контекста = ниже стоимость.

Практика по инструментам

Claude Code

  • /context — показывает, что занимает окно
  • /compact [фокус] — сжатие с указанием приоритетов
  • /clear — обнуление истории между задачами
  • /autocompact 500k — досрочная компакция
  • Сабагенты — автоматические при исследовании больших файлов
  • Deferred Tool Loading — автоматическая отложенная загрузка тулов при превышении 10% окна (документация)

Подробнее про контекст Claude Code — в статье «Контекст Claude Code: как управлять памятью агента».

Codex (OpenAI)

Codex загружает все подключённые тулы при старте сессии. На момент публикации (Codex 0.151.0) — 79 тулов по умолчанию, 100+ с плагинами и MCP-серверами. Контекстное окно — 258K токенов (GitHub Releases).

Приёмы экономии:
— Отключайте неиспользуемые MCP-серверы до старта сессии
— Используйте extensions для фильтрации результатов тулов — Codex 0.151.0 позволяет перехватывать MCP tool results (Changelog)
— Начинайте новую сессию при смене задачи

OpenCode

OpenCode поддерживает файлы AGENTS.md и CLAUDE.md, подключение провайдеров через Zen. Контекстное окно зависит от выбранной модели. Приёмы те же: короткие файлы памяти, /clear между задачами, делегирование сабагентам.

Промпт-кеширование и контекст

Длинные сессии без кэширования были бы разорительными: агент пересылает весь контекст на каждом ходу, и за 50 ходов с контекстом 200K токенов набегает 10 миллионов входных токенов. С кэшированием по префиксу (Anthropic: чтение за 0.1× от ставки входа) тот же объём обходится в ~$2.4 вместо $20 (блог Anthropic).

Ключ к кэшу — стабильный префикс: системный промпт и определения тулов не меняются, а история растёт в хвосте. Динамическая загрузка тулов (кейс m-reschreiter) затрагивает префикс, но телеметрия показывает: 98.8% ходов шли с нулевым штрафом за тулы (оригинал).

Детальный разбор ставок и механики — в статье «Промпт-кеширование: как экономить на API агентов».

Российские реалии

Тема оптимизации контекста в рунете освещена — в основном для Claude Code:

Отдельного русскоязычного разбора динамической загрузки тулов и оптимизации контекста для «общих» агентов (не только Claude Code) на момент публикации нет.

Доступность агентов из РФ:

Инструмент Доступ из РФ Оплата
Claude Code Без VPN не запустится (Anthropic не поддерживает РФ) Карты РФ не работают; UnionPay/крипта/юрлицо за рубежом
Codex Нужен аккаунт OpenAI (РФ не в списке поддерживаемых) Аналогично
OpenCode Работает без VPN, подключает бесплатные модели через Zen Бесплатно через провайдеры
Локальные модели (Ollama) Без ограничений Только железо

Обзор способов оплаты — в статье про установку Claude Code и в практическом опыте «Как стать вайбкодером». Для старта без VPN и зарубежных карт подойдёт OpenCode с бесплатными моделями или локальные модели через Ollama — обзор в статье про локальные нейросети для кодинга.

Честные ограничения

  • Миллион токенов — не бесконечная память. Даже 1M контекста деградирует по мере заполнения. Это просто больший запас, а не решение проблемы.
  • Компакция — потеря данных. Резюме не хранит всех деталей. Вложенные CLAUDE.md и path-правила теряются до повторного чтения файла.
  • Динамическая загрузка тулов — не готовое решение для всех. Кейс m-reschreiter реализован на Pi (open-source агент с lifecycle-хуками). Claude Code и Codex не дают прямого контроля над набором тулов — Deferred Tool Loading работает автоматически и не настраивается.
  • Агенты разных поколений — разные окна. Codex с 258K и Claude Opus 5 с 1M — разница в 4 раза. Тот же код, те же файлы, разная ёмкость контекста.
  • Overthinking — проблема промпта, а не контекста. Точная инструкция снижает расход токенов больше, чем любая техническая оптимизация.
  • Из РФ — двойное ограничение. Технические проблемы контекста не исчезают, к ним добавляется доступ к самим сервисам.

Вывод

Контекст — главный ресурс кодинг-агента: он конечен, дорожает по мере заполнения и теряет детали при компакции. Три уровня оптимизации:

  1. На уровне инструмента: короткие файлы AGENTS.md (менее 200 строк), /clear между задачами, /compact с фокусом, делегирование сабагентам
  2. На уровне архитектуры: консолидация CRUD-тулов в action-based, динамическая загрузка инструментов по demand (как в Pi), отключение неиспользуемых MCP-серверов
  3. На уровне промпта: точные инструкции вместо размытых, ограничение scope задачи, избегание overthinking

Кейс m-reschreiter показывает: даже при статичном наборе тулов 98% ходов обходятся 4 инструментами. Разница между 14 500 и 3 600 токенами на старте — это не теория, а реальная телеметрия за 417 ходов.

Дальше по теме: контекст Claude Code, промпт-кеширование, AGENTS.md: файл-конвенций, агентный кодинг: что это.


Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка / 5. Количество оценок:

Оценок пока нет. Поставьте оценку первым.

Добавить комментарий

Adblock
detector