Сервис развивается: тестируем формат, собираем идеи, улучшаем сервис. Есть идеи?

Написать
Войти
Дайджесты
Схематичное изображение трёхуровневой памяти искусственного интеллекта в виде светящихся слоёв данных

Архитектура памяти ИИ-агентов: как трёхэтапная структура защищает от галлюцинаций и экономит токены

Неправильная настройка памяти ИИ-агента приводит к потере контекста, галлюцинациям и перерасходу токенов. Переход на трёхуровневую систему памяти в связке с автоматическими чекпоинтами и внешним скользящим логом позволяет удерживать агентов в контексте долгосрочных задач и экономить лимиты.

Архитектура памяти ИИ-агентов: как трёхэтапная структура защищает от галлюцинаций и экономит токены

Представьте сценарий: ИИ-агент выполняет сложную задачу. На третьем шаге из-за сбоя он теряет контекст и начинает все заново, что приводит к повторному расходу токенов (единиц учета текста в API) и потере времени.

Настройка памяти — фундамент стабильности ИИ-агента. Ошибки проектирования приводят к двум крайностям: либо агент подгружает лишнюю историю диалога и сжигает бюджет, либо страдает от «амнезии», выполняя действия как впервые. Надежная архитектура разделяет данные по времени их жизни.

Ключевые термины и экономика токенов

Для понимания принципов работы памяти важно знать базовые ИТ-понятия:

  • Контекстное окно (Context Window) — объем оперативной памяти модели для одного ответа. Его можно сравнить со стаканом: при переполнении старые данные вымываются.
  • Эффект вымывания контекста (Context Rot) — деградация внимания модели при переполнении окна, ведущая к потере фокуса.
  • Галлюцинация (Hallucination) — генерация моделью ложных фактов из-за потери нити разговора.
  • API против веб-подписок: веб-чаты ограничены ~200 тыс. токенов. Через API доступны окна до 1 млн токенов (модели Claude на Anthropic API, Bedrock, Vertex AI), но каждый запрос тарифицируется.
  • Компактизация (Compaction) — автосжатие истории сообщений в краткое резюме.
  • Чекпоинт (Checkpoint) — сохранение состояния работы (что сделано, какие решения приняты, что осталось).
  • Скользящий лог (Rolling Log) — внешний файл дневной переписки для защиты от сбоев.

Четыре уровня памяти ИИ-систем

Чтобы агент работал стабильно, память разделяют на четыре слоя:

  1. Уровень 0: Защитный скользящий лог. Внешний файл, куда действие записывается перед отправкой запроса к LLM. При перезапуске агент берет последние 20 сообщений, чтобы понимать недавний контекст без чтения всего лога.
  2. Уровень 1: Активная сессия. Текущий чат, базовые правила и файлы задачи. Базовый файл правил проекта (аналог CLAUDE.md) загружается в стартовый контекст при каждой сессии. Его объем не должен превышать 200–300 строк.
  3. Уровень 2: Чекпоинты. Фиксируют итоги. Чекпоинты создаются автоматически при переполнении контекстного окна или каждые 10–30 сообщений. При сбое агент видит статус выполнения предыдущих шагов и продолжает работу со следующего, экономя время и бюджет.
  4. Уровень 3: Долгосрочная память. Инструкции и навыки, нужные редко (например, ежемесячные отчеты). Временные элементы удаляются через 30 дней. Полезен паттерн самообучения (Dream): агент анализирует сессии, извлекает 3–7 паттернов и предлагает перенести их в долгосрочную память.
Слой памятиЧто хранитсяВремя жизниЧтениеКакую проблему решает
Уровень 0: ЛогШаги работы, 20 реплик1 деньПри сбояхПотеря состояния при краше
Уровень 1: СессияСистемный промпт, чатВремя задачиПри запросеКонтроль текущего диалога
Уровень 2: ЧекпоинтСтатус, решенияДо конца проектаПри сбояхПовторная трата токенов
Уровень 3: База знанийШаблоны, навыки, n8nПостоянноПо запросуРаздувание контекста

Пошаговое руководство по настройке памяти

1. Проектные инструкции в Claude Code

Файл стандартов удерживает агента в рамках правил проекта. Описание дано в документации Claude Code по памяти.

  • Где выполняется: Терминал в корневом каталоге проекта.
  • Порядок настройки:
    1. Создайте файл CLAUDE.md в корне проекта или скрытой папке .claude/CLAUDE.md.
    2. Запишите туда стандарты: команды сборки, запуска тестов, правила именования.
    3. Для автоматического создания структуры выполните команду инициализации /init.
    4. Сократите размер файла: Anthropic рекомендует укладывать CLAUDE.md строго в пределы 200 строк, так как он считывается на старте сессии и расходует токены.
    5. Локальные настройки вынесите в CLAUDE.local.md и добавьте в .gitignore.
  • Проверка: Откройте сессию Claude Code и спросите: «Summarize project build and test commands». Агент должен вывести точные команды из файла CLAUDE.md.
2. Автоматическая компактизация в API Claude

Настройка серверного сжатия контекста при приближении к лимитам. Описание дано в документации Claude API по лимитам контекста и инструкции по компактизации.

  • Где выполняется: Серверный код вашего приложения, отправляющий запросы к API Anthropic.
  • Порядок настройки:
    1. Добавьте в HTTP-заголовки запроса параметр: anthropic-beta: compact-2026-01-12.
    2. В теле запроса внутри объекта context_management укажите тип редактирования: "type": "compact_20260112".
    3. Задайте пороговое значение trigger (лимит входящих токенов, по умолчанию 150 000, минимум — 50 000). При необходимости приостановить работу установите флаг "pause_after_compaction": true.
    4. При превышении порога API сгенерирует блок compaction со сжатым саммари всей предыдущей беседы. Передавайте его в массиве сообщений. Сервер автоматически отбросит сырые сообщения, предшествующие точке сжатия.
  • Проверка: Отправьте тестовый диалог через API, превысив лимит триггера, и убедитесь, что в ответе появился объект compaction.
3. Оптимизация кэширования промптов (Prompt Caching) in OpenAI

Снижает задержку ответов до 80% и затраты на токены до 90%. Описание дано в руководстве OpenAI по кэшированию.

  • Где выполняется: Код интеграции с API OpenAI (настройка структуры отправляемого промпта).
  • Порядок настройки:
    1. Разделите промпт на статическую (инструкции, схемы) и динамическую (конкретный вопрос) части.
    2. Поместите статическую часть в начало промпта. Кэширование выполняется по точному совпадению префикса (Exact Prefix Matching). Любое изменение в начале текста (например, добавление текущего времени) сбросит кэш.
    3. Размещайте динамические данные строго в конце запроса, после статического блока.
    4. Убедитесь, что объем статического префикса составляет не менее 1024 токенов — кэширование OpenAI активируется только для запросов этого объема и выше.
    5. Учитывайте время жизни кэша: в оперативной памяти он живет от 5 до 10 минут при неактивности (максимум до 1 часа).
  • Проверка: Отправьте два запроса с интервалом в 1 минуту. В объекте usage JSON-ответа второго запроса проверьте поле cached_tokens.
4. Создание безопасного скользящего лога и чекпоинтов

Сохранение состояния на уровне базы данных или файловой системы.

  • Где выполняется: Модуль управления состоянием (State Management) в кодовой базе вашего ИИ-агента.
  • Порядок настройки:
    1. Реализуйте pre-logging: перед каждым вызовом LLM или запуском инструмента записывайте в базу данных или файл JSON текущий запрос пользователя и планируемое действие агента.
    2. Настройте автоматическую архивацию или удаление файлов логов (например, log_20260614.json) старше 30 дней.
    3. Реализуйте сохранение чекпоинтов в виде структурированного JSON-объекта, фиксирующего завершенные шаги (completed_steps), текущее действие (current_step), принятые операционные решения (decisions) и измененные файлы (touched_files).
    4. Безопасность: Настройте функцию фильтрации перед записью в лог или чекпоинт. Регулярные выражения должны автоматически вырезать из текста API-ключи (например, строки, начинающие с sk-), пароли и персональные данные клиентов.
  • Проверка: Принудительно завершите процесс агента во время выполнения задачи. Запустите агента снова и убедитесь, что он восстановил состояние из файла чекпоинта и продолжил работу, а логи не содержат приватных ключей.

Ограничения и риски архитектуры памяти

Внедрение сложной памяти связано с рядом ограничений. Во-первых, точность извлечения информации падает к середине контекстного окна (lost in the middle). Располагайте ключевые факты ближе к краям промпта. Во-вторых, ведение подробных логов без фильтрации приведет к утечке паролей или тайн в файлы на сервере, поэтому автоматическая очистка секретов обязательна. В-третьих, неверные настройки компактизации могут удалить важные технические параметры, лишив агента способности завершить проект.