AI Autopilot Freeze: The Danger of Relying on Timestamps
Наші ШІ-агенти працюють 24/7.
Вони перетворюють вимоги на завдання. Пишуть код. Відкривають pull requests. ШІ-рецензент схвалює роботу. Потім система автоматично зливає код.
Одного ранку ми помітили, що протягом трьох днів не було виконано жодного завдання.
Система виглядала справною. Кожен компонент повідомляв про зелений статус. Плани генерувалися. Агенти працювали. Рецензент схвалював. Єдиного, чого бракувало, було злиття (merge).
Причиною була перевірка актуальності (freshness check), яку ми розробили самі.
Ми хотіли запобігти певній помилці. Ми не хотіли зливати код, якщо рецензент спочатку схвалив його, а згодом попросив внести зміни. Щоб виправити це, ми наказали системі: «Довіряй лише тим рецензіям, які відбулися після того, як ми почали очікування».
Ця логіка дала збій під час відновлення системи.
Якщо система перезавантажувалася або переносила завдання на новий сервер, вона скидала мітку часу «початок очікування» на поточний час.
Якщо рецензент схвалив код о 10:00, але система перезавантажилася о 10:30, система ігнорувала схвалення о 10:00. Вона вважала, що схвалення застаріло.
Схвалення все ще було на GitHub. Але наш код його не бачив. Система увійшла в стан постійного deadlock.
Я засвоїв три важкі уроки з цього:
Ставтеся до зовнішнього стану як до snapshot, а не до події. Не запитуйте «чи сталося щось нове?». Замість цього запитуйте «який стан зараз?». Якщо ви дивитеся на поточний стан, перезавантаження не мають значення.
Не скидайте мітки часу під час відновлення. Якщо ви скидаєте час «початок роботи» під час повторної спроби, ви стираєте всі факти, що відбулися до цього моменту. Скидайте мітки часу лише тоді, коли змінюється безпосередньо робота.
Моніторте, де «паркуються» завдання, а не лише те, чи вони завершуються. Кількість «виконаних» завдань каже про те, що у вас є проблема. Розподіл завдань за етапами підказує, де саме криється проблема. Ми виявили проблему, тому що побачили 28 завдань, що застрягли на етапі «очікування рецензії».
Живий процес, що діє за неправильним правилом, ніколи не відобразиться у health check. Він виглядає справним, бо працює саме так, як було запрограмовано.
Якщо ви будуєте автоматизовані системи, не просто стежте за помилками. Стежте за тим, де накопичуються ваші процеси.
Optional learning community: https://t.me/GyaanSetuAi
