Вартовий процесів

Ваші агенти лишають по собі процеси.
AgentsRoom їх знаходить.

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

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

Вартовий процесів
Скан: 1 / хв
Full-Stack Dev, дочірні процеси
ripgrep18 МБ
71%
tsc --noEmit1,4 ГБ
96%
search6,4 ГБ
3%
node2,1 ГБ
0%
2 завислі процеси
6,4 ГБ зайнято, 0% CPU
Завис 23 хв тому, поступу немає
Запущений агентом Full-Stack Dev
Завершити процес
Живе достатньо довго: вимірюється. Достатньо великий або забагато разом: позначається.Пам'ять повертається одразу

На що вартовий дивиться насправді: процеси, які запустив один агент, і які з них перестали працювати.

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

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

Ось чому гальмування підкрадається непомітно. Немає одної гучної події, є повільне накопичення за робочий день, і це саме та форма, через яку винуватять не те: перегрів, забагато агентів, витік пам'яті в застосунку. У сесії, яку ми виміряли, сам застосунок займав 2,8 ГБ на 91 процес, а вісім CLI агентів разом 1,6 ГБ. Ні те, ні інше не було проблемою.

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

Чому машина, на якій працюють AI агенти, сповільнюється

Цифри нижче взяті з однієї виміряної сесії на ноутбуці з 16 ГБ і вісьмома робочими агентами. Тут немає жодної оцінки на око.

Машина працювала п'ять з половиною годин. Жодних проблем з температурою: тротлінг не зафіксовано, батарея 30,6 °C. Середнє навантаження трималося між 17 і 21 на 8 ядрах, а процесор проводив 56% часу в ядрі при 1,5% простою. Саме це співвідношення все й видає. Машина, яка справді працює, проводить час у користувацькому коді; якщо ж 56% часу йде в систему, то ядро тільки й робить, що стискає, розтискає і свопить пам'ять.

Сім завислих процесів пошуку займали від 3,9 до 8,0 ГБ кожен, тобто 41,8 ГБ на машині з 16 ГБ RAM. Своп був заповнений на 22,3 ГБ із 23,5, а від моменту завантаження в нього було записано близько 993 ГБ. Завершення цих семи процесів миттєво повернуло 15,5 ГБ, без перезапуску бодай одного агента і без перезапуску застосунку.

Руками цього ніхто не ловить тому, що звичні інструменти про це брешуть. На macOS завислий процес може показувати 20 МБ резидентної пам'яті, займаючи при цьому 8 ГБ, бо все, чого він торкався, пройшло через компресор пам'яті. Один такий ми виміряли наживо: 4,7 ГБ резидентної пам'яті при реальному обсязі 14 ГБ. Віртуальний розмір теж не допомагає: на цій платформі навіть launchd показує близько 440 ГБ віртуального розміру, тож фільтр по ньому позначить машину цілком.

Один робочий день, вісім агентів, 16 ГБ09:14
Пам'ять машиниУсе в нормі
Своп11%
Виміряна сесія, а не ілюстрація.15,5 ГБ повернулися миттєво

Та сама сесія, година за годиною: пласти пам'яті, якими вже ніхто не користується, і що стається, коли їх звільняють.

41,8 ГБ
зайнято 7 завислими процесами на машині з 16 ГБ
95%
свопу зайнято, 22,3 ГБ із 23,5
21
середнє навантаження на 8 ядрах, 56% системного часу
993 ГБ
записано у своп за п'ять з половиною годин

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

Вони ніколи не закінчують

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

Вони ніколи не помирають

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

Вони переживають свого агента

Закрийте вкладку агента, і процес може вижити. Зв'язок рветься в кожній системі по-своєму: класичний Unix переводить його під процес init, Linux на десктопі віддає його вашому користувацькому менеджеру systemd, а Windows не переводить узагалі нічого і лишає посилання на батька, якого вже немає. Тому вартовий ніколи не дивиться на батьків. Він запам'ятовує, що всиновив, поки зв'язок ще був, і вважає сиротою все, чого немає в живому дереві процесів, однаково на всіх трьох системах. Двоє із семи, яких ми виміряли, вже були в такому стані.

Вони накопичуються

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

Що робить вартовий процесів

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

Вимірює справжню пам'ять

Не резидентний розмір, який занижує завислий процес на гігабайти. Вартовий читає реальний обсяг зайнятої пам'яті, разом зі стисненими сторінками і сторінками, що пішли у своп, тож процес, який показує 20 МБ, а займає 8 ГБ, видно таким, яким він є.

Вимірює процесор, але не вірить йому

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

Ловить осиротілі процеси

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

Один клік, щоб його завершити

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

macOS, Windows і Linux

Кожній системі потрібне своє вимірювання, щоб сказати про пам'ять правду: стиснені сторінки на macOS, резидентна плюс та, що пішла у своп, на Linux, приватна виділена пам'ять на Windows. Усі три реалізовані, а не заплановані.

Коштує майже нічого

