LearnAi

Чому AI-агент зациклюється і як очистити історію чату

AI-агент у довгому чаті починає повторюватися. Розбираємо, чому накопичена історія звужує пошук рішень і як перенести напрацювання в новий чат без втрат.

Редакція LearnAi10 хв читання

Якщо AI-агент у довгому чаті почав повторювати ті самі підходи, річ не в складності задачі. Пошук рішень обмежує накопичена історія діалогу: вона тримає модель у колії вже випробуваних ідей. Найпростіше лікування — перенести поточні напрацювання в новий чат і продовжити роботу з чистого аркуша, не переказуючи агенту всі попередні спроби.

Ефект описали дослідники Microsoft Research, які вивчали автономних агентів для довгих дослідницьких задач. Їхній висновок незручний для звички «дати агенту більше контексту й більше часу».

Довга історія чату працює як обмежувач: агент повертається до вже знайомих ідей і витрачає залишок часу на косметичне доведення слабкого рішення. Дослідники Microsoft Research назвали такі застійні зони областями ідей і запропонували метод Fork-and-Flush — розгалуження роботи на паралельні гілки з повним очищенням контексту чату в кожній. Головне, що з цього бере звичайний користувач: історію діалогу можна викидати, якщо зберегти робочий простір — код, документ, таблицю, поточний результат. Практично це означає новий чат, у перше повідомлення якого ви складаєте задачу, стан напрацювань, критерій успіху та правила, але не переказ пройденого шляху.

Короткий словник

  • AI-агент — модель, яка сама виконує кроки задачі: пропонує рішення, перевіряє його й доопрацьовує за результатом.
  • Контекст чату — уся історія вашого діалогу, яку модель бачить перед кожною новою відповіддю.
  • Робочий простір — файли, код і збережені результати, з якими працює агент; він існує окремо від історії переписки.
  • Область ідей — група схожих між собою рішень, у межах якої агент крутиться, не виходячи за її межі.
  • Fork-and-Flush — метод із двох дій: розгалузити роботу на кілька паралельних гілок і в кожній почати діалог заново.

Що сталося: агент працює довше, а результат не кращає

Дослідники взяли автономних агентів, які самі пропонують рішення, оцінюють їх і доопрацьовують за зворотним зв'язком. Такий агент може працювати над однією задачею годинами, а іноді кілька діб підряд.

Вісім незалежних прогонів того самого агента на тій самій задачі дали помітно різні підсумкові оцінки. Один прогін виходив майже на максимум, інший застигав значно нижче, і розрив не зникав навіть тоді, коли агентам давали суттєво більше обчислень. Тобто причина не в тому, що комусь забракло часу.

«Області ідей»: чому агент ходить по колу замість пошуку нових рішень

Щоб знайти причину, дослідники порівняли не тексти рішень, а їхнє розташування на карті.

Як дослідники побачили колію на карті рішень

Усі рішення з усіх прогонів нанесли на двовимірну карту, де схожі варіанти лежать поруч. Виявилося, що рішення одного прогону майже завжди залишаються в невеликій області цієї карти. Такі області автори й назвали областями ідей.

Картина проста. Агент знаходив перший робочий підхід, а далі вдосконалював його варіації. Кращі підходи існували, їх знаходили інші прогони в інших частинах карти. Але агент із накопиченою історією туди не доходив.

Як агент потрапляє в колію

  1. Нова задача
  2. Перша гіпотеза
  3. Перевірка результату
  4. Дрібне доопрацювання
  5. Перевірка результату
  1. Перевірка результату
  2. історія чату підказує старий шляхДрібне доопрацювання

Чому зайві обчислення не купують якість

Більшу частину залишкового бюджету агенти витрачали на доведення рішень у менш продуктивній області. Зовні це виглядає як робота: агент щось міняє, перевіряє, звітує про дрібне покращення. Тільки стеля вже визначена вибором, який зробили на початку.

Години й гроші на довший прогін нічого не змінюють, поки агент не вийшов за межі своєї області.

Чому стиснення історії чату не рятує ситуацію

Перша здогадка кожного, хто працював у довгому чаті: попросити модель стиснути історію. Це економить токени й не повертає свіжий погляд.

Агенти в дослідженні періодично стискали свої історії діалогу, і зациклення залишалося. Причина стає зрозумілою, якщо подумати, що саме попадає у вичавку: там стоять уже зроблені висновки й відкинуті варіанти. Модель читає цей конспект і впевнено рушає тим самим маршрутом.

Суміжний ефект ми вже розбирали окремо: при стисненні довгого діалогу модель втрачає частину ваших інструкцій, тому до кінця робочої сесії агент порушує домовленості, яких на початку тримався. Деталі — у матеріалі про те, чому нейромережа забуває твої правила в довгому чаті.

Fork-and-Flush: розгалуження плюс очищення контексту зі збереженням напрацювань

Метод, який запропонували дослідники, складається з двох механізмів. Обидва прості.

