Хранилища памяти Managed Agents от Anthropic могут сохранять текст между сессиями. Для приложения, которому нужно передать двум агентам один проверенный факт, постоянное хранение — лишь первый шаг. Приложение должно определить владельца записи, проверить исходное доказательство, выбрать сохранённую редакцию и сохранить её точные байты до того, как любой агент их увидит. Руководство предназначено разработчикам с разрешённым доступом к бета-версии Managed Agents и контролем аутентификации приложения, выбора хранилищ и настроек агентов. Оно основано на актуальной документации Anthropic по памяти и справочниках API, проверенных 20 октября 2026 года; BIG CHANGE не проводила тесты аккаунта или модели.

Главное изменение

  • Что изменилось: Проверенная типизированная JSON-память может постоянно храниться в Managed Agents. Приложение проверяет источник и точные сохранённые байты, фиксирует один закрытый снимок и отправляет те же одобренные байты двум отдельным разрешённым сессиям без подключения хранилища памяти.
  • Почему это важно: Последующее изменение хранилища не может изменить входные данные, уже подготовленные для этих сессий.
  • На что обратить внимание: Точность источника, права пользователя и качество ответов по-прежнему требуют отдельных проверок.

Перед началом

Подготовьте реальный факт, предпочтение или правило проекта с разрешённым к использованию оригиналом, стабильным ID источника и редакцией, а также владельцем, одобряющим хранение и раскрытие обеим ролям агентов. До проверки определите подходящий срок актуальности проверки этой записи. Подтвердите доступ к бета-версии Managed Agents, закрытый API-ключ, разрешённое рабочее пространство, два настроенных ID агентов, окружение и разрешённую в аккаунте модель. Изучите текущие использование и цены до разрешения четырёх ограниченных сессий-потребителей этого процесса. Не включайте ключ в запросы модели или подтверждающие записи.

Приложению нужно сопоставление аутентифицированного субъекта с областью доступа. В доверенном состоянии приложения свяжите субъекта с одобренным ownerScopeId, ID рабочего пространства, ID хранилища и двумя разрешёнными ID агентов. Разделяйте хранилища закрытых пользователей и проектов, если их правила доступа отличаются. API-ключ рабочего пространства не аутентифицирует конечного пользователя, путь не является границей арендатора, а запрос модели не удаляет инструмент или учётные данные. Убедитесь, что у обеих конфигураций потребителей нет подключения хранилища и никаких коннекторов, учётных данных окружения или путей через инструменты к изменяемому хранилищу. Если эту границу нельзя обеспечить, остановитесь до отправки записи.

1. Одобрите запись по её источнику

Используйте этот структурный шаблон, заменив каждое значение в угловых скобках настоящим одобренным доказательством. Это не пример факта и не заявленный результат. До одобрения сериализуйте заполненный объект в один точный текст JSON UTF-8. Валидатор должен принимать именно эти поля и типы, отклонять неизвестные поля, требовать непустые строки, состоящие не только из пробелов и корректные временные метки UTC, ограничивать kind значениями fact, preference или project_rule, а status — значениями active, disputed или superseded. Внедрять можно только записи active. Одобренное утверждение должно соответствовать указанному оригиналу, включая дату начала действия и область применения.

JSON
{
  "schemaVersion": "memory-record/v1",
  "recordId": "<opaque stable record ID>",
  "ownerScopeId": "<trusted mapped scope ID>",
  "kind": "<fact | preference | project_rule>",
  "claim": "<precise source-supported claim>",
  "sourceId": "<private original-source ID>",
  "sourceRevision": "<original revision or exact source hash>",
  "sourceQuoteOrPointer": "<minimal permitted quote or stable pointer>",
  "validFrom": "<UTC timestamp>",
  "checkedAt": "<UTC timestamp>",
  "status": "active",
  "reviewerId": "<approved human reviewer ID>",
  "reviewedAt": "<UTC timestamp>"
}