Один знімок процесів на хвилину, заміряний приблизно в 40 мс на машині з 824 процесами. Дорогий замір пам'яті запускається лише тоді, коли щось уже виглядає завислим, а поки жоден агент не активний, скан не запускається взагалі.

Бачить натовп, а не одинака

Дванадцять перевірок типів по 1,4 ГБ кожна складають 16,8 ГБ на машині з 16 ГБ, і при цьому кожна з них уміщається в розумний поріг. Коли процеси, запущені вашими агентами, разом займають половину фізичної пам'яті машини, розмір перестає оцінюватися поодинці.

Називає відповідального агента

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

Перериває агента, а не лише процес

Якщо завершити процес, поки його агент посеред свого ходу, агент отримає помилку і відреагує на неї, часто запустивши ту саму команду знову. Одна кнопка натомість надсилає Ctrl+C у термінал агента: його хід завершується, ніщо не перезапускається, а сам агент лишається відкритим.

Правила, які не дають йому кричати «вовки»

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

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

Друге правило існує тому, що планка на кожен процес не бачить натовпу. Дванадцять перевірок типів, кожна з яких тримає 1,4 ГБ, окремо розумні, а разом смертельні на машині з 16 ГБ. Тому, коли все запущене агентами разом займає половину фізичної пам'яті машини, повідомляється про все це, скільки б не важив кожен шматок сам по собі. Ніщо з цієї групи ніколи не завершується автоматично: воно нижче за встановлену вами межу і позначене лише через сусідів.

Як це працює

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

01

Один дешевий знімок машини

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

02

Відібрати підозрюваних

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

03

Виміряти тих, хто виглядає завислим

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

04

Повідомити і дати вам вирішити

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

Запобіжники

Чого він не торкнеться ніколи

Інструмент, здатний завершувати процеси, зобов'язаний вузько розуміти, що його стосується. Ці межі структурні, а не опції, які треба не забути увімкнути.

  • Самого CLI агента. Хоч якого провайдера ви запустите, вартовий захищає бінарник, яким застосунок запустив цей термінал. Це ім'я він читає із самого запуску, а не з зашитого списку, тож дочірній процес того самого CLI захищений теж, на будь-якій глибині.
  • Ваших терміналів dev-команд. Dev-сервер у стані спокою підпадає під усі ознаки втеклого процесу: товстий, старий, процесор не вантажить. І це ж єдиний процес, який ви справді хочете бачити робочим. Стежать лише за терміналами агентів, тож ваш dev-сервер у кадр не потрапляє ніколи.
  • Оболонки і внутрішньої механіки застосунку. Термінальний помічник і оболонка, в якій працює агент, виключені за побудовою. Кандидатами стають лише процеси інструментів нижче CLI агента.
  • Усього, чого він не всиновив. Єдиний шлях, здатний завершити процес, відмовляє будь-якому процесу, якого вартовий не підібрав у дереві самого агента. Він не може перетворитися на спосіб завершити щось інше на вашій машині.

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

Коли він виправдовує своє місце

Кожна з цих ситуацій реальна, жодна не гіпотетична.

Машина повільніша о 18:00, ніж о 9:00

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

Кілька агентів працюють паралельно

Що більше агентів ви запускаєте, то більше викликів інструментів, і то більше шансів, що один із них заклинить. Частка відмов на виклик крихітна; помножена на день паралельної роботи, вона перестає бути крихітною.

Пошук, який так і не повернувся

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

Ви закрили агента, а процес лишився

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

Ноутбук із 16 ГБ

На машині з великим запасом RAM кілька завислих процесів ховаються довго. На ноутбуці з 16 ГБ вони швидко впираються у своп, і щойно система починає стискати пам'ять, усі ваші агенти сповільнюються одночасно.

Перш ніж звинувачувати застосунок

Коли машина ледве повзе з відкритим AgentsRoom, очевидний підозрюваний: сам застосунок. Справжні цифри по кожному процесу, з агентом, який його запустив, перетворюють підозру на те, що справді можна перевірити.

Вирішуєте ви

Межі задаєте ви

Значення за замовчуванням навмисно обережні. Усе, що нижче, живе в налаштуваннях, на вкладці «Термінал», і кожне з них агент теж може прочитати і змінити через MCP-інструменти AgentsRoom.

Стежити за дочірніми процесами агентів
Увімкнено за замовчуванням. Вимкніть його, і жоден скан більше не запуститься, ніколи.
Повідомляти вище порога пам'яті
Два гігабайти за замовчуванням. Нижче цього завислий процес не вартий того, щоб вас відволікати. Підніміть поріг на робочій станції з великим запасом RAM, опустіть його на ноутбуці, де пам'ять на вагу золота.
Після мінімального часу життя
П'ять хвилин за замовчуванням. Нижче цього взагалі нічого не вимірюється, і саме це повністю прибирає з кадру звичайні виклики інструментів агента, ті, що завершуються за секунди.
Завершувати завислі процеси автоматично
Вимкнено за замовчуванням, і це усвідомлене продуктове рішення, а не обережність. Вартовий виносить судження, а чи був великий і тихий процес очікуваним, знаєте лише ви. Увімкніть його, і він діятиме сам, надсилаючи сповіщення постфактум.

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

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

