Инструмент памяти
Позвольте Claude сохранять и извлекать информацию между разговорами, реализовав файловые операции инструмента памяти в вашем приложении.
Инструмент памяти (memory tool) позволяет Claude сохранять и извлекать информацию между разговорами в каталоге файлов памяти. Claude может создавать, читать, обновлять и удалять файлы, которые сохраняются между сессиями, накапливая знания со временем без необходимости держать всё в «context window» (контекстном окне).
Память поддерживает извлечение контекста по требованию (just-in-time). Вместо того чтобы загружать всю релевантную информацию заранее, агент записывает то, что узнаёт, в файлы памяти и считывает их обратно по мере необходимости. Это позволяет сосредоточить активный контекст на текущей задаче, что важно для длительных сессий, которые в противном случае переполнили бы контекстное окно. Более общий паттерн описан в статье Effective context engineering.
Инструмент памяти работает на стороне клиента: Claude запрашивает файловые операции, а ваше приложение их выполняет. Вы контролируете, где и как хранятся данные, с помощью собственной инфраструктуры.
Сценарии использования
- Поддержание контекста проекта на протяжении нескольких сессий агента
- Применение уроков из прошлых взаимодействий, решений и обратной связи к новым задачам
- Постепенное накопление базы знаний
Как это работает
Когда инструмент памяти включён, Claude автоматически проверяет свой каталог памяти перед началом задачи. В процессе работы Claude сохраняет то, что узнаёт, в файлах в каталоге /memories и считывает их в последующих разговорах, чтобы продолжить начатую ранее работу.
Поскольку инструмент памяти работает на стороне клиента, Claude лишь запрашивает операции с памятью. Ваше приложение выполняет каждый запрос в хранилище, которое вы контролируете, и возвращает результат в блоке tool_result (см. Обработка вызовов инструментов). Путь /memories — это префикс, который ваш обработчик отображает на реальное хранилище, например каталог для каждого пользователя или ключи в базе данных. Память полностью находится в вашем приложении. Последующий разговор продолжается с той же памятью, если он отправляет ту же запись tools, а ваш обработчик обслуживает то же хранилище. В целях безопасности ограничьте все операции с памятью каталогом /memories (см. Защита от обхода путей).
Пример: как работают вызовы инструмента памяти
Типичное взаимодействие выглядит так:
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": "Here're the files and directories up to 2 levels deep in /memories, excluding hidden items and node_modules:\n4.0K\t/memories\n1.5K\t/memories/customer_service_guidelines.xml\n2.0K\t/memories/refund_policies.xml"
}4. Claude читает релевантные файлы:
{
"type": "tool_use",
"id": "toolu_01D5E6F7G8H9I0J1K2L3M4N5",
"name": "memory",