Страж процессов

Ваши агенты оставляют после себя процессы.
AgentsRoom их находит.

ИИ-агент запускает настоящий системный процесс на каждый вызов инструмента. Большинство завершаются за секунды. Некоторые не завершаются никогда, и вот эти держат в заложниках гигабайты памяти, вообще не используя CPU.

Страж процессов обходит дочерние процессы ваших агентов, отмечает те, что перестали продвигаться, называет ответственного агента и завершает их одним кликом. Ничего не завершается за вашей спиной.

Страж процессов
Скан: 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
Завершить процесс
Большой + давно живёт + не грузит процессор. Все три сразу, иначе ничего не отмечается.Память возвращается сразу

На что страж смотрит на самом деле: процессы, которые запустил один агент, и какие из них перестали работать.

ИИ-агент не сводится к одному процессу. Каждый вызов инструмента запускает на вашей машине настоящий процесс: поиск, сборку, проверку типов, прогон тестов, скрипт. Умножьте это на несколько агентов, работающих параллельно, на целый день, и вы получите сотни процессов, рождённых и похороненных так, что вы не увидели ни одного.

Почти все они завершаются. Проблема в тех, что не завершаются. Поиск, чей шаблон взрывает движок регулярных выражений, не падает и не тормозит: он выделяет память, уходит в сжатую память, а потом всю жизнь проводит на страничных ошибках при 4% CPU. Он не закончит никогда. Его никто никогда не убьёт. А если агент, который его запустил, закрыт, процесс переподчиняется процессу init и становится сиротой, за которого на машине больше никто не отвечает.

Вот почему торможение подкрадывается незаметно. Нет одного громкого события, есть медленное накопление за рабочий день, и это ровно та форма, из-за которой винят не то: перегрев, слишком много агентов, утечку памяти в приложении. В сессии, которую мы измерили, само приложение занимало 2,8 ГБ на 91 процесс, а восемь CLI агентов вместе 1,6 ГБ. Ни то, ни другое не было проблемой.

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

Почему машина, на которой работают ИИ-агенты, замедляется

Цифры ниже взяты из одной измеренной сессии на ноутбуке с 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 ГБ
записано в своп за пять с половиной часов

И у этих процессов есть четыре свойства, которые гарантируют, что завтра они всё ещё будут здесь.

Они никогда не заканчивают

Их собственная память лежит в свопе, поэтому вместо вычислений они проводят время на страничных ошибках. Здоровый поиск загружает ядро под завязку; эти сидят на 4%. Выхода из этой спирали нет, и сколько ни жди, легче не станет.

Они никогда не умирают

У вызова инструмента нет таймаута. Ничему на машине нет дела до процесса, который простаивает пятьдесят минут. Он будет сидеть там, пока кто-нибудь его не убьёт или машина не перезагрузится.

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

Закройте вкладку агента, и процесс может выжить, переподчинившись процессу init. С этого момента его больше ничто ни с чем не связывает: это процесс-сирота, и подчищать его уже некому. Двое из семи измеренных нами уже были в таком состоянии.

Они накапливаются

По одному на каждый проход проверки, по одному на каждый неудачный поиск. Вот почему торможение за день только нарастает и почему перезагрузка выглядит как решение. Она ничего не решает, она просто обнуляет счётчик.

Что делает страж процессов

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

Измеряет реальную память

Не резидентный размер, который занижает зависший процесс на гигабайты. Страж читает реальный объём занятой памяти, включая сжатые страницы и страницы, ушедшие в своп, поэтому процесс, который показывает 20 МБ, а занимает 8 ГБ, виден таким, какой он есть.

Смотрит на CPU, а не только на RAM

Одна лишь память отмечала бы каждую сборку на вашей машине. Страж измеряет загрузку процессора как скорость между двумя сканами, поэтому процесс, который сначала пахал, а потом заклинил, всё равно попадается, а сборка, которая действительно работает, остаётся в покое.

Ловит осиротевшие процессы

Процесс, переживший запустившего его агента, отмечается сам по себе, потому что его память никто другой уже не вернёт. Принадлежность запоминается, пока процесс ещё привязан: это единственный момент, когда её вообще можно установить.

Один клик, чтобы его завершить

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

macOS, Windows и Linux

Каждой системе нужно своё измерение, чтобы сказать о памяти правду: сжатые страницы на macOS, резидентная плюс ушедшая в своп на Linux, приватная выделенная память на Windows. Все три реализованы, а не запланированы.

Стоит почти ничего

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

Правило, которое не даёт ему кричать «волки»

Стража, который отмечает ваши сборки, вы отключите за неделю. Поэтому процесс никогда не отмечается по одной только памяти. Он должен быть большим, он должен жить уже какое-то время, и он должен перестать использовать процессор. Все три условия сразу.

