Anthropic 6 ноября опубликовала разбор того, из чего складывается память агентов Claude между сессиями, и проверила каждую часть на своих тестах: бенчмарке CL-Bench, прохождении Pokémon Red, вики по 420 млн токенов внутренних документов и юридических задачах Harvey LAB. Главный практический вывод компании: сильной модели лучше объяснить, зачем нужна память, чем диктовать, что в неё писать, а ошибки в заметках можно исправлять отдельным офлайн-проходом по журналам, который в Anthropic называют dreaming («сновидение»).Для тех, кто собирает своих агентов на Claude Managed Agents, Agent SDK или пользуется памятью Claude Code, это набор проверенных на замерах приёмов: что хранить в заметках, что грузить в контекст в начале каждой сессии, где хватает поиска по транскриптам и когда вики окупается, а когда раздувается больше исходных файлов. Все цифры ниже — замеры самой Anthropic на её задачах; независимой проверки нет.На задаче с базой данных из CL-Bench папка памяти подняла среднюю награду Opus 5 с 0,564 до 0,828, Opus 4.7 — с 0,383 до 0,700, а Sonnet 4.6 — только с 0,330 до 0,364.Жёсткое правило «записывай только ошибки» убрало около 89% прироста от памяти у Opus 5 и около 47% у Opus 4.7 (расчёт Tproger по графику Anthropic).В Pokémon Red к 10-тысячному шагу Sonnet 3.7 завёл 413 файлов памяти и получил 1 значок, Fable 5 — 10 файлов и 4 значка; сравнивали по одному прогону.Вики по документам Stainless, которую агенты Opus 5 строили в 128 сессиях dreaming, подняла долю выполненных критериев по 25 вопросам с 13% до 48%; вместе с поиском — с 54% до 61% против 53% у одного поиска.В тесте о сделке слияния вики подняла результат на вопросах, где ответ собирается из нескольких документов, до 87% против 73% у поиска; в задаче LAB, где факты находились поиском в одном файле, заметного выигрыша не было.Что Anthropic называет памятью агента?Память агента в статье — это знания, которые Claude получает из опыта (работы с пользователем и выданных задач) и сохраняет между сессиями в виде контекста, который можно прочитать позже. Сюда не входят изменение весов модели, обучение внутри одного диалога и компакция, когда Claude заменяет старые реплики своим кратким пересказом, чтобы продолжить работу в новом окне контекста.Компания раскладывает память в иерархию из четырёх слоёв: транскрипты (журнал событий, по которому можно искать), заметки, которые Claude пишет сам, представления вроде вики и самый верхний слой — контекст, который обвязка агента загружает в каждую новую сессию. Dreaming работает поверх этой иерархии: между сессиями агент перечитывает журналы, исправляет ошибки в заметках, строит новые представления и решает, что поднять наверх. Идея опирается на работу Letta и Калифорнийского университета в Беркли о sleep-time compute — использовании простоя между запросами для переработки накопленного контекста — и на аналогию с консолидацией памяти во сне у человека.Важная оговорка: статья описывает возможную организацию памяти и эксперименты. Dreaming в этих опытах запускали исследователи; Anthropic не пишет, что это функция, автоматически включённая во всех продуктах Claude.Почему сильной модели не стоит диктовать, что запоминать?Ответ Anthropic: новые модели сами неплохо решают, что важно, а жёсткие правила им мешают. Проверяли на задаче с базой данных из Continual Learning Bench 1.0: Claude отвечает на серию вопросов, сверяясь с базой, после каждого ответа узнаёт правильное решение и может записать заметку. Каждый вопрос начинался в новой сессии на Claude Managed Agents, общей между сессиями была только папка памяти.Модели разных поколений вели себя по-разному. Sonnet 4.6 доходил до гипотез о том, почему ответ неверен, но оставлял россыпь файлов с непроверенными догадками. Opus 4.7 сводил заметки в один справочный документ и помечал, какие факты проверены, а какие нет. Sonnet 5 отмечал ответы как подтверждённые после проверки и записывал исправления. Opus 5 первым замкнул цикл обучения: в его записях было правило, объяснение, откуда известно, что оно верно, ответы на прошлые вопросы и предупреждения о найденных ловушках. Opus 5.5 и Sonnet 5.5 тоже замкнули цикл; с памятью они набрали примерно столько же, сколько Opus 5, но без памяти стартовали чуть выше.Средняя награда (от 0 до 1) на задаче с базой данных CL-Bench 1.0. График: Tproger по данным AnthropicЗатем моделям давали конкретные правила, что писать в память, по одному правилу на прогон. Правило «записывай только ошибки» сократило прирост от памяти у Opus 5 на 0,234 при исходном приросте 0,264 — это около 89%. У Opus 4.7 прирост упал на 0,150 из 0,317, около 47%. У Sonnet 4.6 изменение было почти нулевым (минус 0,020): ему память и так почти не помогала.Со старыми моделями работает обратное: подсказки помогают. Sonnet 4.6 часто не читал свою папку памяти и не проверял гипотезы. Когда в инструкции попросили читать память перед ответом и явно проверять предположения, его результат вырос с 0,364 до 0,641, почти вдвое. Sonnet 5 делает это без подсказки: он читал память перед ответом в 9 случаях из 10, Sonnet 4.6 — меньше чем в половине. Сейчас передовым моделям Anthropic даёт простое указание: заводить заметку, когда об этом просит человек или когда что-то явно стоит запомнить, а остальное оставляет на усмотрение Claude.Что показал эксперимент с Pokémon Red?В двух сравнённых прогонах больше продвинулась модель с маленькой памятью, где было только то, чего нельзя узнать из среды; отдельно влияние стратегии памяти Anthropic не проверяла. Anthropic сравнила папки памяти Sonnet 3.7 и Fable 5 примерно на 10-тысячном шаге игры, по одному прогону каждой модели. Sonnet 3.7 записывал всё подряд, часто отдельным файлом на каждую битву, предмет и персонажа: 413 файлов в 225 папках, около 978 тыс. символов и один значок (значки отмечают прогресс в игре). Fable 5 обошёлся девятью файлами в двух папках и одним файлом верхнего уровня global.md, около 43 тыс. символов, и получил четыре значка.Записи Sonnet 3.7 постоянно устаревали, потому что состояние игры всё время меняется, и модель тратила всё больше шагов на разбор собственных заметок. Около 10-тысячного шага она начала уже четвёртую папку «главных» файлов памяти и за следующие 17 шагов создала шесть файлов, удалила девять и не сделала в игре ни одного действия. Fable 5 не записывал то, что видно на экране каждый ход (деньги, положение на карте), а хранил стратегию, планы и проверенные правила. global.md служил ему приборной панелью: текущая цель, план прохождения залов, где выдают значки, и собственные правила работы с памятью. После семи подряд неудачных бросков покебола в Мэджикарпа модель записала: если три броска подряд не сработали, менять тайминг и вставлять лишние нажатия «ждать» между пунктами меню. Opus 5.5 вёл похожую маленькую папку с целью и следующими шагами, переписывал её по ходу игры и прошёл игру целиком.Как dreaming исправляет ошибочные заметки?Он сверяет заметки с исходными транскриптами, которые служат эталоном. Пример из того же Pokémon: снаружи, рядом со входом в пещеру Mt. Moon, есть уступ, с которого игрок падает обратно на пройденный маршрут. Claude ориентировался по покецентру у горы и ошибочно записал, что тот стоит на восточной стороне, после чего отметил в заметках «Mt Moon DONE». Через несколько действий модель свалилась с уступа, решила, что просто «проскочила далеко на запад», и осталась при неверном мнении.Исследователи запустили dreaming на папке с ошибочной заметкой: Claude сверил её с транскриптом сессии, нашёл ошибку и переписал запись. С исправленной заметкой модель вернулась в пещеру и добралась до Cerulean City, по графику Anthropic — на 1935-м действии. В прогоне с неисправленной заметкой Claude трижды падал с того же уступа, после третьего раза написал, что лучше остановится, чем крутиться в цикле, но автоответ обвязки велел продолжать, и модель ушла назад, в Pewter City. До Cerulean City не добрались ни этот прогон, ни прогон без памяти.Когда вики по документам окупается, а когда раздувается?В опытах Anthropic вики выигрывала там, где ответ надо было собирать из нескольких документов, и не давала заметной пользы в задаче, где факты лежали в одном файле; универсальным правилом компания это не называет. Самый большой опыт ставили на корпусе внутренних документов Stainless — компании, которую Anthropic купила в мае: около 350 тыс. файлов, примерно 420 млн токенов. По корпусу составили 25 вопросов и дали Claude инструмент поиска, а агентов Opus 5 в 128 сессиях dreaming просили изучать файлы, писать и исправлять связанные страницы вики, объединять дубли и сверять утверждения с источниками. Каждая сессия продолжала работу предыдущих через общий журнал.При росте числа сессий с 2 до 128 доля выполненных критериев при ответах только по вики выросла с 13% до 48%. Вики при этом выросла со 103 страниц и 766 ссылок до 222 страниц и 12 893 ссылок. Лучший результат давала связка вики и поиска: от 54% до 61% по мере роста вики против 53% у одного поиска, плюс экономия около 20 тыс. токенов на вопрос.На бенчмарке Harvey LAB, где Claude пишет юридические записки по набору документов, и на 24 вопросах о сделке слияния картина разошлась. На вопросах, где надо свести данные из нескольких документов, применить суждение или посчитать, Claude с вики набрал 87% против 73% с одним поиском. В задаче, где большинство критериев находится текстовым поиском в одном документе, заметного выигрыша не было. А в ещё одной задаче вики из 10 документов на 115 КБ разрослась до 68 страниц и 203 КБ, в 1,77 раза больше исходников. Авторы сравнивают это с картой из рассказа Борхеса «О строгости науки», которая была размером с империю.Отдельный урок — про инструкции. В задаче о поглощении компании несколько агентов одновременно писали в общую таблицу условий договоров и затирали правки друг друга: в итоговую записку попали 41 из 57 проверяемых фактов, 72%. Тогда Claude в цикле разбирал свои неудачи, предлагал правку инструкции и пересобирал вики. В новой версии у каждого договора своя страница, её пишет один агент и цитирует условия дословно. Результат — 57 из 57 фактов. Повторный проход dreaming по другой вики нашёл девять ссылок на несуществующую страницу, перенаправил их на существующую страницу того же документа и добавил три новые страницы: индекс, письмо с инструкциями и эскалации.Что грузить в контекст в начале каждой сессии?Только маленький верхний слой, который служит указателем на остальное. Dreaming может поднимать заметки на вершину иерархии, и тогда обвязка подгружает их в каждую сессию: Claude не нужно их искать и даже знать, что их стоит искать. Но такие заметки съедают токены, ошибочная запись попадает в каждую сессию, а загрузка ещё не гарантирует, что модель будет ей следовать: документация Claude Code предупреждает, что длинные файлы инструкций снижают их соблюдение.Поэтому значительная часть работы dreaming — держать верхний слой маленьким: переносить подробности ниже и оставлять ссылки. Так же устроена автопамять Claude Code: в контекст каждой сессии попадают только первые 200 строк или 25 КБ файла MEMORY.md, который работает как индекс — что Claude знает и где это найти.Что из этого взять в своего агента?По нашей оценке, из статьи прямо следуют несколько решений для собственной обвязки:Для сильных моделей объяснять в инструкции назначение памяти и не задавать жёстких фильтров вроде «только ошибки»; для старых и маленьких моделей явно просить читать память до ответа и проверять гипотезы.Хранить в памяти то, чего агент не увидит в среде: проверенные правила с пометкой, откуда известно, что они верны, ловушки, планы. Состояние, которое агент читает сам, дублировать не нужно.Не выбрасывать транскрипты: они служат эталоном, по которому периодический проход исправляет заметки. Сверять в первую очередь то, что быстро меняется.Загружаемый в каждую сессию слой держать коротким индексом со ссылками на подробности.Вики строить для задач, где ответ собирается из нескольких источников; параллельным агентам давать отдельные страницы вместо общей таблицы и цитировать ключевые условия дословно.Начать Anthropic предлагает с готовых примеров: cookbook по dreaming для Managed Agents и шаблон вики знаний в репозитории claude-quickstarts. Как проверить, что память вашего агента действительно работает, мы разбирали в отдельной методике; про перенос сессий между устройствами у кодинг-агентов — в сводке от 6 ноября.Открытыми Anthropic называет два вопроса. Первый — когда писать память: заметка в моменте отвлекает агента от основной задачи, а результат dreaming доступен не сразу. Второй — как держать память свежей: dreaming стоит вычислений, проверять все записи непрерывно непрактично, поэтому компания предлагает сосредоточить его на часто меняющихся сведениях и подбирать частоту, например по тому, как часто к записям обращаются. Сколько стоит один проход dreaming в токенах, в статье не указано.Источники: Anthropic: The components of agent memory, Документация Claude Code: памятьИзображение на обложке: Anthropic