Розгалуження: кілька гілок від одного стану роботи

Агент розділяється на кілька паралельних гілок. Кожна успадковує попередній робочий простір і всі згенеровані файли, тобто стартує з того місця, де робота вже стоїть.

Очищення: історія зникає, робочий простір залишається

Кожна гілка втрачає весь контекст чату й зберігає робочий простір. Вона починає свіжий діалог і спирається на попередню роботу, якої не пам'ятає.

У цьому вся суть прийому. Гілка, якій залишили історію батьківського процесу, схильна повернутися в ту саму область ідей: попередні міркування задають напрям наступних кроків. Гілка з чистим контекстом розходиться в інші боки, і саме там трапляються кращі результати. Втрачається переписка, а код, файли й збережені результати залишаються на місці.

Що показали цифри дослідження

На тому самому бюджеті обчислень повний метод дав помітно вищу середню оцінку, ніж звичайний одиничний прогін, і обійшов стратегію «запустити кілька прогонів і взяти найкращий». Відносний приріст міряється десятками відсотків.

Для практики важливі ще два результати. Метод показав найвищу середню оцінку майже на всіх задачах добірки, а розкид між прогонами зменшився: поведінка агента стала передбачуванішою. І головне для вас: просте очищення контексту без жодного розгалуження теж покращило результати.

Саме ця проста частина методу доступна вручну, без скриптів і паралельних процесів.

Як відрізнити зациклення від справді складної задачі

Складна задача й зациклений агент виглядають однаково: прогресу немає. Різниця видна в характері відповідей.

Ознаки колії:

  • Повтор іншими словами. Агент пропонує те саме рішення в новій обгортці.
  • Косметика замість гіпотез. Замінює назви, переставляє блоки, дрібно шліфує формулювання, але іншого підходу не пробує.
  • Самоцитування. На заперечення відповідає посиланням на власні попередні спроби: «ми це вже перевіряли».

Якщо ж агент просить дані, файли чи доступи, яких у нього немає, то історія чату тут ні до чого. Чистий чат не додасть матеріалів.

AI-агент перестав давати свіжі ідеї — що робити?

  • Повторює ті самі підходи іншими словамиПереносимо напрацювання в новий чат
  • Робить лише косметичні правки замість нових гіпотезПереносимо напрацювання в новий чат
  • Посилається на власні попередні спроби як на аргументПереносимо напрацювання в новий чат
  • Бракує даних, файлів або доступівЧистий чат не допоможе: дайте матеріали
  • Задача в один-два крокиПрийом не потрібен
  • Робота за жорстким регламентом, де варіативність шкідливаПрийом не потрібен
  • Потрібен найкращий з кількох варіантівЄ час на паралельну роботу?
    • Таккілька окремих чатів від того самого стану і вибір кращого
    • Ніодин новий чат зі свіжим контекстом

Прийом для щоденної роботи: переносимо напрацювання в новий чат

Повний метод із паралельними гілками потребує автоматизації. Спрощена версія не потребує нічого, крім кількох хвилин.

1

Зберегти результат≈ 2 хв

  • скопіюйте код, документ або таблицю в окремий файл
  • переконайтеся, що це остання робоча версія
2

Зібрати правила≈ 3 хв

  • випишіть домовленості про формат, обмеження й стиль, які виробили за діалог
3

Відкрити новий чат≈ 1 хв

  • той самий інструмент, нова переписка
4

Скласти перше повідомлення≈ 5 хв

  • задача, стан напрацювань, критерій успіху, правила
5

Попросити інший шлях

  • прямо напишіть, що потрібне рішення іншим способом

Перенесення роботи в новий чат

  1. Поточний результат і файли
  2. Новий чат
  3. Задача, правила, критерій успіху
  4. Свіжі гіпотези
  5. Кращий варіант
  1. Стара історія спроб
  2. залишаємо позадуНовий чат

Не питайте агента, що він думає про попередні спроби. Будь-яке таке питання повертає в чат саме той матеріал, від якого ви щойно звільнилися.

Що перенести обов'язково, а що краще залишити в старому чаті

Переносимо в новий чат Залишаємо в старому
Поточний результат: код, документ, таблицю Переказ пройденого шляху
Вхідні дані й файли, з якими працюєте Список відкинутих варіантів
Домовленості про формат, обсяг і стиль Міркування агента про причини невдач
Критерій успіху: за чим ви оцінюєте готове Оцінки попередніх спроб
Обмеження: чого робити не можна Висновки, які ви не перевіряли самі

Разом з історією зникають і правила, які ви узгодили в процесі. Якщо не перенести їх окремим блоком, новий чат почне з порушення вимог, і ви вирішите, що прийом не працює.

Шаблон першого повідомлення в новому чаті

Структура одна для будь-якої задачі:

  • Задача. Один-два рядки: що потрібно отримати.
  • Стан. Поточні напрацювання текстом або файлом.
  • Критерій успіху. За чим ви зрозумієте, що робота готова.
  • Правила. Формат, обмеження, стиль, заборони.
  • Запит. Прохання запропонувати підхід, відмінний від наявного.

«Ми з тобою довго працювали над цим скриптом, пробували кілька варіантів кешування, перший не підійшов через пам'ять, другий я відкинув, давай продовжимо з третього». Агент отримує стару карту й поїде нею.

«Ось скрипт. Потрібно, щоб він опрацьовував файл за хвилину замість десяти. Обмеження: без зовнішніх залежностей. Запропонуй підхід, якого в цьому коді ще не було».

Ручний аналог паралельних гілок: кілька чатів від одного стану

Якщо задача важлива, повторіть логіку розгалуження руками. Відкрийте два-три чати, у кожний покладіть той самий стан напрацювань і те саме перше повідомлення. Далі працюйте в них незалежно, візьміть кращий результат, а решту закрийте.

Це коштує часу, зате знімає залежність від удачі одного прогону. Про вибір між одним агентом і кількома ми писали окремо: чи справді потрібно стільки AI-агентів.

Коли прийом не потрібен і чим він ризикує

Очищення історії не універсальне. Воно зайве, коли задача закривається в один-два кроки: там агент не встигає нікуди застрягнути. Воно шкідливе в роботі за жорстким регламентом, де варіативність рішень вам не потрібна й цінна якраз передбачувана відповідь. І воно не допоможе, коли агенту бракує не свіжого погляду, а даних, прав або інструментів.

Ризик у прийому один, зате справжній: ви самі вирішуєте, що саме втратити. Якщо серед історії лежала важлива умова, про яку ви забули, новий чат її не відновить. Тому правила варто тримати окремим списком від самого початку роботи.

Як вибудувати навколо агента цикл перевірок, щоб такі збої ловити раніше, ми розповідали в матеріалі про Harness-цикл дій і перевірки.

Короткі висновки

Довга історія чату не є безкоштовною пам'яттю. Вона звужує простір, у якому агент шукає рішення, і робить це непомітно: зовні видно звичайну роботу, хоча стеля вже визначена.

Якщо агент перестав дивувати, перенесіть напрацювання в новий чат і складіть перше повідомлення з задачі, стану, критерію успіху й правил. Для важливої задачі зробіть так одразу в двох-трьох чатах паралельно й візьміть кращий результат.

Часті питання

Чи втрачу я роботу, якщо почну новий чат з AI-агентом?

Ні, якщо перенести результат. Зникає тільки історія діалогу: переказ ваших спроб і міркування моделі. Код, документ, таблиця чи будь-який поточний результат залишаються у вас — ви копіюєте їх у перше повідомлення нового чату або прикріплюєте файлом. У дослідженні Microsoft Research це і є суть прийому: гілка агента втрачає контекст чату, але зберігає робочий простір із файлами й збереженими результатами.

Як зрозуміти, що AI-агент зациклився, а не просто розв'язує складну задачу?

Дивіться не на складність, а на повторюваність. Зациклення видно за трьома ознаками: агент пропонує ті самі підходи іншими словами, замість нових гіпотез дрібно шліфує наявне рішення, а на заперечення посилається на власні попередні спроби. Якщо ж агент просить дані, файли чи доступи, яких у нього немає, це не колія, і новий чат тут не допоможе.

Чи не краще просто попросити стиснути історію чату?

Стиснення економить токени й не повертає свіжий погляд. Модель бачить вичавку попередніх міркувань і за нею рушає в ту саму область рішень. Дослідники окремо зафіксували, що зациклення зберігається навіть тоді, коли агенти періодично стискають історію діалогу. Свіжий контекст означає відсутність переказу спроб, а не його коротшу версію.

Наскільки це справді допомагає?

За даними дослідження Microsoft Research, на тому самому бюджеті обчислень метод Fork-and-Flush дав помітно вищу середню оцінку, ніж звичайний одиничний прогін: відносний приріст міряється десятками відсотків. Навіть просте очищення контексту без розгалуження на паралельні гілки покращило результати. Саме ця проста частина методу доступна вам вручну, без жодних скриптів.

Що робити, щоб у новому чаті агент не порушив узгоджені правила?

Перенесіть правила окремим блоком. Разом з історією зникають домовленості про формат, обмеження й стиль, які ви виробили за діалог. Складіть у перше повідомлення нового чату задачу, стан напрацювань, критерій успіху та список правил. А от переказ пройденого шляху й список відкинутих варіантів переносити не варто: саме вони повертають агента в стару колію.

Прийом працює тільки з агентами для коду?

Ні, він актуальний для будь-яких автономних AI-агентів, що працюють над складними багатокроковими задачами, від кодування до аналітики. У дослідженні задачі були технічними, але механізм універсальний: той самий ефект стоїть за відчуттям, що нейромережа втомилася до кінця довгого діалогу в ChatGPT, Claude чи Gemini.

У цій статті

Ще в розділі «Новини»