Память и контекст: что тащим, что выбрасываем

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

Почему контекст тает

Сложим смету шагов. Задача (~100 токенов) + паспорта инструментов (~150) + наблюдения. read_file по небольшому модулю — 300–800 токенов, и это наблюдение теперь ездит в каждом следующем промпте. Пять файлов — и петля уже тащит пару тысяч токенов хвоста, при этом для очередного решения нужны максимум два последних. На маленьком репозитории это деньги, на большом — упереться в окно модели.

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

Три уровня памяти

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

Уровень второй — окно свежих наблюдений. Последние N наблюдений едут целиком: именно на них модель строит следующий шаг.

Уровень третий — сводка по остатку. Старые наблюдения не выбрасываются молча, а схлопываются в одну строку: (ранее: 12 наблюдений опущено). Модель знает, что было что-то ещё, и при необходимости может это «вспомнить» — из файла лога, если вы его ведёте. Такой файл-черновик называют scratchpad: полный лог наблюдений на диске, дешёвый и неограниченный.

Когда сжатие запускать — вопрос бюджета: считаете токены истории (токен-калькулятор из первого модуля!) и режете, когда превышен. Именно это — предмет сегодняшней домашки.

Какой контекст нужен код-агенту

Файловый агент задаёт главный вопрос курса: что принести в контекст, чтобы ответить на вопрос про репозиторий? Ответ никогда не «весь репозиторий» (помните «влезет же» из первого модуля — деньги и рассеянное внимание), а «расследование»:

  • дифф или файл, о котором вопрос — целиком;

  • файлы, на которые он ссылается (импорты, вызовы) — при необходимости;

  • структура папок — как карта местности, дёшево и полезно первым шагом.

Заметьте симметрию: это ровно то, что делает опытный разработчик, открывая незнакомый PR. Сначала дифф, потом «пойду посмотрю, откуда вызывается», и только в крайнем случае — «прочитаю весь сервис». Агент с хорошими инструментами (ваш search!) повторяет этот путь за копейки.

Память между запусками

Всё сказанное — про один запуск петли. Между запусками памяти нет вовсе: завтра ваш ревьюер не помнит вчерашнего PR, и если контекст нужен — вы сами положите его в промпт (правила ревью) или в файл (накопленные заметки). «Модель с памятью» из маркетинговых текстов — это всегда чей-то код, который подкладывает прошлое в новый запрос. Теперь этот код пишете вы, и вопросов «почему агент забыл» больше не существует — существует «что я не положил в контекст».

Что запомнить:

  • Контекст — рабочая память шага, не архив: задача всегда, свежие наблюдения окном, остальное — сводкой; полный лог — в scratchpad-файл.

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

  • Для код-агента контекст собирается как расследование: сам объект вопроса → его связи → карта. Не «всё».

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

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

  • theory icon

    Петля агента: решить → сделать → посмотреть

    5 мин

  • homework icon

    Домашка: агент с одним инструментом

    3 мин

  • quiz icon

    Квиз: Петля агента: решить → сделать → посмотреть

    6 мин

  • theory icon

    Инструменты: руки агента

    5 мин

  • homework icon

    Домашка: набор разведчика

    3 мин

  • quiz icon

    Квиз: Инструменты: руки агента

    5 мин

  • theory icon

    Память и контекст: что тащим, что выбрасываем

    5 мин

  • homework icon

    Домашка: сжатие истории

    3 мин

  • quiz icon

    Квиз: Память и контекст: что тащим, что выбрасываем

    6 мин

  • theory icon

    Свой цикл против LangChain и LlamaIndex

    4 мин

  • homework icon

    HARD-задача: прятки в репозитории

    3 мин

  • quiz icon

    Квиз: Свой цикл против LangChain и LlamaIndex

    5 мин

  • project icon

    Проект «Разведчик»: агент, который знает ваш репозиторий

    3 мин

🎯
Тренажёр собеседованияЗакрепите знания перед интервью