Память агентов и dreaming: знания между сессиями

Тема 3/4: Архитектура агента Урок 4/5

В предыдущих уроках каждая сессия Claude начиналась с чистого листа: агент не помнил, что происходило раньше, и не мог передать знания следующей сессии. Для многих реальных задач это серьёзное ограничение. Этот урок — о том, как дать агентам память между сессиями с помощью хранилищ памяти (memory stores) — они сейчас в публичной бете — и как со временем наводить в этой памяти порядок с помощью процесса dreaming (research preview, доступ по запросу). Вы разберёте, как устроено хранилище памяти, как оно подключается к сессии, чем помогает dreaming и как три уровня — сессия, хранилище и dreaming — складываются в единую систему.

До сих пор агенты в этом курсе работали внутри одной сессии. Как только сессия заканчивалась, всё, что агент узнал по ходу, пропадало. Это удобно для разовых задач, но мешает там, где важна преемственность: агент не может опереться на прошлый опыт и не готовит почву для будущих сессий. Этот урок показывает, как снять ограничение — через хранилища памяти и процесс их улучшения, который в Anthropic назвали dreaming.

Почему агенты не помнят прошлое

По умолчанию агент устроен изолированно. Когда вы создаёте сессию в Claude Managed Agents, это почти всегда одна сессия за раз, и она никак не связана с остальными. Агент не помнит информацию из прошлых сессий и ничего не передаёт будущим. Разберём на простом примере: одной сессии рассказывают про некоторую тему — называют несколько ключевых слов и дают ссылку на заметки. Другая сессия про эту тему ничего не знает: у неё просто нет доступа к этой информации. Для многих рабочих сценариев это серьёзное ограничение.

Хранилище памяти: постоянное хранилище как файловая система

Решение — хранилище памяти (memory store). Это постоянное хранилище, устроенное как файловая система, которое подключается к сессии как ресурс. У модели есть инструменты, чтобы читать из него и писать в него между сессиями. Файловая система выбрана намеренно: это мощный интерфейс для модели. Она может обойти хранилище через bash, поискать нужное по ключевым словам через grep, прочитать отдельные файлы. Хранилищ можно создать сколько угодно, и границы вы задаёте сами: на пользователя, на рабочее пространство или иначе — как удобнее вашей задаче.

Как создать и подключить хранилище

Хранилище создаётся через командную строку: достаточно задать имя и, при желании, краткое описание. После этого оно видно в консоли — раздел Manage Agents, затем Memory Stores. Там есть просмотрщик файлов, и память можно добавлять вручную: создать файл по нужному пути и вписать содержимое. Чтобы подключить хранилище к сессии, в запрос передают его идентификатор. Дополнительно можно задать направляющий промпт — указание, на чём агенту сосредоточиться при чтении и записи. Ещё есть поле доступа: по умолчанию «чтение-запись», но его можно поставить в «только чтение», и тогда сессия сможет лишь читать из хранилища, не меняя его.

На практике: с памятью агент вспоминает

С подключённым хранилищем поведение меняется. Повторим прежний тест: сообщаем сессии ту же информацию. Модель сначала заглядывает в память — есть ли там что-то нужное для разговора, — а затем сохраняет сказанное в файл, например sessions.md. Следующая сессия с тем же хранилищем получает вопрос по этой теме. Она снова смотрит в память, ищет по ключевому слову через grep, находит сохранённое и отвечает по существу. Файлы памяти версионируются: каждая правка создаёт новую версию. Их можно перечислять, просматривать и редактировать вручную — исправить неверное или дополнить.

Dreaming: наведение порядка в памяти

Со временем агенты часто просто сваливают информацию в хранилище: по каждой задаче что-то дописывают, и память разрастается. Раньше не было процесса, который упорядочил бы её, проверил на устаревание и объединил дубликаты. Для этого сделан dreaming. Это пакетный процесс, который выполняется асинхронно и запускается через API или консоль. Внутри — многоагентная обвязка. На вход подают хранилище памяти и список сессий, которые могут его обогатить (в примере — порядка 10–20 за раз, вплоть до примерно сотни). Можно добавить свои инструкции — например, попросить дозаполнить конкретные детали или выстроить нужную структуру папок. Модель выбираете сами — более мощная или более лёгкая, по нужному качеству и стоимости.

Как устроен dreaming внутри

Процесс неразрушающий: входное хранилище не трогают, а клонируют в выходное, и все правки идут в новую копию. Dreaming построен на тех же примитивах Claude Managed Agents: под задачу создаётся отдельная сессия, за которой можно наблюдать и по которой можно разобраться, что именно происходит. Оркестратор порождает по одному субагенту на каждую входную сессию — так задумано, чтобы обработка была исчерпывающей и ничего не потерялось. По завершении в консоли виден список изменений: создан индексный файл со ссылками на файлы памяти, чтобы будущий агент быстро понял, что искать, вместо широкого поиска; добавлены новые файлы с деталями, которых раньше не было; прежние файлы переформатированы — с описанием, метаданными и дополнительными подробностями.

Как использовать результат

После dreaming новую сессию подключают к выходному хранилищу. На тот же вопрос — какие сессии вы посетили, какие ресурсы отмечены, какие следующие шаги — она отвечает заметно богаче: даёт сводку по сессиям, отметки времени, ссылки на ресурсы. Больше деталей помогает будущим сессиям: пока агент работает над текущей задачей, ему трудно предсказать, что понадобится дальше, поэтому лишние на первый взгляд подробности стоит сохранять — dreaming позже уберёт ненужное. Старое хранилище, если новое вас устраивает, можно вывести из обращения; на прежние сессии это не влияет.

Три уровня одной системы

Сессию, хранилище памяти и dreaming удобно видеть как три слоя, которые дополняют друг друга. Сессия — изолированный, обычно временный экземпляр работающего агента, один поток разговора. Хранилище памяти связывает информацию между множеством сессий. Dreaming со временем упорядочивает, обогащает и улучшает память, а заодно проверяет её на устаревание, чтобы она оставалась управляемой и не разрасталась без предела.

Сколько это стоит в токенах

Процесс по замыслу исчерпывающий, поэтому расходует много токенов. Но большая часть обработки агентная, и кэш срабатывает в значительной части обращений — по практическим замерам порядка 95%, — так что реальный расход ниже, чем кажется на первый взгляд. Прорабатываются и способы удешевления: например, по аналогии с batch-API скидка порядка 50% за отложенный запуск, смена модели и более жёсткий бюджет токенов.

Итог

Изолированность агента — устоявшаяся проблема: без памяти он не переносит знания между сессиями. Хранилище памяти — первый шаг к решению: агенту дают место, куда он читает и пишет между сессиями. Но у этого шага есть обратная сторона: память со временем разрастается, теряет порядок и устаревает. Dreaming снимает и это — отдельный набор агентов, чья единственная задача улучшить хранилище для будущего использования. Вместе сессия, хранилище и dreaming дают агенту то, чего ему не хватало, — память, которая накапливается и остаётся в порядке.

Материал основан на возможностях Claude Managed Agents — memory stores (публичная бета) и dreaming (research preview, доступ по запросу).