Чи означає це, що AgentsRoom сповільнює мій комп'ютер?

Ні, і саме тому ця функція існує. У сесії, яку ми виміряли, застосунок займав 2,8 ГБ на 91 процес, а вісім CLI агентів разом 1,6 ГБ. Ті 41,8 ГБ тримали процеси інструментів, які заклинили. AgentsRoom просто виявляється єдиним місцем, звідки видно всіх агентів і всі процеси, які вони породили, а отже і єдиним місцем, звідки можна розсудити.

Він уб'є мою збірку чи прогін тестів?

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

Чи стежить він за моїм dev-сервером?

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

Чи може він завершити самого агента?

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

Що таке процес-сирота і чому до нього окреме ставлення?

Процес, чий батько завершився, втрачає зв'язок з агентом, який його запустив, і прибирати за ним буде нікому. Як саме рветься цей зв'язок, залежить від системи: класичний Unix переводить його під процес init, Linux на десктопі віддає його вашому користувацькому менеджеру systemd, а Windows не переводить нічого і лишає по собі мертвий ідентифікатор батька. Тому AgentsRoom ніколи не перевіряє батьків. Він записує належність, поки процес ще прив'язаний: це єдина мить, коли її можна встановити, і вважає сиротою все, чого немає в живому дереві процесів, однаково на всіх трьох системах.

Скільки коштує саме це стеження?

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

Чому не подивитися просто на колонку пам'яті в «Моніторингу системи»?

Бо на macOS вона занижує проблему на порядок. Процес, витіснений у стиснену пам'ять, може показувати 20 МБ резидентної, займаючи при цьому 8 ГБ. Один такий ми виміряли наживо: 4,7 ГБ резидентної при реальному обсязі 14 ГБ. Віртуальний розмір не кращий: навіть системні процеси показують його сотнями гігабайт.

Чи працює це з Claude Code, Codex та рештою?

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

Чи працює це на Windows і Linux?

Так. Кожній платформі потрібне своє вимірювання, щоб пам'ять не брехала: стиснені сторінки на macOS, резидентна плюс та, що пішла у своп, на Linux, приватна виділена пам'ять на Windows. Усі три реалізовані.

Чи завершуватиме він процеси, не спитавши мене?

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

Що стається з агентом, коли я завершую один із його процесів?

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

Чи усуває це першопричину?

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

Дванадцять процесів, і жоден не перевищує мій поріг. Він узагалі щось скаже?

Так, і саме через цей випадок правило змінилося. Заміряно на машині з 16 ГБ: дванадцять перевірок типів, запущених шістьма агентами, від 0,84 до 1,72 ГБ кожна, усі із запасом нижче порога в 2 ГБ, 15,4 ГБ разом, своп забитий, машина непридатна для роботи. Якщо судити поодинці, з кожною було все гаразд. Щойно сума переходить половину вашої фізичної пам'яті, повідомляється про всі, згруповані під агентом, який їх запустив.

Що насправді робить «Перервати агента»?

Вона надсилає Ctrl+C у термінал цього агента, те саме натискання, яке ви зробили б самі. Поточний хід агента завершується, і він чекає на вас: він не закритий, його сесія ціла, і більше нічого на вашій машині не зачеплено. Кнопка існує тому, що завершення процесу, поки агент над ним ще працює, лікує лише симптом: агент отримує помилку і часто просто запускає команду знову.

Вам також може сподобатися

Канарейка контексту

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

Термінали розробника

Запускайте свої dev-сервери і довгі команди просто в AgentsRoom, зі сповіщенням, коли довга команда завершилася. Це саме ті термінали, яких вартовий процесів за задумом не торкається ніколи.

Відстеження статусу агентів

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

Використання токенів

Інший ресурс, за яким варто стежити. Споживання токенів і квота по кожному агенту, щоб ви знали, куди йде ваш ліміт.

Розділений вигляд

Кілька агентів пліч-о-пліч в одному вікні, у кожного своя панель, свій колір і свій статус наживо.

CLI Doctor

Коли агент не може стартувати, він каже вам, чому і що з цим робити, замість того щоб лишити вас перед порожнім терміналом.

Годі платити за процеси, якими ніхто не користується

AgentsRoom безкоштовний для завантаження, а вартовий процесів працює з першого запуску.

БезкоштовноЗавантажити AgentsRoom

Додаток-компаньйон: контролюйте своїх агентів на ходу

Використовуйте свого: Claude, Codex, Antigravity CLI або іншого AI-провайдера.

Отримати розширення
Chrome Web Store

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

Кілька проектів
Багато постачальників
Кілька агентів
Статус в реальному часі
Різниця файлів і коміт
Мобільний компаньйон
Попередній перегляд в реальному часі
Команди агентів
Автоматизація браузера
Розробка, орієнтована на беклог
Бібліотека підказок
Бібліотека навичок
Переглянути всі функції