Закрытое подтверждение одобрения приложения должно указывать реального одобрившего, разрешение владельца, оригинальный источник и редакцию, область и разрешённых агентов, правило актуальности и SHA-256 этих точных байтов JSON UTF-8. Оно фиксирует решение человека о настоящем утверждении. Строка reviewerId в записи не является аутентификацией. Не сохраняйте запись с нерешённым противоречием или отсутствующим разрешением. Anthropic хранит текст, но не проверяет эту схему и не устанавливает истинность утверждения.

2. Сохраните и прочитайте повторно

Создайте или выберите узкое хранилище памяти в разрешённом рабочем пространстве и запишите его настоящий memstore_... ID. Используйте нечувствительный путь, например /records/{opaque-record-id}.json. До запроса запишите исполнителя, время UTC, редакцию источника, хеш одобренных байтов, хранилище и путь и состояние pending. Для прямых вызовов хранилища памяти используйте agent-memory-2026-07-22, а для вызовов сессий — managed-agents-2026-04-01. По словам Anthropic, сочетание этих бета-заголовков в запросе к хранилищу возвращает HTTP 400. Справочник создания и руководство по памяти показывают следующую форму SDK; сравните установленный SDK с актуальным справочником:

Python
mem = client.beta.memory_stores.memories.create(
    store.id,
    path="/records/<opaque-record-id>.json",
    content=approved_json_text,
)

Создание не перезаписывает существующий путь. Сохраните возвращённый mem_... ID, затем перечислите /records/ в хранилище нужной области, используя каждый next_page как следующий page. Базовый список по умолчанию не включает содержимое. Получите выбранную память по ID для полного текста; сравните ID хранилища, ID памяти, путь, содержимое и content_sha256 с одобренными байтами. Запишите ответ и прямое повторное чтение в журнал и реестр. Один ответ создания не подтверждает завершение. При неопределённом ответе проверьте точный путь и прямую запись до вывода о результате; одного отсутствия поискового совпадения недостаточно для повторного создания.

3. Зафиксируйте выбранную редакцию

При каждом последующем запуске аутентифицируйте вызывающего и определите его область, хранилище и ID выбранной записи из доверенного реестра. Если нужен поиск, перечислите все страницы ограниченного префикса, затем напрямую получите выбранную mem_.... Вычислите SHA-256 от кодировки UTF-8 для возвращённого содержимого, сравните с content_sha256 поставщика и точным хешем байтов, одобренным человеком, затем снова проверьте JSON. Проверьте ID записи, область владельца, редакцию источника, статус active, текущую актуальность источника и заранее заданный срок. Если любая проверка не пройдена, ничего не отправляйте.

Запишите полученные точные байты один раз в закрытое хранилище с адресацией по хешу, используя исключительное создание, например open(path, "xb") в Python. Сразу повторно прочитайте файл и вычислите хеш, а также делайте это перед каждой отправкой. Никогда не перезаписывайте существующий снимок. Неполный файл или существующий файл с другими байтами по тому же адресу требуют приостановки и сверки. Храните первоначальное одобрение, ID хранилища, ID памяти, хеш поставщика, хеш снимка и решение по области в закрытом подтверждении получения. Такой однократно записываемый снимок — устройство приложения, а не подключение Anthropic, привязанное к версии.

4. Передайте одинаковые байты двум новым сессиям

Создайте новую сессию агента A с настоящими разрешёнными ID агента и окружения и без записи хранилища памяти в resources. Убедитесь, что ресурсы возвращённой сессии и фактические инструменты и учётные данные агента не оставляют иного пути к хранилищу. Руководство по сессиям Anthropic отдельно описывает создание и отправку user.message:

Python
session = client.beta.sessions.create(
    agent=approved_agent_id,
    environment_id=approved_environment_id,
)
client.beta.sessions.events.send(
    session.id,
    events=[{"type": "user.message", "content": [{"type": "text", "text": message_text}]}],
)

