Контекст заполнен, учитесь вырезать
«Агент может стратегически забыть и продолжать работать вечно». Стратегическое забвение = инженерные возможности.
Почему компактный?
Если агент работает в течение длительного времени, messages[] будет расширяться: каждый read_file будет возвращать тысячи токенов, каждый bash будет возвращать сотни, и каждый раунд диалога также будет возвращать мыслительный текст модели. После 50 раундов контекст можно набить до 100К+. Два последствия:
Идея 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, чтобы указать, на чем сосредоточить внимание при подведении итогов. Это очень практично в реальном бою — модель знает, какие «маленькие задачи» завершены, что точнее, чем эвристика упряжи.
Какой слой подходит? истинный или ложный вопрос
Следующие сценарии определяют, какой триггер микро/авто/ручной является более разумным.