Перейти к содержанию
Публикация AiManual

Context Language Models: как модели учатся редактировать свой контекст как файл

Context Language Models (CLM) дают модели доступ к её контексту как к файлу: она сама удаляет, дописывает и переписывает фрагменты по ходу задачи. Разбираем мех

Коротко

Что будет в материале

  1. 01

    Что такое Context Language Models и зачем они нужны

  2. 02

    Какую пользу даёт CLM на длинных задачах

  3. 03

    Эффективность инференса: compute и wall-clock

  4. 04

    Ограничения и риски CLM

Context Language Models (CLM) - это подход, при котором harness даёт модели доступ к её собственному контексту как к файлу. Модель может удалять, дописывать и переписывать фрагменты контекста прямо во время решения задачи, а не ждать, пока окно переполнится и понадобится внешнее сжатие.

Авторы работы утверждают, что такой приём улучшает результаты на длительных задачах: программировании, глубоких исследованиях и задачах с открытым горизонтом. Дополнительный эффект - меньше раздувания контекста, экономия (V)RAM и потенциально более эффективный инференс по вычислениям и wall-clock времени. Материалы и разбор собраны в ветке на r/LocalLLaMA.

Ограничения тоже конкретные. Часть выигрыша в эффективности завязана на оптимизации кэша, которая пока реализована только в SGLang. Без обучения прирост скромный, на меньшей модели qwen3.6 9b зафиксирована даже небольшая потеря эффективности, а существенное улучшение даёт RL-тренировка. Промпт-инъекции и галлюцинированные инструкции реже забываются, и это повышает риски.

Что такое Context Language Models и зачем они нужны

CLM - не новая архитектура нейросети и не очередной способ растянуть окно. Это модификация обвязки: harness, то есть слой между моделью, инструментами и средой, получает возможность показать модели её контекст как файл. В обычной схеме история диалога и результаты вызовов инструментов копятся как неизменяемый лог. Что попало в окно, то там и лежит, пока не упрётся в лимит токенов.

Зачем это нужно. Длинные агентные сессии упираются в две стены: переполнение окна и падение качества, когда в контексте смешаны устаревшие и актуальные данные. CLM переносит управление контекстом на саму модель: она решает, что оставить, что выбросить и что переписать.

Как модель редактирует контекст: механизм работы

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

Стандартная обвязка такого не умеет, поэтому нужны доработки harness. Авторы предоставляют плагин для pi, а настройки описывают отдельно: ссылка на плагин есть в материалах работы и в том же обсуждении на r/LocalLLaMA.

Чем это отличается от обычных компактов

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

CLM убирает необходимость в компактах. Модель сама поддерживает контекст в актуальном состоянии, поэтому раздувание меньше, а расход (V)RAM ниже. Механика близка к работе с KV-кэшем, где экономия памяти прямо влияет на то, сколько сессий и какой длины вы способны держать одновременно: подробный разбор связи окна, кэша и памяти есть в материале про контекстное окно, KV-cache и VRAM.

Какую пользу даёт CLM на длинных задачах

Основной заявленный выигрыш приходится на задачи, которые идут долго и накапливают много промежуточных артефактов. Именно там ручное управление контекстом даёт модели свободу манёвра.

Программирование и глубокие исследования

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

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

Задачи с открытым горизонтом

К этой категории авторы относят long horizon research tasks и циклы вида /goal loops, где агент подолгу идёт к цели без заранее известного числа шагов. Держать в окне всё невозможно, а терять нить нельзя. CLM позволяет модели поддерживать рабочий контекст в актуальном виде без внешнего вмешательства и без обязательной остановки на сжатие.

Эффективность инференса: compute и wall-clock

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

Есть важная оговорка. Часть этого выигрыша завязана на оптимизации кэша в inference engine, а она пока реализована только в SGLang. На других движках вы получите эффект от чистки контекста, но не весь заявленный прирост эффективности. Практика ускорения локального инференса показывает, что разница между движками и патчами к инференсу часто сравнима с разницей между самими моделями: пример такого разбора с бенчмарками и регрессиями собран в статье про оптимизацию MoE-инференса в llama.cpp.

Отдельно стоит считать (V)RAM. Меньше раздувание контекста - ниже расход памяти, а значит, больше места под веса, KV-кэш или параллельные сессии.

Ограничения и риски CLM

У подхода есть не только плюсы, и авторы говорят об этом прямо.

Промпт-инъекции и галлюцинированные инструкции

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

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

Зависимость от SGLang и доработок harness

Полный выигрыш в эффективности требует SGLang, потому что нужная кэш-оптимизация есть только там. Сама механика требует доработок harness: авторы предоставляют плагин для pi, а для другой обвязки логику придётся переносить самостоятельно. Это удорожает вход, если ваш стек построен на чём-то другом.

Настройка плагина pi для CLM

Установка и базовые команды

Плагин для pi авторы выложили сами, ссылка есть в оригинальной работе и в обсуждении на r/LocalLLaMA. После установки настройки меняются командой /clm settings.

Ключевые опции: One tool per turn и Size trailer

Две опции авторы отмечают как критичные для результата.

One tool per turn - за один ход вызывается один инструмент. Авторы называют эту настройку важной для производительности.

Size trailer - после каждого результата инструмента в контекст добавляется информация об использовании контекста. Без неё модели заметно реже правят контекст на ходу при больших вызовах инструментов: она просто не видит, насколько окно уже забито.

ОпцияЧто делаетРекомендация
One tool per turnОдин вызов инструмента за ходВключать, важна для производительности
Size trailerПоказывает использование контекста после каждого результата инструментаВключать, иначе модель реже правит контекст при крупных вызовах
Steering на house-brief.mdМодифицирует системный промптПо предположению автора обсуждения, держать выключенной для RL-моделей

Steering и house-brief.md

Настройка steering на house-brief.md модифицирует системный промпт. По предположению автора обсуждения, для RL-моделей её стоит держать выключенной, но таких моделей на момент публикации нет, поэтому вопрос скорее теоретический. На необученных моделях steering может служить способом задать правила работы с контекстом.

Кому стоит пробовать CLM: модели и обучение

Результаты на разных моделях

Подход проверяли на моделях qwen3.6 9b, qwen3.8 27b и claude sonnet 4.6. Без обучения, только за счёт небольшой добавки в системный промпт и инструментов для правки контекста, производительность, управление контекстом и эффективность остаются примерно на том же уровне или улучшаются незначительно. Меньшая qwen3.6 9b местами даже немного потеряла в эффективности, что намекает на лучшую работу подхода на более крупных и более сильных моделях.

Если вы выбираете модель под такие эксперименты, смотрите не только на размер, но и на окно, скорость и стоимость инференса: практический чек-лист по оценке новинок без шума вокруг релизов есть в материале про быструю оценку новых AI-моделей.

Роль RL-тренировки

Существенное улучшение авторы получили с RL-тренировкой, которую провели сами. Это меняет вывод для практики: без дообучения рассчитывать на большой прирост не стоит. Модель нужно научить пользоваться инструментом правки контекста, а это отдельная задача. Логика здесь та же, что и с post-training у open-weights моделей для кода и длинных задач: заявленный прирост часто держится именно на дообучении, а не на смене архитектуры, и такие заявления требуют первичных подтверждений, о чём подробно сказано в разборе про post-training и long-horizon задачи.

Итог: стоит ли внедрять CLM

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

Условия для полного эффекта сейчас узкие: SGLang как движок, pi как harness, крупная модель и желательно RL-дообучение. Без этого вы получите умеренный выигрыш в управлении контекстом и экономию (V)RAM, но не заявленный скачок по эффективности. На маленьких моделях вроде qwen3.6 9b возможна даже небольшая просадка.

Что делать практически. Если у вас длинные агентные сценарии, попробуйте связку pi и плагина авторов, включив One tool per turn и Size trailer. Заранее продумайте защиту от инъекций: раз инструкции дольше живут в контексте, внешние проверки и ограничения на опасные действия нужны обязательно. И следите за развитием: кэш-оптимизация пока привязана к одному движку, а RL-моделей под этот подход ещё нет.

Подписаться на канал