До events.send повторно прочитайте закрытый снимок и вычислите его хеш. Сформируйте message_text детерминированно из явной метки «проверенные данные», идентификаторов записи, источника и проверки, неизменённого JSON-текста и его SHA-256, затем узкого вопроса, на который может ответить первоисточник. Показанные поля — это формат сообщения приложения, а не поля ответа поставщика. До отправки запишите все байты UTF-8 сообщения и хеш, хеш выбранного снимка, разрешённый ID агента, ID сессии и состояние отправки. Сохраните результат и настоящий ID отправленного события или повторное чтение списка событий, если доступно. Неизвестный исход отправки требует чтения событий, а не слепой повторной отправки.

Создайте вторую новую сессию для агента B с отдельно одобренным ID и таким же отсутствием доступа к хранилищу. Повторно прочитайте тот же однократно записанный снимок, проверьте хеш байтов, сформируйте и запишите полное сообщение B, затем отправьте. Вопросы задания или метаданные адресата могут отличаться; убедитесь, что встроенные байты JSON и одобренный хеш записи одинаковы. Проверьте каждый ответ и события инструментов по оригиналу. Правдоподобный ответ или цитата не доказывают внутреннюю опору модели на внедрённый текст; подтверждения сообщений и событий поставщика показывают, что предоставило приложение. Если у любой сессии есть активное подключение или другой путь к хранилищу, ничего ей не отправляйте.

5. Обновляйте только после новой проверки источника

При изменении оригинала напрямую получите текущую память и сравните старые и новые доказательства с владельцем. Пусть человек одобрит точные заменяющие байты JSON со стабильным ID записи, исправленным утверждением или указателем источника, новой редакцией источника и временем проверки и рассмотрения. Сохраните старое подтверждение и хеш. Запишите mem_... ID, текущий напрямую прочитанный content_sha256, планируемый хеш замены, исполнителя, одобрение и ожидающее состояние. Документированное условное обновление выглядит так:

Python
client.beta.memory_stores.memories.update(
    memory_id=memory_id,
    memory_store_id=store_id,
    content=approved_replacement_json_text,
    precondition={"type": "content_sha256", "content_sha256": fresh_old_hash},
)

Поставщик хеширует точное содержимое UTF-8 без нормализации. Несовпадение возвращает HTTP 409 memory_precondition_failed_error. При таком ответе или неопределённом сетевом результате снова получите действующую память и при необходимости изучите историю версий. Сравните конфликтующие редакции источника и попросите владельца объединить, отклонить или одобрить новую точную замену; никогда вслепую не повторяйте устаревшую запись. При успехе прямое получение должно подтвердить путь, полный заменяющий текст, хеш и ID версии памяти до перехода журнала в confirmed.

Зафиксируйте новый одобренный снимок этой проверенной редакции. Создайте новые разрешённые сессии A и B без подключённого хранилища и повторите обе отправки и проверки источника. Не меняйте старые снимки и не утверждайте, что отправленные сообщения обновляются сами. Пометьте прежний снимок как непригодный для будущего внедрения. Если владелец отзывает запись, прекратите новые отправки и примените его правила хранения и удаления данных: удаление текущей памяти не обязательно удаляет сохранённые версии. Архивирование или удаление всего хранилища — отдельное решение.

Что считается завершением

Закрытые подтверждения должны связывать исходное разрешение и редакцию источника с точным одобренным JSON-хешем; настоящую идентичность рабочего пространства, хранилища, пути и mem_... и прямое чтение после создания; один неизменяемый снимок; два разных разрешённых ID сессий без подключения с хешами отправленных сообщений и ответами, сверенными с источником; одобренное условное обновление с новым прямым чтением и проверками новых сессий. При любой неизвестной связи отметьте всё упражнение как незавершённое и сохраните точную причину. Если выполняете его, запишите реальное использование сессий и инструментов и расходы конкретного аккаунта; это документальное руководство не измеряло экономию или качество модели.

Для связанной, но другой работы проверка одного результата Dream для следующей сессии рассматривает сгенерированное предложение для хранилища. Этот процесс начинается с исходной записи, одобренной владельцем, и точно фиксирует, что получают два потребителя.