Хотите заказать веб-сайт? Связаться с нами

Сессии и контекст: как работает память агента

В предыдущем уроке мы разобрали, что один шаг агента состоит из множества запросов к провайдеру, и каждый следующий запрос несёт в себе всё, что было до него. Но где именно «всё это» хранится между запросами? Ответ — в сессии и в её контексте. В этом уроке разберём, что такое сессия, что такое контекстное окно (context window), что в него попадает и почему со временем каждый запрос становится дороже.

Сессии и контекст: как работает память агента

Что такое сессия

Сессия (session) — это период непрерывной работы агента над одной задачей или серией связанных задач, в течение которого сохраняется общая история общения. Сессия начинается, когда вы запускаете агента или создаёте новый диалог, и заканчивается, когда вы эту сессию закрываете, завершаете или начинаете новую.

Сессию можно сравнить с рабочим столом. Вы раскладываете на нём документы, делаете пометки, перемещаете вещи. Пока стол не убран, всё остаётся на своих местах и вы можете в любой момент вернуться к любой детали. Когда вы убираете стол (закрываете сессию), все эти вещи исчезают из поля зрения, и новая сессия начинается с чистого листа.

В разных инструментах сессии называются по-разному: диалог, чат, thread, контекстная сессия. Смысл один — это контейнер, который хранит историю взаимодействия и передаёт её модели в каждом запросе.

Что такое контекстное окно

Контекстное окно (context window) — это максимальный объём токенов, который модель может обработать за один запрос. Это не «память» модели в человеческом смысле, а жёсткое техническое ограничение: модель физически не может «увидеть» больше токенов, чем помещается в её окно.

Размер окна у разных моделей разный. Современные модели имеют окна от 8 тысяч до 200 тысяч токенов и более. Для сравнения: 8 тысяч токенов — это примерно 20-25 страниц текста, а 200 тысяч — уже целая книга. Но важно понимать: большой размер окна — это не «бесплатная память», а скорее «большой чемодан»: носить его можно, но каждый раз, когда вы его несёте, вы платите за вес.

Размер окна Примерный объём текста
8 000 токенов 20-25 страниц
32 000 токенов 80-100 страниц
128 000 токенов 300-400 страниц
200 000 токенов 500-600 страниц

Ключевой момент: окно — это потолок, но не рекомендация. Заполнять его целиком не нужно и, как мы увидим в уроке про Smart Zone, даже вредно для качества рассуждений.

Что попадает в контекст

Контекст сессии — это не просто «ваша переписка с агентом». В каждом запросе к модели harness собирает несколько блоков, и все они занимают место в окне.
  1. Системный промпт — глобальные инструкции агента: кто он, какие у него правила и ограничения. Этот блок присутствует в каждом запросе.
  2. История сообщений — ваши сообщения, ответы агента и промежуточные результаты работы инструментов.
  3. Инструкции проекта — содержимое файлов вроде AGENTS.md, которые агент загружает при старте сессии.
  4. Описания инструментов — схемы доступных функций, которые отправляются в каждом запросе и занимают тысячи токенов.
  5. Содержимое файлов — файлы, которые агент прочитал по ходу работы, попадают в контекст целиком или частично.
  6. Выводы команд — результаты выполнения bash-команд, тестов, сборок добавляются в историю как сообщения.

Обратите внимание на последние два пункта: именно они чаще всего «съедают» контекст незаметно. Вывод команды на 500 строк или файл на 2 000 строк — это десятки тысяч токенов, которые будут отправляться в каждом последующем запросе.

Как контекст растёт между шагами

Контекст сессии не пересобирается с нуля перед каждым запросом — он накапливается.

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

Посмотрим на простой пример. Вы просите агента починить баг в модуле авторизации.

Шаг 1: запрос (история = системный промпт + ваше сообщение, 4 000 токенов)
Шаг 2: запрос (история + содержимое файла auth.ts, 12 000 токенов)
Шаг 3: запрос (история + вывод тестов, 15 000 токенов)
Шаг 4: запрос (история + ещё одна правка, 18 000 токенов)

К четвёртому запросу модель получает уже 18 000 токенов, хотя ваше исходное сообщение занимало всего пару сотен. Именно поэтому, как мы говорили в уроке про шаги, один короткий вопрос в конце длинной сессии может стоить дороже длинного вопроса в начале.

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

Пределы контекстного окна

Если контекст растёт бесконечно, рано или поздно он упрётся в потолок окна. Что происходит в этот момент, зависит от настроек harness, и вариантов ровно три.
  1. Ошибка переполнения — запрос отклоняется, потому что он превышает лимит модели. Это худший сценарий: работа прерывается, и вы теряете ход.
  2. Автоматическое сжатие (compaction) — harness сам сокращает историю, оставляя краткую выжимку. Тема compaction будет подробно разобрана в одном из следующих уроков.
  3. Отбрасывание старых сообщений — самые ранние сообщения удаляются, чтобы освободить место. Риск: агент «забывает» важные детали из начала сессии.

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

