Инструмент памяти позволяет Claude сохранять и извлекать информацию между разговорами через каталог файлов памяти. Claude может создавать, читать, обновлять и удалять файлы, которые сохраняются между сеансами, позволяя ему накапливать знания с течением времени без необходимости хранить всё в окне контекста.
Инструмент памяти работает на стороне клиента — вы контролируете, где и как хранятся данные, через вашу собственную инфраструктуру.
Инструмент памяти в настоящее время находится в бета-версии. Чтобы включить его, используйте заголовок бета-версии context-management-2025-06-27 в ваших запросах API.
Пожалуйста, свяжитесь с нами через нашу форму обратной связи, чтобы поделиться своим мнением об этой функции.
Когда включено, Claude автоматически проверяет каталог памяти перед началом задач. Claude может создавать, читать, обновлять и удалять файлы в каталоге /memories для сохранения того, что он узнаёт во время работы, а затем ссылаться на эти воспоминания в будущих разговорах для более эффективного решения похожих задач или продолжения с того же места.
Поскольку это инструмент на стороне клиента, Claude делает вызовы инструментов для выполнения операций с памятью, а ваше приложение выполняет эти операции локально. Это дает вам полный контроль над тем, где и как хранится память. В целях безопасности вы должны ограничить все операции с памятью каталогом /memories.
Когда вы просите Claude помочь с задачей, Claude автоматически сначала проверяет каталог памяти. Вот как выглядит типичное взаимодействие:
1. Запрос пользователя:
"Help me respond to this customer service ticket."2. Claude проверяет каталог памяти:
"I'll help you respond to the customer service ticket. Let me check my memory for any previous context."Claude вызывает инструмент памяти:
{
"type": "tool_use",
"id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
"name": "memory",
"input": {
"command": "view",
"path": "/memories"
}
}3. Ваше приложение возвращает содержимое каталога:
{
"type": "tool_result",
"tool_use_id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
"content": "Directory: /memories\n- customer_service_guidelines.xml\n- refund_policies.xml"
}4. Claude читает релевантные файлы:
{
"type": "tool_use",
"id": "toolu_01D5E6F7G8H9I0J1K2L3M4N5",
"name": "memory",
"input": {
"command": "view",
"path": "/memories/customer_service_guidelines.xml"
}
}5. Ваше приложение возвращает содержимое файла:
{
"type": "tool_result",
"tool_use_id": "toolu_01D5E6F7G8H9I0J1K2L3M4N5",
"content": "<guidelines>\n<addressing_customers>\n- Always address customers by their first name\n- Use empathetic language\n..."
}6. Claude использует память для помощи:
"Based on your customer service guidelines, I can help you craft a response. Please share the ticket details..."Инструмент памяти доступен на:
claude-sonnet-4-5-20250929)claude-sonnet-4-20250514)claude-haiku-4-5-20251001)claude-opus-4-5-20251101)claude-opus-4-1-20250805)claude-opus-4-20250514)Чтобы использовать инструмент памяти:
context-management-2025-06-27 в ваши запросы APIДля обработки операций инструмента памяти в вашем приложении вам необходимо реализовать обработчики для каждой команды памяти. Наши SDK предоставляют помощники инструмента памяти, которые обрабатывают интерфейс инструмента — вы можете создать подкласс BetaAbstractMemoryTool (Python) или использовать betaMemoryTool (TypeScript) для реализации вашего собственного бэкенда памяти (на основе файлов, базы данных, облачного хранилища, зашифрованные файлы и т. д.).
Для рабочих примеров см.:
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--header "anthropic-beta: context-management-2025-06-27" \
--data '{
"model": "claude-sonnet-4-5",
"max_tokens": 2048,
"messages": [
{
"role": "user",
"content": "I'\''m working on a Python web scraper that keeps crashing with a timeout error. Here'\''s the problematic function:\n\n```python\ndef fetch_page(url, retries=3):\n for i in range(retries):\n try:\n response = requests.get(url, timeout=5)\n return response.text\n except requests.exceptions.Timeout:\n if i == retries - 1:\n raise\n time.sleep(1)\n```\n\nPlease help me debug this."
}
],
"tools": [{
"type": "memory_20250818",
"name": "memory"
}]
}'Ваша реализация на стороне клиента должна обрабатывать эти команды инструмента памяти:
Показывает содержимое каталога или содержимое файла с необязательными диапазонами строк:
{
"command": "view",
"path": "/memories",
"view_range": [1, 10] // Optional: view specific lines
}Создать или перезаписать файл:
{
"command": "create",
"path": "/memories/notes.txt",
"file_text": "Meeting notes:\n- Discussed project timeline\n- Next steps defined\n"
}Заменить текст в файле:
{
"command": "str_replace",
"path": "/memories/preferences.txt",
"old_str": "Favorite color: blue",
"new_str": "Favorite color: green"
}Вставить текст в определённую строку:
{
"command": "insert",
"path": "/memories/todo.txt",
"insert_line": 2,
"insert_text": "- Review memory tool documentation\n"
}Удалить файл или каталог:
{
"command": "delete",
"path": "/memories/old_file.txt"
}Переименовать или переместить файл/каталог:
{
"command": "rename",
"old_path": "/memories/draft.txt",
"new_path": "/memories/final.txt"
}Мы автоматически включаем эту инструкцию в системную подсказку, когда включен инструмент памяти:
IMPORTANT: ALWAYS VIEW YOUR MEMORY DIRECTORY BEFORE DOING ANYTHING ELSE.
MEMORY PROTOCOL:
1. Use the `view` command of your `memory` tool to check for earlier progress.
2. ... (work on the task) ...
- As you make progress, record status / progress / thoughts etc in your memory.
ASSUME INTERRUPTION: Your context window might be reset at any moment, so you risk losing any progress that is not recorded in your memory directory.Если вы заметите, что Claude создаёт загромождённые файлы памяти, вы можете включить эту инструкцию:
Примечание: при редактировании папки памяти всегда старайтесь поддерживать её содержимое в актуальном, согласованном и организованном виде. Вы можете переименовывать или удалять файлы, которые больше не актуальны. Не создавайте новые файлы, если это не необходимо.
Вы также можете направить то, что Claude записывает в память, например: «Записывайте в вашу систему памяти только информацию, релевантную <topic>».
Вот важные проблемы безопасности при реализации вашего хранилища памяти:
Claude обычно отказывается записывать конфиденциальную информацию в файлы памяти. Однако вы можете захотеть реализовать более строгую валидацию, которая удаляет потенциально конфиденциальную информацию.
Рассмотрите отслеживание размеров файлов памяти и предотвращение чрезмерного роста файлов. Рассмотрите добавление максимального количества символов, которые может вернуть команда чтения памяти, и позвольте Claude разбивать содержимое на страницы.
Рассмотрите периодическую очистку файлов памяти, которые не были доступны в течение длительного времени.
Вредоносные входные пути могут попытаться получить доступ к файлам вне каталога /memories. Ваша реализация ДОЛЖНА проверять все пути, чтобы предотвратить атаки обхода каталогов.
Рассмотрите эти меры защиты:
/memories../, ..\\ или другие шаблоны обхода%2e%2e%2f)pathlib.Path.resolve() и relative_to() в Python)Инструмент памяти использует те же шаблоны обработки ошибок, что и инструмент текстового редактора. Распространённые ошибки включают файл не найден, ошибки разрешений и недопустимые пути.
Инструмент памяти можно комбинировать с редактированием контекста, которое автоматически очищает старые результаты инструментов, когда контекст разговора превышает настроенный порог. Эта комбинация позволяет долгоживущим рабочим процессам агентов, которые иначе превысили бы ограничения контекста.
Когда редактирование контекста включено и ваш разговор приближается к порогу очистки, Claude автоматически получает уведомление с предупреждением. Это побуждает Claude сохранить любую важную информацию из результатов инструментов в файлы памяти перед тем, как эти результаты будут удалены из окна контекста.
После очистки результатов инструментов Claude может извлекать сохранённую информацию из файлов памяти всякий раз, когда это необходимо, эффективно рассматривая память как расширение своего рабочего контекста. Это позволяет Claude:
Рассмотрим проект рефакторинга кода с множеством операций с файлами:
/memories/refactoring_progress.xml)Чтобы использовать обе функции вместе:
response = client.beta.messages.create(
model="claude-sonnet-4-5",
max_tokens=4096,
messages=[...],
tools=[
{
"type": "memory_20250818",
"name": "memory"
},
# Your other tools
],
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{
"type": "clear_tool_uses_20250919",
"trigger": {
"type": "input_tokens",
"value": 100000
},
"keep": {
"type": "tool_uses",
"value": 3
}
}
]
}
)Вы также можете исключить вызовы инструмента памяти из очистки, чтобы убедиться, что Claude всегда имеет доступ к недавним операциям памяти:
context_management={
"edits": [
{
"type": "clear_tool_uses_20250919",
"exclude_tools": ["memory"]
}
]
}