Модуль 2 · Расширения · урок 15 из 16
Память между сессиями
Каждая новая сессия Codex начинается с чистого листа: агент читает AGENTS.md и навыки, но не помнит, что вы вчера выяснили про странный кэш на стенде. Память (memories) — экспериментальная функция, которая закрывает этот разрыв: Codex сам выбирает полезное из прошлых чатов и подмешивает в будущие. В этом уроке — как она работает, как её настроить и где её место рядом с AGENTS.md.
Как устроена локальная память
После включения Codex превращает полезный контекст из подходящих прошлых чатов в локальные файлы памяти. Несколько деталей, которые объясняют поведение:
- Генерация идёт в фоне, а не сразу. Codex ждёт, пока чат простоит без активности достаточно долго, чтобы не конспектировать незаконченную работу. По умолчанию — не меньше 6 часов (
memories.min_rollout_idle_hours). Поэтому вывод «память не работает» через пять минут после чата преждевременен. - Короткие и активные чаты пропускаются.
- Секреты вычищаются из сгенерированных полей памяти. Но это страховка, а не гарантия — о ней ниже.
- Лимит бережётся. Если оставшаяся доля лимита Codex ниже порога (
memories.min_rate_limit_remaining_percent, по умолчанию 25%), фоновый проход пропускается.
Память в Codex локальная и отдельная от памяти ChatGPT в вебе. IDE-расширение пользуется хранилищем того хоста Codex, к которому подключено.
Где хранится
Файлы памяти лежат в домашнем каталоге Codex — по умолчанию ~/.codex, основное содержимое в ~/.codex/memories/: сводки, устойчивые записи, свежие входные данные и подтверждения из прошлых чатов.
Документация просит относиться к этим файлам как к сгенерированному состоянию. Заглядывать в них можно — при отладке или перед тем, как кому-то передать каталог ~/.codex. Править руками как основной способ управления — нет: следующий проход консолидации всё равно перепишет их по-своему.
Включение и настройка
По умолчанию память выключена. В десктопном приложении её включают в настройках персонализации, в CLI — флагом функции:
[features]
memories = true
[memories]
use_memories = true
generate_memories = true
disable_on_external_context = trueЧто означают ключи:
use_memories— подмешивать ли существующую память в новые сессии;generate_memories— можно ли использовать новые чаты как материал для памяти;disable_on_external_context— не брать в память чаты, где были вызовы MCP-инструментов, веб-поиск или поиск инструментов. Старое имя ключа —no_memories_if_mcp_or_web_search;extract_modelиconsolidation_model— другие модели для извлечения памяти из чата и для общей консолидации.
Остальные ключи — сроки хранения, число обрабатываемых чатов за один проход — описаны в справочнике конфигурации.
Управление на уровне чата
Команда /memories в CLI и десктопном приложении решает два вопроса для текущего чата: может ли он пользоваться существующей памятью и может ли сам стать материалом для неё. Глобальные настройки при этом не меняются.
Практическое применение: разовый эксперимент, после которого остались неверные выводы, или чат с чувствительными данными — выключите для него генерацию, и он не попадёт в память.
Для своих субагентов память можно выключить в файле агента ключом features.memories = false — узкому агенту она обычно только мешает.
Память и AGENTS.md — разные вещи
Главная ошибка — надеяться на память там, где нужно правило. Документация формулирует однозначно: обязательные командные правила держите в AGENTS.md и документации в репозитории, а память — вспомогательный слой припоминания.
| AGENTS.md | Навык | Память | |
|---|---|---|---|
| Кто пишет | Команда, через MR | Команда, через MR | Codex сам, в фоне |
| Где живёт | В репозитории | В репозитории или ~/.agents |
Локально в ~/.codex |
| Видит команда | Да | Да | Нет, только вы |
| Гарантия применения | Читается каждую сессию | По описанию или явному вызову | Если Codex сочтёт уместным |
Хороший сценарий: память подсказывает, что в прошлый раз тесты на этом модуле падали из-за часового пояса стенда. Если это повторяется — переносите знание в AGENTS.md или в тест, где оно станет общим и проверяемым. Плохой сценарий: «агент же помнит, что миграции у нас обязаны ставить updated_at». Не помнит гарантированно — это правило для AGENTS.md.
Данные клиентов и приватность
В агентстве в чаты попадают куски кода клиентов, логи с персональными данными, ответы API из CRM. Перед включением памяти договоритесь о правилах:
- Секреты в чат не вставляйте. Codex вычищает их из памяти, но документация всё равно просит не хранить секреты в памяти и проверять файлы перед тем, как делиться каталогом
~/.codex. - Включите
disable_on_external_context, если MCP-серверы ходят в базы, GitLab или трекер: тогда чаты с внешними данными не станут материалом для памяти. - Не передавайте
~/.codexцеликом — ни коллеге, ни в образ контейнера. Если нужно поделиться настройкой, берите config.toml без каталога памяти. - Сброс — в десктопном приложении есть удаление памяти Codex для текущей машины.
Если ваша организация управляет Codex централизованно, администратор может принудительно включить или выключить память через управляемую конфигурацию.
Попробуйте сами
10–15 мин на рабочем месте- Включите память в config.toml с
disable_on_external_context = true. Поработайте день как обычно, на следующий день загляните в~/.codex/memories/и посмотрите, что Codex счёл полезным. - Найдите в памяти факт, который на самом деле является правилом проекта, и перенесите его в AGENTS.md.
- Откройте чат для разового эксперимента и через
/memoriesзапретите ему становиться материалом для памяти.
Коротко
- Память — экспериментальная функция, по умолчанию выключена:
[features] memories = true. - Codex генерирует её в фоне из завершённых, достаточно долго простоявших чатов и хранит в
~/.codex/memories/. /memoriesуправляет текущим чатом,[memories]в config.toml — глобальным поведением.- Обязательные правила — в AGENTS.md; память лишь подсказывает и видна только вам.
- Для работы с клиентскими данными включайте
disable_on_external_contextи не делитесь каталогом~/.codex.