Работу делает именно третье условие. Проверка типов или бандлер тоже держат гигабайты по несколько минут, но при этом загружают ядро под завязку. Процесс, застрявший в свопе, держится около 4%, потому что всю жизнь ждёт страничные ошибки вместо того, чтобы вычислять. Этот разрыв и отличает машину, которая работает, от машины, которая тонет, и это единственный сигнал, который надёжно их разделяет.

Загрузка процессора к тому же измеряется, а не считывается. Обычная цифра, которую показывает системный инструмент, это среднее за всю жизнь процесса, и она всё ещё выглядит занятой для того, кто двадцать минут пахал, а потом заклинил. Страж вместо этого сравнивает потреблённое процессорное время между двумя сканами, поэтому видит он последнюю минуту, а не последний час.

Как это работает

Четыре шага, раз в минуту, и дорогой из них почти никогда не выполняется.

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 агента защищён при любом провайдере, и защита опирается на бинарник, которым приложение запустило этот терминал, а не на список известных имён. Оболочка и терминальный помощник самого приложения исключены тоже.

Что такое процесс-сирота и почему к нему особое отношение?

Процесс, чей родитель завершился, переподчиняется процессу init системы. С этого момента ничто не связывает его с агентом, который его запустил, поэтому подчищать его будет некому. AgentsRoom запоминает принадлежность, пока процесс ещё привязан: это единственный момент, когда её можно установить, и благодаря этому он всё равно может сообщить о процессе позже.

Сколько стоит сама эта слежка?

Один снимок процессов в минуту, замеренный примерно в 40 мс на машине с 824 процессами. Более дорогой замер памяти применяется только к процессам, которые уже выглядят зависшими, а при обычной работе это значит, что он не применяется. И пока ни один агент не активен, скана не существует вовсе.

Почему не посмотреть просто на колонку памяти в «Мониторинге системы»?

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

Работает ли это с Claude Code, Codex и остальными?

Да. Страж ничего не знает ни об одном конкретном инструменте или провайдере. Он следит за дочерними процессами того терминала агента, который вы запустили, а защищаемый CLI читается из самого запуска. Добавление провайдера здесь ничего не меняет.

Работает ли это на Windows и Linux?

Да. Каждой платформе нужно своё измерение, чтобы память не врала: сжатые страницы на macOS, резидентная плюс ушедшая в своп на Linux, приватная выделенная память на Windows. Все три реализованы.

Будет ли он завершать процессы, не спросив меня?

Только если вы это включите. По умолчанию он сообщает, что нашёл, с агентом, памятью, возрастом и загрузкой процессора, а решаете вы. Автоматическое завершение остаётся настройкой, выключенной из коробки.

Что происходит с агентом, когда я завершаю один из его процессов?

Агент продолжает работать. Его вызов инструмента получает ошибку вместо того, чтобы висеть вечно, и это именно тот исход, который вам нужен: этот процесс всё равно никогда бы не завершился. Ничего не перезапускается, и никакой контекст не теряется.

Устраняет ли это первопричину?

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

Вам может понравиться

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

Другое раннее предупреждение: оно следит за контекстом самого агента, а не за машиной, и говорит вам, что агент дрейфует, до того как он начнёт выдумывать файлы и API.

Dev-терминалы

Запускайте свои dev-серверы и долгие команды прямо в AgentsRoom, с уведомлением, когда долгая команда закончилась. Это ровно те терминалы, которых страж процессов по замыслу не касается никогда.

Отслеживание статуса агентов

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

Расход токенов

Другой ресурс, за которым стоит следить. Потребление токенов и квота по каждому агенту, чтобы вы знали, куда уходит ваш лимит.

Сплит-вид

Несколько агентов бок о бок в одном окне, у каждого своя панель, свой цвет и свой статус вживую.

CLI Doctor

Когда агент не может стартовать, он говорит вам, почему и что с этим делать, вместо того чтобы оставить вас перед пустым терминалом.

Хватит платить за процессы, которыми никто не пользуется

AgentsRoom бесплатен для скачивания, а страж процессов работает с первого запуска.

БесплатноСкачать AgentsRoom

Приложение-компаньон: следите за агентами на ходу

Используйте Claude, Codex, Antigravity CLI или другого поставщика AI.

Установить расширение
Chrome Web Store

Отправляйте баги и запросы прямо в ваш публичный бэклог.

Взгляд на AgentsRoom в действии.

Мульти-проекты
Мульти-провайдер
Мульти-агенты
Статус онлайн
Diff и коммиты
Мобильное приложение
Live-превью
Команды агентов
Тесты в браузере
Разработка от backlog
Библиотека промптов
Библиотека навыков
Все функции