Was this page helpful?
Agent Memory — это функция Research Preview. Запросите доступ, чтобы попробовать её.
Сеансы Managed Agents API по умолчанию являются эфемерными. Когда сеанс заканчивается, всё, что узнал агент, исчезает. Хранилища памяти позволяют агенту переносить полученные знания между сеансами: предпочтения пользователей, соглашения проекта, предыдущие ошибки и контекст предметной области.
Все запросы Managed Agents API требуют заголовка бета-версии managed-agents-2026-04-01. Для функций исследовательской предварительной версии требуется дополнительный заголовок бета-версии. SDK автоматически устанавливает эти заголовки бета-версии.
Хранилище памяти — это коллекция текстовых документов, ограниченная рабочей областью и оптимизированная для Claude. Когда одно или несколько хранилищ памяти подключены к сеансу, агент автоматически проверяет хранилища перед началом задачи и записывает устойчивые знания по завершении — дополнительные подсказки или конфигурация с вашей стороны не требуются.
Каждая память в хранилище может быть доступна и отредактирована непосредственно через API или Console, что позволяет настраивать, импортировать и экспортировать память.
Каждое изменение памяти создаёт неизменяемую memory_version для поддержки аудита и отката изменений памяти.
Дайте хранилищу name и description. Описание передаётся агенту, сообщая ему, что содержит хранилище.
store=$(curl -fsS https://api.anthropic.com/v1/memory_stores \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- <<EOF
{
"name": "User Preferences",
"description": "Per-user preferences and project context."
}
EOF
)
store_id=$(jq -r '.id' <<< "$store")
echo "$store_id" # memstore_01Hx...id хранилища памяти (memstore_...) — это то, что вы передаёте при подключении хранилища к сеансу.
Предварительно загрузите хранилище справочным материалом перед запуском любого агента:
Отдельные памяти в хранилище ограничены 100 КБ (~25K токенов). Структурируйте память как множество небольших сфокусированных файлов, а не несколько больших.
Хранилища памяти подключаются в массиве resources[] сеанса.
Опционально включите prompt, если вы хотите предоставить Claude инструкции, специфичные для сеанса, о том, как использовать это хранилище памяти. Оно предоставляется Claude в дополнение к name и description хранилища памяти и ограничено 4096 символами.
Вы также можете настроить access. По умолчанию это read_write, но также поддерживается read_only (показано явно в примере ниже).
Максимум 8 хранилищ памяти поддерживаются на сеанс. Подключайте несколько хранилищ, когда разные части памяти имеют разных владельцев или правила доступа. Распространённые причины:
Когда хранилища памяти подключены к сеансу, агент автоматически получает доступ к инструментам памяти. Взаимодействия агента с хранилищами памяти регистрируются как события agent.tool_use в потоке событий.
| Инструмент | Описание |
|---|---|
memory_list | Список документов в хранилище, опционально отфильтрованный по префиксу пути. |
memory_search | Полнотекстовый поиск по содержимому документов. |
memory_read | Чтение содержимого документа. |
memory_write | Создание или перезапись документа по пути. |
memory_edit | Изменение существующего документа. |
memory_delete | Удаление документа. |
Хранилища памяти можно управлять непосредственно через API. Используйте это для создания рабочих процессов проверки, исправления плохих памятей или заполнения хранилищ перед запуском любого сеанса.
Список не возвращает содержимое памяти, только метаданные объекта. Используйте path_prefix для списков с ограничением по каталогам (включите завершающий слэш: /notes/ совпадает с /notes/a.md, но не с /notes_backup/old.md).
Получение отдельной памяти возвращает полное содержимое документа.
Используйте memories.write для создания или обновления документа по пути. Если по пути ничего не существует, оно создаётся; если документ уже существует там, его содержимое заменяется. Для изменения существующего документа по mem_... ID (например, для переименования его пути или безопасного применения редактирования содержимого) используйте вместо этого memories.update (см. Update ниже).
Передайте precondition={"type": "not_exists"} в memories.write, чтобы сделать это охраной только для создания. Если документ уже существует по пути, запись возвращает 409 memory_precondition_failed вместо замены. Используйте это при заполнении хранилища, когда вы хотите избежать перезаписи существующего содержимого.
Для безопасного редактирования существующего документа (чтение, изменение, запись обратно без перезаписи одновременного изменения) используйте memories.update с предусловием content_sha256 вместо этого. См. Update ниже.
memories.update() изменяет существующий документ по его mem_... ID. Вы можете изменить content, path (переименование) или оба в одном вызове.
Переименование на занятый путь возвращает 409 conflict. Вызывающий должен удалить или переименовать блокировщик, или передать precondition={"type": "not_exists"}, чтобы сделать переименование no-op, если что-либо уже существует по целевому пути.
Пример ниже переименовывает документ в архивный путь:
Для редактирования содержимого документа без перезаписи одновременной записи передайте предусловие content_sha256. Обновление применяется только если сохранённый хэш всё ещё совпадает с тем, который вы прочитали; при несовпадении оно возвращает 409 memory_precondition_failed, после чего вы перечитываете документ и повторяете попытку против свежего состояния.
Опционально передайте expected_content_sha256 для условного удаления.
Каждое изменение памяти создаёт неизменяемую версию памяти (memver_...). Версии накапливаются в течение всего времени жизни родительской памяти и образуют поверхность аудита и отката под ней. Вызов memories.retrieve всегда возвращает текущую версию; конечные точки версии дают вам полную историю.
Новая версия записывается при каждом изменении:
memories.write по пути создаёт версию с operation: "created".memories.update, который изменяет content, path или оба, создаёт версию с operation: "modified".memories.delete создаёт версию с operation: "deleted".Используйте конечные точки версии для аудита того, какой пользователь или агент изменил что и когда, для проверки или восстановления предыдущего снимка и для удаления конфиденциального содержимого из истории с помощью redact.
Список метаданных версий с разбивкой по страницам для хранилища, от новейших к старейшим. Фильтруйте по memory_id, operation (created, modified или deleted), session_id, api_key_id или диапазону времени created_at_gte/created_at_lte. Ответ списка не включает тело content; получите отдельные версии с помощью retrieve, когда вам нужно полное содержимое.
Получение отдельной версии возвращает те же поля, что и ответ списка, плюс полное тело content.
Редактирование удаляет содержимое из исторической версии, сохраняя при этом журнал аудита (кто что сделал и когда). Используйте его для рабочих процессов соответствия, таких как удаление утёкших секретов, персональных данных или запросов на удаление пользователя. Редактирование полностью очищает content, content_sha256, content_size_bytes и path; все остальные поля, включая актёра и временные метки, сохраняются.
curl -fsS "https://api.anthropic.com/v1/memory_stores/$store_id/memories" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- > /dev/null <<EOF
{
"path": "/formatting_standards.md",
"content": "All reports use GAAP formatting. Dates are ISO-8601..."
}
EOFsession=$(curl -fsS https://api.anthropic.com/v1/sessions \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- <<EOF
{
"agent": "$agent_id",
"environment_id": "$environment_id",
"resources": [
{
"type": "memory_store",
"memory_store_id": "$store_id",
"access": "read_write",
"prompt": "User preferences and project context. Check before starting any task."
}
]
}
EOF
)page=$(curl -fsS "https://api.anthropic.com/v1/memory_stores/$store_id/memories?path_prefix=/" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01")
jq -r '.data[] | "\(.path) (\(.size_bytes) bytes, sha=\(.content_sha256[0:8]))"' <<< "$page"mem=$(curl -fsS "https://api.anthropic.com/v1/memory_stores/$store_id/memories/$memory_id" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01")
jq -r '.content' <<< "$mem"mem=$(curl -fsS "https://api.anthropic.com/v1/memory_stores/$store_id/memories" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- <<EOF
{
"path": "/preferences/formatting.md",
"content": "Always use tabs, not spaces."
}
EOF
)curl -fsS "https://api.anthropic.com/v1/memory_stores/$store_id/memories" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- > /dev/null <<EOF
{
"path": "/preferences/formatting.md",
"content": "Always use 2-space indentation.",
"precondition": {"type": "not_exists"}
}
EOFcurl -fsS -X PATCH "https://api.anthropic.com/v1/memory_stores/$store_id/memories/$mem_id" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
-d '{"path": "/archive/2026_q1_formatting.md"}' > /dev/nullcurl -fsS -X PATCH "https://api.anthropic.com/v1/memory_stores/$store_id/memories/$mem_id" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- > /dev/null <<EOF
{
"content": "CORRECTED: Always use 2-space indentation.",
"precondition": {"type": "content_sha256", "content_sha256": "$mem_sha"}
}
EOFcurl -fsS -X DELETE "https://api.anthropic.com/v1/memory_stores/$store_id/memories/$mem_id" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" > /dev/nullcurl -fsS "https://api.anthropic.com/v1/memory_stores/$store_id/memory_versions?memory_id=$mem_id" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
| jq -r '.data[] | "\(.id): \(.operation)"'curl -fsS "https://api.anthropic.com/v1/memory_stores/$store_id/memory_versions/$version_id" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01"curl -fsS -X POST "https://api.anthropic.com/v1/memory_stores/$store_id/memory_versions/$version_id/redact" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
-d '{}'