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-моделей под этот подход ещё нет.