🧠 Из чего состоит память AI-агента
Полгода назад завёл первого агента и быстро понял: память у агента не одна. Слоёв несколько, каждый решает свою задачу, и почти каждый пришлось выстрадать. Разбираю по порядку.
Слой 1 — личность. Файлы, которые агент читает при старте каждой сессии: кто он, что делает, какой у него характер, кто его человек и как с ним говорить. Это врождённая память — она вшита и не теряется никогда. Агент всегда знает, кто он. А вот всё остальное — нет.
Слой 2 — рабочая память. Сам разговор. Живёт, пока открыта сессия: темы, договорённости, ход задачи. Закрыл сессию — слой обнулился. Первые недели я каждое утро пересказывал агенту вчерашнее: что за проект, на чём остановились, что решили.
Слой 3 — дневник. Первое лекарство: агент в конце дня пишет файл — что сделано, что решили, что сломалось. Наутро читает и продолжает с того же места. В инструкцию легло правило №1: контекст, не записанный в файл, потерян навсегда. Дневники разрослись до 34 МБ, поиск по словам перестал их вытаскивать — поверх лёг поиск по смыслу: спрашиваю «что там с деплоем» — находит запись, где слова «деплой» нет. Тут же грабли: у одного агента этот поиск месяц возвращал ноль. Индекс смотрел в пустую папку, файлы лежали в соседней. Агент выглядел здоровым — просто «не помнил» целый продукт.
Слой 4 — долгосрочная память. Дневники — это хроника, а нужна выжимка: отдельный файл с действующими решениями и фактами. За размером следит cron-надзиратель с порогом 20 КБ. Однажды файл распух до 28 КБ — выводы задублировались, агент читал больше, а помнил хуже. Вылечили чисткой.
Слой 5 — сны. Ночью агент пересматривает день: важное из дневников переносит в долгосрочную память, мусор отсеивает. Схема скопирована у человеческого сна. Работает.
Слой 6 — общий граф знаний. Память команды: факты, связанные между собой, доступны всем агентам сразу. Строился с третьей попытки. Первый граф дорос до ~1200 узлов и умер: не было ни валидации против галлюцинаций, ни нормальной архитектуры работы с данными. Второй строил граф локальной моделью из сырых данных — прожил 4 дня: медленно и связи хуже. Третий развернул схему: локальная модель размечает и обезличивает данные у меня на машине, и только потом облако строит из них граф. Мощная модель работает только с обезличенными данными. Шрам остался и здесь: перезапущенный служебный скрипт пересоздал базу и стёр 18 225 поисковых индексов, которых не оказалось в бэкапе. Пересчитывали с нуля — и с тех пор бэкапится всё.
Итого шесть слоёв: личность → рабочая память → дневник → выжимка → сны → общий граф. Сейчас в графе 98 939 фактов и 88 441 связь. Ни один слой не появился из красивой архитектуры — каждый рождался, когда предыдущего переставало хватать. Зато по утрам я больше ничего не пересказываю.
Post #19
114
- ❤ 6