# Память (Memory)

> Как Kodik сохраняет информацию между задачами с помощью именованных файлов памяти.

Источник: https://docs.kodik.ru/context/memory

Kodik может запоминать факты, договорённости и контекст, которые должны сохраняться между отдельными задачами, а также держать временные рабочие заметки для одной долгой задачи. Для этого используется инструмент `memory`.

## Как работает инструмент `memory`

Во время выполнения задачи агент может вызвать инструмент `memory` с тремя параметрами:

| Параметр  | Описание                                              |
| --------- | ----------------------------------------------------- |
| `scope`   | Область хранения: `workspace`, `global` или `session` |
| `path`    | Имя файла памяти (без пути к директории, только имя)  |
| `content` | Содержимое для сохранения (Markdown)                  |

Чтобы удалить запись, агент передаёт параметр `delete: "true"` вместо `content`.

Путь — это просто имя файла без директорий. Расширение `.md` добавляется автоматически, если его нет. Абсолютные пути и символы `..` не разрешены.

:::note
Записи в `workspace` и `global` создают, обновляют или удаляют файлы в выбранной области и загружаются в контекст агента при следующей задаче. Session memory работает иначе: она сохраняется внутри текущей chat-сессии и становится видна агенту после сжатия разговора.
:::

## Области хранения

### Память рабочего пространства

Файлы хранятся в `.kodik/memories/` в корне текущего проекта. Эта память относится только к данному проекту и может быть добавлена в систему контроля версий.

Пример файла: `.kodik/memories/testing-conventions.md`

### Глобальная память

Файлы хранятся в директории `~/.kodik/Memories/` (на Windows — `C:\Users\<Пользователь>\.kodik\Memories\`). Глобальная память доступна во всех проектах и рабочих пространствах.

### Session memory

Session memory хранится внутри текущей chat-сессии, а не в отдельном файле на диске. Она предназначена для временного состояния задачи: планов, решений, блокеров и заметок для продолжения работы, которые должны пережить перезапуск и сжатие, но исчезнуть при удалении задачи.

Session memory управляется в **Settings** → **Agents** → **Session memory**. Если выключить переключатель, область `session` исчезает из инструмента `memory`, а сжатые summary остаются только по стенограмме разговора.

## Загрузка в контекст агента

При каждом запуске задачи Kodik загружает файлы памяти `workspace` и `global` в системный промпт. Файлы каждой долговременной области помещаются внутрь тега `<memory>` в начале контекста. Для каждой долговременной области существует лимит — не более **200 строк** и **50 файлов**.

Session memory не загружается в системный промпт. Когда разговор уже был сжат, Kodik добавляет текущую session memory к сжатому assistant summary. Этот блок ограничен первыми **200 строками**, чтобы долгие сессии не переполняли следующий запрос. Каждая отдельная запись памяти не может превышать **16 КБ**.

Поскольку файлы памяти — это обычные `.md`-файлы, их можно просматривать и редактировать вручную. Kodik также автоматически удаляет значения, похожие на секреты (токены, ключи API), перед записью.

## Практические советы

- Просите агента сохранить конвенции команды, предпочтения по стилю кода или детали архитектуры в память рабочего пространства — они будут автоматически присутствовать в следующих сессиях.
- Используйте глобальную память для личных предпочтений, которые применимы ко всем проектам (например, предпочтительный язык для ответов).
- Используйте session memory для временного состояния задачи, которое должно пережить сжатие, но не должно становиться проектной конвенцией.
- Файлы памяти можно создавать или редактировать вручную — Kodik загрузит их так же, как созданные агентом.
- Чтобы проверить, что именно сохранено, откройте `.kodik/memories/` в проводнике или `~/.kodik/Memories/` для глобальной памяти.
