# Agent Memory (память ИИ-агента): что это и как агенты помнят между сессиями

> **Agent Memory** (память ИИ-агента) — механизм, который сохраняет состояние агента между сессиями: факты о пользователе, принятые решения, состояние задачи. В отличие от контекстного окна, которое живёт только в пределах одного запроса, память хранится во внешнем хранилище и подгружается в контекст, когда она нужна.

Модель сама ничего не помнит: каждый запрос к API начинается с чистого листа, а [контекстное окно](/pages/kontekstnoe-okno-nejroseti) ограничено. Поэтому [ИИ-агент](/pages/ai-agent) без памяти в каждой сессии заново изучает проект, переспрашивает договорённости и перечитывает код. Память убирает эту «слепоту между сессиями»: агент начинает работу с готовыми заметками. В документации Claude Code это описано прямо: каждая сессия начинается с чистого контекстного окна, а знания между сессиями переносят два механизма — файлы CLAUDE.md и auto memory.

## Виды памяти {#vidy-pamyati}

- **Кратковременная** — история диалога и промпт в пределах одной сессии. Исчезает вместе с контекстом.
- **Рабочая (scratchpad)** — черновик агента для текущей задачи: план, промежуточные выводы, список шагов. В Letta для этого заводят отдельный блок памяти.
- **Долговременная** — хранится вне контекста: файлы-заметки, векторная база, git-репозиторий. Делится на два подвида:
  - **эпизодическая** — что происходило: конкретные сессии, действия, ошибки;
  - **семантическая** — что известно: факты о пользователе, проекте, предпочтениях.

## Как это работает {#kak-rabotaet}

У конкретных продуктов реализация отличается, но общий цикл похож:

1. **Извлечение.** Агент или отдельный процесс выделяет из диалога и вызовов инструментов то, что стоит запомнить: решение, поправку пользователя, предпочтение.
2. **Запись.** Факт сохраняется в хранилище: строкой в файле, записью в базе или вектором эмбеддинга.
3. **Консолидация.** История сжимается: похожие записи объединяются, длинные сессии превращаются в краткие сводки (суммаризация).
4. **Поиск при чтении.** В начале сессии подгружается индекс заметок, а детали достаются по запросу — по ключевым словам или по сходству эмбеддингов (ретрив).
5. **Забывание.** Устаревшее и дублирующее удаляется или помечается. Без этого шага память разрастается, а старые факты начинают противоречить новым.

## Как это выглядит в продуктах {#primery}

- **Claude Code.** Постоянные инструкции лежат в `CLAUDE.md` — его пишет человек. Кроме того, Claude Code ведёт auto memory: заметки о ваших поправках и предпочтениях сохраняются в `~/.claude/projects/<project>/memory/`, а индекс `MEMORY.md` загружается в начале каждой сессии (первые 200 строк или 25 КБ).
- **claude-mem.** Плагин для Claude Code: хуки жизненного цикла фиксируют наблюдения о работе агента, сводки хранятся в SQLite, а поиск идёт гибридно, с векторной базой Chroma. Чтобы не раздувать контекст, поиск устроен в три шага: компактный индекс (`search`), хронология (`timeline`) и полные записи только по отобранным id (`get_observations`). Чувствительный текст можно исключить из хранилища тегом `<private>`.
- **Letta.** Блоки памяти (memory blocks) — структурированные секции контекста с полями `label`, `description`, `value` и `limit`; они всегда видны модели. Отдельно есть archival memory — хранилище с семантическим поиском, к которому агент обращается через инструменты. В новых версиях Letta переходит на MemFS — память в виде git-репозитория, которую агент правит обычными файловыми инструментами; фоновая «консолидация» (dreaming) обновляет её без участия пользователя.
- **nanobot.** Долговременные факты лежат в рабочей папке: `memory/MEMORY.md` и `memory/history.jsonl`, недавняя переписка — в базе сессий. Периодическая задача Dream читает накопленную историю и обновляет память.
- **Memory tool у Anthropic.** Модель создаёт, читает, обновляет и удаляет файлы в каталоге `/memories`; путь — это префикс, который ваш обработчик сопоставляет с реальным хранилищем: папкой, базой или ключами.

## Риски {#riski}

- **Приватность.** Память хранит данные пользователя, поэтому важно знать, где она лежит (локально или в облаке) и можно ли исключить чувствительное.
- **Рост контекста и цены.** Всё, что подгружено из памяти, оплачивается как входные токены в каждом запросе. Подробнее — в статье про [расчёт стоимости токенов](/pages/raschet-stoimosti-tokenov).
- **Залипание на устаревших фактах.** Агент уверенно опирается на запись, которая давно неверна. Помогают даты в записях, ревизия и удаление.
- **Промпт-инъекции через память.** Если в заметку попал текст из недоверенного источника (веб-страница, письмо), он вернётся в контекст как инструкция. Записи из внешних источников стоит помечать и проверять.

## Отличие от RAG, дообучения и кэширования {#sravnenie}

| | Память агента | [RAG](/pages/rasshirennaya-generaciya-s-poiskom-rag) | Дообучение (fine-tuning) | Prompt caching |
|---|---|---|---|---|
| Что это | заметки и состояние самого агента | поиск по внешней базе знаний | изменение весов модели | повторное использование обработанного префикса промпта |
| Что хранит | факты о пользователе, решения, прогресс задачи | документы, статьи, код | навыки и стиль, зашитые в модель | ничего нового: только ускоряет и удешевляет повтор |
| Кто пополняет | сам агент по ходу работы | разработчик, индексируя источники | разработчик, обучением | не пополняется |
| Обновляется | в любой момент, записью в файл или базу | переиндексацией | только новым обучением | на время жизни кэша |

Память и RAG часто используют общую технику (эмбеддинги, поиск по сходству), но решают разные задачи: RAG отвечает «что написано в документах», память — «что мы уже обсуждали и решили».

## Память и RouterAI {#routerai}

Память живёт на стороне клиента: в файлах, базе или самом инструменте. RouterAI в её хранении не участвует и по-прежнему принимает обычные запросы к OpenAI-совместимому API `https://routerai.ru/api/v1` (или Anthropic Messages API `https://routerai.ru/api`). Это означает, что заметки можно подставлять в промпт и работать с любой моделью из [каталога](/models), меняя её без потери памяти. Оплата идёт за токены, включая подгруженные заметки; работа из России без VPN, оплата в рублях.

```python
from pathlib import Path
from openai import OpenAI

client = OpenAI(
    base_url="https://routerai.ru/api/v1",
    api_key="sk-xxxxxxxxxxxxxxxx",
)

memory = Path("MEMORY.md").read_text(encoding="utf-8")

resp = client.chat.completions.create(
    model="anthropic/claude-sonnet-5.5",
    messages=[
        {"role": "system", "content": f"Заметки о проекте: {memory}"},
        {"role": "user", "content": "Продолжим с того места, где остановились."},
    ],
)
print(resp.choices[0].message.content)
```

Обновление заметок после сессии — отдельный вызов: можно поручить его более дешёвой модели из каталога, например `anthropic/claude-haiku-5.5`. Стоимость зависит от модели и объёма заметок.

## Связанные термины {#svyazannye-terminy}

- [Удержание контекста диалога](/pages/uderzhanie-konteksta-dialoga) — как модель «помнит» разговор внутри одной сессии
- [Управление контекстом](/pages/upravlenie-kontekstom-neyroseti-context-management) — что оставить в окне, а что вынести
- [Контекст-инжиниринг](/pages/kontekst-inzhiniring-context-engineering) — подбор данных для каждого шага агента
- [Agent Harness](/pages/agent-harness) — обвязка, в которой работает память агента
- [Agent Skills](/pages/agent-skills) — другой способ передавать агенту знания: навыки

## Что почитать {#chto-pochitat}

- [How Claude remembers your project](https://code.claude.com/docs/en/memory) — CLAUDE.md и auto memory в Claude Code
- [Memory tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/memory-tool) — документация Anthropic
- [Memory blocks](https://docs.letta.com/v1-sdk/memory/memory-blocks) и [Memory & dreaming](https://docs.letta.com/configuration/memory) — документация Letta
- [claude-mem на GitHub](https://github.com/thedotmack/claude-mem) — README плагина
- [nanobot: concepts](https://github.com/HKUDS/nanobot/blob/main/docs/concepts.md) — память, сессии и Dream