Следите за числом токенов накопленного контекста в статусной строке или логах вашего harness. Когда контекст заполнен примерно на 30-40%, начинайте планировать: либо завершайте текущую задачу, либо готовьтесь к следующей сессии. Это проще, чем потом разбираться с потерянной информацией после автосжатия.

Как harness управляет контекстом

Harness — это программа, которая связывает вас с моделью: собирает запросы, выполняет инструменты и ведёт историю сессии. Контекстом управляет именно он, и делает это по своим правилам.

Одна из ключевых настроек — что попадает в контекст автоматически, а что нет. Например, harness может загружать в контекст инструкции проекта при старте, но не читать файлы, пока модель сама не запросит их через инструмент. Такая модель работы называется «чтение по требованию» и позволяет держать контекст лёгким.

Программист стоит перед двумя воронками-фильтрами, через которые сыплются ленты данных-выводов от инструментов

Другая важная деталь — как harness обрабатывает выводы инструментов. Одни harness-ы добавляют каждый вывод в историю как отдельное сообщение, другие обрезают длинные выводы или сохраняют только фрагменты. От этой логики напрямую зависит, как быстро растёт ваш контекст.

Наконец, harness управляет и тем, что отправляется в запрос, а что остаётся «за кадром». Часть информации может храниться локально и подгружаться только по необходимости. Понимание настроек своего harness — это первый шаг к осознанному управлению контекстом, к которому мы вернёмся в практических уроках.

Сессия и контекст: в чём разница

Сессия и контекст — связанные, но не одинаковые понятия, и их часто путают. Разграничим их чётко.

Сессия Контекст
Период непрерывной работы Содержимое, которое отправляется модели
Имеет начало и конец Имеет размер и потолок
Хранит историю и состояние Является «срезом» этой истории на момент запроса
Управляется пользователем Управляется harness и моделью

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

Из этой разницы следует практический вывод: когда вы начинаете новую сессию, вы не «теряете» модель — вы теряете накопленный контекст. Модель та же, но она больше не видит историю предыдущей работы, поэтому ей придётся объяснять всё заново. Это ключевая идея, на которой строится управление сессиями.

Почему пустой контекст — это тоже проблема

Возникает соблазн решить: «раз контекст дорожает, буду держать его пустым и начинать новую сессию на каждый вопрос». Но у пустого контекста есть своя цена: модель ничего не знает о вашем проекте, ваших правилах и уже принятых решениях.

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

Искусство управления контекстом — это баланс между двумя крайностями: переполненным окном, где всё дорого и качество рассуждений падает, и пустым контекстом, где агент работает «вслепую». Этот баланс — центральная тема всего курса, и в следующем уроке мы разберём его главный инструмент.

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

Типичные ошибки

  1. Путать сессию и контекст: сессия — это период работы, контекст — то, что видит модель в конкретный запрос.
  2. Считать, что большой context window означает «можно не следить за контекстом» — окно лишь потолок, а не рекомендация.
  3. Игнорировать рост контекста до упора в лимит, а потом удивляться дорогим запросам и автосжатию.
  4. Начинать новую сессию на каждый вопрос без передачи итогов — агент теряет всю память о проекте.
  5. Не настроить «чтение по требованию» и позволять harness тянуть в контекст лишние файлы и выводы команд.

Итоги

Сессия — это период непрерывной работы агента, в течение которого накапливается история, а context window — технический потолок того, сколько токенов модель может обработать за один запрос.

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

В следующем уроке разберём ключевую концепцию курса — Smart Zone и Dumb Zone: как заполнение контекстного окна влияет на способность агента рассуждать и почему нужно оставаться в «умной зоне».

Глоссарий

  1. Сессия (session) — период непрерывной работы агента с общей историей, от запуска до завершения.
  2. Context window — максимальный объём токенов, который модель обрабатывает за один запрос.
  3. Токен — минимальная единица текста, которой модель считает вход и выход.
  4. Системный промпт — глобальные инструкции агента, присутствующие в каждом запросе.
  5. История сообщений — накопленная переписка и результаты инструментов, передаваемые модели.
  6. Harness — программа, связывающая пользователя и модель: собирает запросы, выполняет инструменты, ведёт контекст.
  7. Compaction — автоматическое сжатие истории при приближении к лимиту окна.
  8. Чтение по требованию — стратегия, при которой файлы попадают в контекст только по явному запросу модели.
  9. Инструкции проекта — файлы вроде AGENTS.md, задающие правила работы агента в конкретном проекте.
  10. Smart Zone / Dumb Zone — концепция деградации рассуждений агента по мере заполнения контекста.

Теги: