Разбор статьи · Naveen Anand Mishra, HackerNoon, 24.08.2026

Память ИИ-агента: от эпизодов к знаниям

Пересказ и разбор на русском. Раздел «Применить у себя» — моя интерпретация, в статье его нет. Оригинал: hackernoon.com. Издание отмечает, что статья частично написана с помощью ИИ.
Главная мысль. Память агента — не одна корзина с поиском. Это несколько разных видов информации с разной ролью, правилами записи, поиска и забывания. Начинать нужно с вопроса: какой тип памяти нам нужен и какое решение она должна питать?

Проблема: свалка вместо памяти

Агент успешно забронировал билет: нашёл рейс, сравнил варианты, применил политику поездок. Что запомнить? Очевидный ответ: всё. Вложить в вектор разговор, вызовы инструментов, ответ, скриншоты, предпочтения, документы. Получается дорогая свалка.

Проблема не в том, что хранится мало. Разные по смыслу вещи обрабатываются так, будто выполняют одну работу:

В одном пуле поиск даёт много похожего, но без сигнала, что это значит и насколько этому верить. Это «хранилище с поисковой строкой», а не память.

Четыре типа памяти

Названия взяты из когнитивной науки. У аналогии есть пределы (см. раздел ниже), но типы полезны: у каждого свои хранение, поиск, обновление и срок жизни.

Рабочая память (working)

Текущее рабочее место: цель, план, последние ответы инструментов, нерешённые вопросы. Для агента-бронировщика: маршрут, три тарифа в сравнении, проверка, которая ещё не закончена.

Должна быть маленькой, релевантной и одноразовой. Не путать с контекстным окном: окно — где информация может появиться, а рабочая память — решение, что сейчас заслуживает места в нём. Если держать все старые сообщения, агент не становится информированнее, его проще отвлечь.

маленькаяодноразоваяистекает

Эпизодическая память (episodic)

Конкретные прошлые события и их структура: цель, контекст, последовательность действий, наблюдения, итог.

«8 июля пользователь отклонил самый дешёвый тариф, потому что в него не входил багаж; потом агент нашёл варианты с багажом.»

Это прецедент, и только. Из него не следует, что пользователь отвергает все дешёвые тарифы. Здесь простая векторная база опаснее всего: сходство текста находит старый опыт, но не говорит, как его трактовать.

событиепрецедентне правило

Семантическая память (semantic)

Факты, связи и предпочтения, которые живут дольше эпизода, породившего их: «пользователь любит место у прохода», «перелёты дороже 800 долларов требуют согласования», «ORD — аэропорт О'Хара».

Одного текста мало. В боевых системах для каждого факта нужны происхождение, уверенность, область действия и свежесть. «Любит проход» из одной фразы и из десяти бронирований — разные вещи. Без этих полей слабо подтверждённый факт становится таким же авторитетным, как сильный.

фактыисточникуверенностьсвежесть

Процедурная память (procedural)

Способы действовать: проверенные сценарии, ограничения, пороги согласования. Их не просто вспоминают, они прямо формируют план.

Ловушка: если каждая удачная траектория становится процедурой, то одна случайно удачная, пропустившая обязательный шаг, превратится в «доверенный сценарий». Эпизодическая память говорит, что было; процедурная определяет следующий шаг, и здесь обязательна проверка.

сценариипорогипроверка до записи
Одна задача — все четыре типа. Запрос на смену рейса создаёт временное состояние (рабочая), завершённое событие (эпизодическая), предпочтение «всегда утренние рейсы» (семантическая) и, если обработка платы за изменение оказалась устойчивой, кандидата на обновление процедуры (процедурная).

Контракт записи памяти

Основа — классификация. Любая запись получает явный тип и метаданные до записи, а не выводится при поиске:

{
  "id": "mem_9f1a2c",
  "type": "semantic",
  "content": "Пользователь предпочитает место у прохода на рейсах дольше 3 часов.",
  "scope": { "owner": "user_4821", "applies_to": "long_haul_flights" },
  "provenance": {
    "source": "episodic",
    "derived_from": ["ep_7712", "ep_7810", "ep_8004"],
    "extraction_method": "explicit_statement"
  },
  "confidence": 0.86,
  "created_at": "2026-06-02T14:11:00Z",
  "last_validated_at": "2026-07-19T09:00:00Z",
  "expires_at": null,
  "supersedes": null
}
ПолеЗачем
typeопределяет правила записи, поиска и срока жизни
scopeчей это факт и где применим
provenanceоткуда взято и как извлечено, основа для аудита
confidenceнасколько можно доверять
created_at / last_validated_at / expires_atсвежесть и срок жизни
supersedesкакую запись заменяет, чтобы старое не мешало

Маршрутизация: сначала куда, потом что

Нужен слой, который решает, где искать, прежде чем решать, что похоже. Плоское векторное хранилище этого не делает. Попробуй:

рабочаяэпизодическаясемантическаяпроцедурная
def retrieve(query, task_purpose, user_id):
    # 1. Определяем, какие типы памяти нужны этой задаче
    candidate_types = classify_purpose(task_purpose)
    # "проверить политику багажа"       -> ["semantic", "procedural"]
    # "делал ли пользователь так раньше?" -> ["episodic"]

    results = []
    for mem_type in candidate_types:
        hits = vector_search(query,
            filter={"type": mem_type, "scope.owner": user_id}, top_k=8)
        results.extend(hits)

    # 2. Ранжируем внутри выбранного подмножества, а не во всей базе
    return rank(results, weights={"relevance": 0.4, "confidence": 0.3,
                                  "recency": 0.2, "scope_match": 0.1})

Код не главное. Главное: «искать всё, а модель разберётся» заменяется на «классифицировать, искать внутри типа, ранжировать». Классификация происходит при записи и при поиске; поиск по сходству идёт только внутри уже ограниченного набора.

Как это ломается на практике

Когда агент накапливает разные типы памяти и продолжает работу после паузы, собирая состояние из сохранённого, временный обходной путь после упавшего вызова инструмента может получить более высокий ранг, чем утверждённая процедура для этого инструмента. Формулировки те же, вектора близки, а сигнала «это временное» нет. Решение — не более точный поиск, а отказ записывать временное решение в ту же базу, что и официальную процедуру.

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

Пять принципов

Не нужно пять разных баз: разделение может быть логическим, а не физическим. Важен контракт.

1. Типизировать всё явно

Тип, происхождение, время, владелец, область, уверенность и срок рядом с содержанием. Не заставлять модель выводить тип потом.

2. Разные правила записи для разных типов

Рабочую пишем свободно и даём истекать. Эпизод логируем после значимого опыта. Семантические факты извлекаем с проверкой конфликтов. Процедуры повышаем после настоящей проверки. Чем сильнее запись влияет на будущие действия, тем труднее её записать навсегда.

3. Искать сначала по цели, потом по сходству

Решить, что нужно: прежний опыт, факт или утверждённая процедура. Искать внутри этого типа и ранжировать по релевантности, свежести, уверенности и области.

4. Явные пути повышения

Повторяющиеся эпизоды могут подтвердить семантическое предпочтение; несколько проверенных опытов дают кандидата в процедуры. Тихого повышения быть не должно.

5. Забывание как часть архитектуры

Временное истекает, устаревшие факты заменяются, неважные эпизоды архивируются, процедуры перепроверяются, просьбы пользователя об удалении выполняются. Больше хранилища — не значит больше памяти.

Где метафора ломается

Человеческая память консолидируется во сне, постепенно угасает и неточно восстанавливается при вспоминании. Память агента по умолчанию ничего этого не делает: каждая запись намеренная, каждое чтение — запрос, ничто не истекает, если архитектура этого не требует.

В этом и преимущество: можно навязать дисциплину, которой у мозга не было: у каждого факта источник, у каждой процедуры журнал, жёсткий срок вместо естественного забывания. Классификация полезна, а антропоморфизм за её пределами в основном мешает.

База данных — ещё не архитектура памяти

ХранилищеЧто делает хорошо
Векторная базанаходит похожие эпизоды
Графсущности и связи в семантической памяти
Реляционная базаверсии процедур с историей изменений

Ни одна из них сама не решает, чем является событие: прецедентом, фактом, процедурой или шумом. Это задача слоя сверху: классификация, правила записи, маршрутизация поиска, проверка, повышение, забывание. Агенту нужна не одна большая память, а нужное воспоминание в нужный момент с нужным уровнем авторитета. И когда что-то пошло не так, нужно понять, что подвело: опыт, факт, процедура или текущее состояние.

Открытый вопрос

Положить правильное в правильную корзину — половина задачи. Труднее другое: какие воспоминания заслуживают стать знанием? Верный вывод может прийти из чистой траектории, исправленной ошибки или удачной догадки, и если система их не различает, даже хорошая архитектура сохранит неправильные уроки. Память нужно оценивать, прежде чем она станет знанием. Этому автор обещает посвятить следующую часть.

Применить у себя (моя интерпретация)

Этого раздела нет в статье. Это мои гипотезы о том, как сопоставить идеи автора с памятью личного агента. Проверять их надо на файлах, а не принимать на веру.
Тип по статьеЧто это в системе агента (гипотеза)
Рабочаяконтекст текущей сессии и _progress.md
Эпизодическаядневники memory/ГГГГ-ММ-ДД.md
СемантическаяMEMORY.md, GOALS.md, knowledge/
Процедурнаяскиллы, правила в CLAUDE.md, ROLE.md

Вопросы, которые стоит проверить: