Урок 06 · память

Контекст заполнен, учитесь вырезать

«Агент может стратегически забыть и продолжать работать вечно». Стратегическое забвение = инженерные возможности.

⏱ ~12 мин · 📝 3 интерактивных компонента · 🧑‍💻 На основе shareAI-lab · s06_context_compact.py

Почему компактный?

Если агент работает в течение длительного времени, messages[] будет расширяться: каждый read_file будет возвращать тысячи токенов, каждый bash будет возвращать сотни, и каждый раунд диалога также будет возвращать мыслительный текст модели. После 50 раундов контекст можно набить до 100К+. Два последствия:

<ул>
  • Обнаружение верхнего предела модели. Она схлопывается при достижении размера окна или цена увеличивается линейно с каждым вызовом API.
  • Разбавление внимания. Теперь, когда поставленная задача утопает в нерелевантных результатах Tool_results, полученных 30 раундов назад, модель начинает терять фокус.
  • Идея 06: позволить агенту активно забывать неважный контент, но сохранять ключевые состояния. Трехслойный механизм, от легкого к тяжелому.

    Уровень 1 · micro_compact (работает бесшумно каждый раунд)

    Самый дешевый уровень. Запускайте его перед каждым вызовом LLM и заменяйте более трех старых Tool_results заполнителями:

    # Начиная с 10-го раунда, большинство результатов инструмента становятся:
    {
      "type": "tool_result",
      "tool_use_id": "tolu_01A",
      "content": "[Предыдущая: используется bash]" # Количество символов уменьшено с тысяч до десятков
    

    Есть особый случай: результат read_file не сжимается. Почему? Поскольку результат чтения представляет собой справочный материал, если вы нажмете модель, вам придется прочитать ее снова, что обходится дороже.

    PRESERVE_RESULT_TOOLS = {"read_file"} # Никогда не сжимать

    Посмотрите на micro_compact и нажмите Turn, чтобы сохранить старые результаты.

    Следующие шаги моделируют 10 раундов взаимодействия и позволяют micro_compact запускаться один раз перед каждым раундом. Посмотрите, что старый инструмент_результат в messages[] становится [Предыдущий: ...], но последние 3 остаются прежними.

    Уровень 2 · auto_compact (срабатывает при превышении порога)

    Даже если микро продолжит работать, он все равно взорвется, когда устанет до определенного размера. s06 устанавливает порог (по умолчанию 50 000 токенов):

    <ол>
  • Оцените количество токенов len(str(messages)) // 4 (грубо, но полезно).
  • Превышает порог → Запишите полную расшифровку в .transcripts/transcript_TIMESTAMP.jsonl (оставьте нижнюю часть).
  • Попросите магистрант написать краткое изложение всего разговора.
  • Замените все сообщения одним "[compressed] SUMMARY...".
  • Цена очевидна — теряется конкретный результат работы инструмента и тон разговора, остается только контур. Но агент может продолжать работу, что является основным преимуществом.

    Слой 3 · Компактный инструмент для самостоятельной настройки модели.

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

    Вызов модели:

    tool_use("compact", focus="сохранять решения по проектированию API")

    Запуск аналогичен автоматическому, но может принимать параметр focus, чтобы указать, на чем сосредоточить внимание при подведении итогов. Это очень практично в реальном бою — модель знает, какие «маленькие задачи» завершены, что точнее, чем эвристика упряжи.

    Какой слой подходит? истинный или ложный вопрос

    Следующие сценарии определяют, какой триггер микро/авто/ручной является более разумным.

    Интерактив

    Виджет 1 · Micro Compact · См.tool_result Пресс-поворот Старение

    Шаг Шаг за шагом наблюдайте, как старый инструмент_результат заменяется на [Предыдущий: использованный X], при этом последние 3 остаются нетронутыми. read_file никогда не сжимается (выделен зеленым).

    Turn: 0 · Tokens: ~0
    Интерактив

    Виджет 2 · Симулятор порога · Какой уровень срабатывает после повышения токена?

    Перетащите ползунок, чтобы изменить количество токенов и увидеть, какой из трех слоев активен.

    3000
    Интерактив

    Виджет 3 · Какой слой подходит · 6 вопросов для оценки сцены

    Выберите микро/авто/ручной режим для каждой сцены и обсудите, когда каждый из них подходит для запуска.

    答对 0 / 6