Обновить

Агент повесил Bash одной кавычкой. Как детерминированный FSM спасает CLI-рантаймы

Уровень сложностиСложный
Время на прочтение4 мин
Охват и читатели4.4K
Рейтинг0
Комментарии4

Комментарии 4

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

Это поставить простой таймаут на инструментах 120с, после чего агент не падает, а получает возврат с комментарием, и далее продолжает работать.
Таким образом это закрывает любые ошибки и зависания где-бы они не происходили, агент некогда не зависнет по определению.

Таймаут — это обязательный нижний слой, мы его используем. Но у него есть цена: 2 минуты простоя на каждый инцидент и отсутствие подсказки для модели. Quote Guard работает на уровне PreToolUse и предотвращает вызов, отдавая модели машиночитаемую инструкцию. Это не альтернатива таймауту, это его верхний уровень: сначала FSM говорит «нельзя», а если FSM пропустил — срабатывает таймаут. Мы убиваем не симптом, а причину

У ожидания есть важное условие — способ подачи команды в Bash. Проверил на Bash 5.2.37 в контейнере: команда `printf "unclosed`, переданная аргументом `bash -c`, завершает оболочку с кодом 2 и ошибкой unexpected EOF; та же строка через открытый stdin-pipe оставляет процесс ждать, а закрытие stdin завершает его с кодом 2. Поэтому для описанного зависания стоит указать, держит ли рантайм stdin открытым или запускает `bash -c`. Для второго варианта синтаксис можно предварительно проверить через `bash -n -c`, не выполняя команду.

Абсолютно верное замечание. В нашем случае проблема возникала именно на stdin-pipe (синхронное чтение), поэтому и писали FSM. bash -n -c — отличный механизм для POSIX, и его стоит добавить как дополнительный слой для известных инструментов. Но наш кейс был про неизвестные инструменты и кросс-платформенность (PowerShell vs Bash), где -n не сработает без предварительного определения грамматики (Strict Intersect). FSM решает это на уровне абстрактного лексера

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации