Памяць агента, якая перажывае размову, але не збірае лішняга
Трохузроўневая памяць для агентаў: стан сесіі няхай знікае, доўгатэрміновыя нататкі — маленькія і рэдагаваныя, жывыя даныя — заўсёды свежыя. Плюс збой перадачы паміж агентамі.
Крыніцы: Building Agent Memory That Survives the Conversation (Without Storing Everything)
Сцэна, якая павтараецца практычна з кожным агентам, які працюе ў рэжыме продакшну, выглядае так.
У панедзелак корыстнік кажа, што керуе рэгіонам Паўночны Захад, яго цікавяць толькі актыўныя праекты, і ёму не пасабліць дугія адказы. Агент кажа «Зрозумела», і да канца той сесіі гэта значыць самэ гэта: адказы короткія, стосуюцца толькі рэгіону Паўночны Захад і не маюць чэрнавікаў. Корыстнік задоволены.
У втокарак той жа чалавек пачынае новую чат-розмову і спытаеся, як ідуць яго праекты. Агент весела спытае, пра які рэгіон ёму хочацца дзеўедаць.
Выраз на яго облычыі — гэта прычына, чаму трэба серьёзна падумаць пра каштоўнік.
Чаму зберагчыць усё не вяртаеся
Практычна кожны распрацоўшчык вяртаецца да таго ж рашэння: зберагчыць усю розмову і запрацаваць яе зноў завтра. Гэта здаецца простым, але гэта пастка. Тое, як гэта не вяртаеся, навучае больш пра праектаванне агентоў, чым большасць інструкцый.
Падзірце, якшы ўсю історыю зберагаць і перадвайваць кожны раз, калі паўтарытаеся адвяз з корыстнікам. Усё выконваецца за прагнозаванай парадой.
У першы тыдзень — усё працуе. Агент дэйсна памятае ўсё, і вы адчуваеце ся розумным. Гэта небяспечны этап, адтолькі ён здаецца падтверджваючым праект.
У трэці тыдзень — праця становіцца повольнай і дорогай. Кожны крок цяпер апошніцца тыячамі токенав старых чатоў. Вы плаціце за пустыя розмовы з паўтаркі, адпаведзаючы на запітанні з пяцьдзесятага дня. Вікна кантэксту — гэта стол агента, і вы ужо засыпалі яго паперамі з мінулага тыдня перш чым пачнёцца сённяшняя работа.
Шостыя недзеля — усё пачынаецца хутчэй. Ніхто не паведамляе вас пра гэты этап. У старых размовах ёсць твэрджэнні, якія ужо не ўсё такі правды. Корыстувальнік быў сфокусаваны на Паўночна-Захадзе, пакуль прызначэнне не перакрыло на яго адпаведальнасць за цэлую краіну. Праект затрымляўся, пакуль не быў выпусканы. Перэгляд усьго змушвае агента роўнаць значэнне застарэлых і актуальных фактов. Проблема больш не ў тым, што ён памятае занадта мало. Ён памятае занадто много, не разбіраючыся, што ужо застарэла.
Перэгляд усіх історыйяў, фактычна, ёсць спосабам стварэння застарэлага кантэксту. Таму пытанне «Як мне зберагчы ўсё?» ніколі не было правым. Правыя пытанні ў такіх:
Калія рэчы вартае таго, каб яе зберагчы, калія трэба запрашваць, калі яе трэба адкінуць і стварыць занова?
Якшто на яе даць адпаведзенне, то будзе і архітэктура памяці.
Трыярхітэктурны дызайн
Паруце яго з тым, як вы кантролюеце інфармацыю на працы. Якія-то дадзеныя вы заставляеце ў сваёй галаве пад час зустрэчы і спакойна забываеце пасля. Якія-то запісваеце ў зошыт, таму што імі будзе трэба наступнага месца. Якія-то ніколі не запамятовваеце, адтолькі як тыя зменяюцца і вы перакантролюеце іх ў кожны раз. Агентам таксама патрэбны гэтыя тры рангі.
Ранг 1: памяц сесіі, якая прызначана для знікнення
У гэтым рангу зберагаецца все, што стосуецца тэкушчай розмовы: історыя паведамленняў, рэзультаты проміжных інструментоў, незаканчаная багатыядэрная задача і стан LangGraph, які пераводзіцца между вузламі.
Калі сесія завершаецца, гэты ранг можа знікнуць. Гэта не значыць, што даныя забытыя. Ён прызначаны для знікнення, і гэта ўласна якосць.
Пачатківцы відчуваюць калязненне з-за гэтаго, але ў іх немае прычын. Практыка ведэння размовы падобная да зустрэчы: важлівы не транскрыпт, а вынікі. Таму цікавым ёсць пытанне, што пераходзіць у 2-ю катэгорыю пасля завершэння сесіі.
Не транскрыпт. Маленькі, чыстае крок выдзелення выявляе тры катэгорыі:
- Стабільныя факты пра корыстніка, такія як „керуе Паўночным рэгіонам“, чынныя даколе не будуць анульваны.
- Перапяты, такія як „хочаць короткія адказы“ і „выключыць праекты у версіі чэрнавіка“.
- Рашэнні, такія як „згодзіліся на фармат ўсёабучага падсумку ў тыдзень“.
Той чат у паўтароць можа складацца з чатырох тысяч токенаў. Тое, што заслуговае на тое, каб перазісце ў часе, — гэта прыблізна чатырыдзесят токенаў структураваных фактов, што ў дзесяць разоў меней. У працоўнасці з апісамі нічога важлівага не становіцца неясным, адтолькі ўжо таму, што вы выкарыстоўвалі адзінакаваныя катэгорыі заместо загальнага уражання. Апісы таямніча зменшаюць акцэнты, а выкарыстоўванне адзінакаваных катэгорый ёсць рашэннем: праганак альбо паўнастаўляецца ў спіску слова за словам, альбо ні, і для гэтага можна напісаць тэст.
Рэгія 2: давялегтарая памяць, малая, структураваная і зменямая
Гэта компактны хранальнік, які застаецца працоўным паўтароць, ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўж
{
"user_id": "u-2481",
"facts": [
{"fact": "manages Northwest region", "updated": "2026-08-03"},
{"fact": "prefers concise answers", "updated": "2026-07-19"}
],
"preferences": [
{"pref": "exclude draft projects from reports", "updated": "2026-08-03"}
],
"decisions": [
{"decision": "weekly summary every Monday", "updated": "2026-07-28"}
]
}
Кожны ўжоўцам выкарыстоўваецца каля калькі дзесятка ліній JSON, якія завантажаюцца ў кантэкст на пачатку кожнай сесіі. Іх достатньа мала колькасць, ўсё ж такія даныя можна завжды включаць, а ўсё ж яны настолькі незначныя, што не спрычыняюць перавантажэння.
Тры правілы дапамагаюць падтрымваць ў робочы стан.
Структураваны тэкст лепшы за прозу. Нечыяры рассказы на кшталт „гэты чалавек, верагодна, керуе Паўнеччынай і любі лаконічнасць“ пазней не маюць значэння. Натоўп фактов, навпакі, можна показаць ўжоўцу, выправіць і адоколва удаліць.
Заносьце часавую метку да всіх даных і заменяйце іх, а не прыўязвайце новыя. Калі ўжоўц пераходзіць з ролі керавання Паўнеччыной на керавання Нацыянальным падраздэленнем, не трэба даганяць другі факт да першага — трэба яго заменіць. Калі база дадзенаў будзе мячыць як „каеруе Паўнеччыной“, так і „каеруе Нацыянальным“, гэта прыведзе да таго, што стары стан застанецца незмяненым, што ўсё горш, таму што тады ён застанецца такім назаўсёды.
Нехай корыстнік сама глядзіць і выправляе яго. Нават простая команда „Ось што я памятаю пра вас“ змінюе сітуацыю. Памяць, яую корыстнік не можа пераглядзець, з часам становіцца памяцю, яй он не давае доверы, зазвычай у той момент, калі агент з абсалютным перакананнем адзначае ўсё, што ужо калісць застарэлым.
Усё, што не патрапляе ў 2-ю катэгорыю, — цэла тое, што можна знайсці. Яно належыць да 3-й катэгорыі, і команды часта вітрачаюць там своі зусілля на неправільныя рэчы.
3-я катэгорыя: генераванне за запатранням, намеровае незберагчэнне
Усё, што зміняецца сама по сабе, знаходзіцца тут: статусы праектаў, цыфры, даты, схемы структуры організацыі, актуальныя паказнікі, змест баз дадзеных і API.
Правіло полягае у тым, што гэты рывень ніколі не трэба запам’ятаваць. Не трэба яго підсумовваты, не трэба зберагаць у памяці і не трэба перэносіць з поперадніх розмов. У момент неабяжной потрэбы агент вызывае інструмент і отрымае актуальную цэну.
Якшча запісаць, гэта здаецца очывідным. Гэта таксама найбольш абярванае правіло в памяці агента, бо зберагчы актуальныя даны як памяць, гэта відаецца оптымізацыёй. Насамперад, гэта часовая бомба з повільным запалом:
- Зберагаецца „Праект Falcon затрыманы“, а потым праект ужо доставлены.
- Зберагаецца „У команды 8 чалавек“, а потым прыўходзяць два чалавекі. Кожна інформацыя пра магчымасці ёсць некорэктной.
Найточнейшы підсумак усій архітэктуры, верагаць, будзе такі:
Для фактов пра адну людыну вікорыстоўваецца памяць. Для фактов пра все іншае — інструменты.
Перакантаванні корыстуначаў рэдка калі зміняюцца, і корыстуначы самі паведамляюць пра гэта. Свет постоянна зміняецца, але нічога вам не паведамляе. Таму памяроцуйце корыстунача і запытвайце свет.
Случак абякання: „падзеліцца всім“ і мнагае агенты
Гэта ўпорадкованая версія. Шлях да яе праходзіў праз інцыдэнт у вымышленай сістэме з двума агентамі ў компаніі, якая аддае службы сеткі.
Агент А размовляў з корыстуначамі і сабрал трэбаванні да звятынаў. Агент Б ствараў тые звятыны. Калі А перадаў працу Б, каманда павтарыла пачатковую памылку у масштабе архітэктуры: яны перадалі весь кантэкст А, усія розмовы, выходы кожнага інструменту і весь стан. Логіка здавалася непраблемной. Аднак чы не значыць больш кантэкста, што Б будзе лепшая інформаваны?
Спосаб, якім гэта здарылася, ёсць самай корыстная частка. У адной з сесій адны з корыстнікаў вагома сказаў агенту А: а што, як уключыць архіваваныя праекты? Але пасля раздумаў ён вырашыў, што гэта спакалічвае загальныя показнікі, таму ўзяўшы ўвагу на гэта, яны былі адхоўлены. Гэта была цалкам нормальная працэс раздумоў вагома, і агент А праверна справіўся з гэтым.
Пасля чаго пачалася перадача даных, і агент Б отрымаў усю транскрыпцыю, укладзеную ў адно цэле, включаючы непрацягнутыя часткі. Але у агента Б не было жаднага кантэксту размовы з агентам А, які мог бы дапамагчы ў оцэнцы. У самай транскрыпцыі не было нічога, што паказвала б, што ідэя архіваваных праектоў была адхоўнута, і па вайнаходзе ёй здавалася, што гэта ўказванне. Агент Б верна уключыў архіваваныя праекты, і загальныя показнікі ў офіцыйным адчытку выйшлі некарэктныя з прычыны, якую ніхто не мог знайсці, чытаючы код агента Б, таму што код яго быў у парадку.
Гэта ўсё – багатоагентна версія вышэсказанага: перадача ёсць межай сеансу. Калі Агент B пачынае свою працу, гэта становіць новы чат у вівторок. Команда зробіла тую самую помілку з „зберэжэнням усяго“ між агентамі, заместо таго, каб зробіць гэта па днях.
Рашэннем была тая ж сама корэкція. Перадача тэксту ператворылася на структурованы пакет дадзеных, фактычна – тыпу „відмовны“ варыант, які Агент A створыў для Агента B.
{
"task": "generate weekly regional report",
"requirements": [
"region: Northwest",
"active projects only",
"exclude drafts AND archived"
],
"format": "summary table first, details after",
"constraints_confirmed_by_user": true
}
Гэта прыгае даўжынай у пяцьдзесят токэнаў без жадных неяснасцей. B прыме якія-небудзь выводы, а не сложны шлях да іх. Клас bug archived-projects стаў немагчымым, а не проста паддаўся выявленню чы апрацоўцы, таму што абанованыя ідэі фізычна не можуць выжыць, калі іх выкарыстоўваюць у спіску трэбаванняй.
Возьміце адну фразу ў будзь-яй конструкцыі з калькамі агентаў: агенты должны перадаваць аднам другаму выводы, а не проста транскрыпціі.
Спіс пераконтраўк для выкарыстоўвання ў гэты тыдзень
Пяць рашэнняў, якія вы можэце прымець ўзгляду на існуючага агента:
- Дазвольце памяці сесіі знікнуць. Дадзіце крок выкарыстоўвання напыску на заканчэнне сесіі чы пасля N раундав, які будзе перадаваць толькі факты, прыярытэты і рашэння, а рэшта будзе знікнуць разам з чатам.
- Залічвайце Tier 2 як просты JSON. Дзельныя элементы, часовыя меткі, абнаўленні, якія заменяюць старыя даныя. Ніколі не трэба, каб быў вялікі блок прозы, і ніколі не трэба дадаваць толькі новыя даныя.
Вывад
Думка, што памяць значыць храненне большых кантэйнтаванняў, ўсё ў працоўным напрамку. Кожная з вышэўшых проблем — ад спроб выправіць „амнезію“ да застарэлых дадзеных і до справаздачы пра архіваваныя праекты — выходзіць з надмернага і недбалага хранення.
Эфектыва памяц агента частацай залежыць ад навыку забывання. Стан сесіі можа знікнуць, довгастарэчныя зьвісткі залішаюцца настолькі короткімі, што ўмогаць падыяць іх за адну мінуту, а нічога новага, што можа сказаць свет, не запам’ятваецца. Агенты, якія даюць адчуць правай персональнасці, — гэта не тые, якія пам’ятаюць усё. Яны пам’ятаюць тыя сорак токенав, якія неабходны.