Обучение · Агенты и вайб-кодинг
Глава 34. Разрушительные действия и заборы
Модуль про риски начинается с самого простого и самого болезненного: агент может разъебать то, что разъёбывать не собирался.
Два инцидента Первый. Человек попросил агента сделать резервную копию. Агент записал её не в ту папку. Затем спокойно выполнил команду удаления и написал: извините, опечатка. Ёбс, и данных нет.
Комментарий пострадавшего: это был одновременно самый смешной и самый болезненный момент в истории моего взаимодействия с моделями.
Второй. Агент, настраивавший сервер, удалил пользователя, под которым велась настройка. Работа целого вечера накрылась пиздой вместе с доступом.
Оба случая объединяет одно: агент не нарушил ни одного запрета. Удалять ему не запрещали, потому что удаление было частью нормальной работы.
ГЛАВНОЕ ПРО РАЗРУШИТЕЛЬНЫЕ ДЕЙСТВИЯ Опасны не запрещённые действия, а разрешённые, применённые не туда. Поэтому список запретов не спасает. Спасает разделение действий по обратимости и техническая невозможность добраться до того, что откатить нельзя.
Три уровня Простая схема, которая закрывает большую часть риска. Здесь без шуток, потому что цена ошибки это потерянные данные.
Уровень Что попадает Как обходиться
Свободно Обратимо за минуту, следы оста- Агент делает сам ются
С подтверждением Обратимо, но дорого или долго Явное разрешение человека
Недоступно Необратимо Технически невозможно, а не запрещено
Ключевое слово в третьей строке: технически. Запрет в правилах к третьему уровню не относится, потому что запреты обходятся, и об этом отдельная глава.
Разрушительные действия и заборы
КАК ЗАКРЫВАТЬ НЕОБРАТИМОЕ
Действие, которое нельзя откатить
Написать в правилах, что так нельзя Убрать возможность из окружения
обходится формально обходить нечего
Спор о заборах Инцидент с удалением породил длинный спор, в котором столкнулись две позиции, и обе разумные.
За жёсткие ограничения. Агент не должен иметь возможности сделать необратимое. Точка. Никакие рассуждения о доверии не отменяют того, что однажды он ошибётся.
Против. Чем больше заборов, тем меньше от агента толку. Не может ничего изменить, так на кой хуй он вообще нужен. Постоянные подтверждения превращают работу в бессмысленное кликанье.
Разрешение, к которому пришли, оказалось изящным: не запрещать, а делать безопасным.
Аналогия, которую приводили: корзина. Пользователю не запрещают удалять файлы, потому что удаление это нормальная операция. Удалённое просто уезжает в корзину, откуда его без проблем достают обратно.
Тот же принцип применим к агенту. Пусть удаляет, но в отдельную папку. Пусть меняет, но с сохранением предыдущей версии. Пусть отправляет, но с задержкой, в течение которой можно отменить.
ГЛАВНОЕ ПРО ЗАБОРЫ Безопасное действие лучше запрещённого. Запрет создаёт конфликт между задачей и правилом, а безопасная версия действия конфликт снимает. Ищи не то, что запретить, а то, как сделать обратимым.
Резервные копии Отдельная тема, потому что первый инцидент был именно про них.
Правило простое и звучит очевидно, а нарушают его постоянно, из года в год: резервные копии должны лежать там, куда агент доступа не имеет.
Копия в соседней папке это не копия, а ещё одна папка, которую сносит той же командой. Копия на другом устройстве или в хранилище, к которому у агента нет прав, вот это копия.
Разрушительные действия и заборы
МИНИМУМ ЗАЩИТЫ ПЕРЕД ТЕМ, КАК ДАТЬ АГЕНТУ ПРАВА 1. Автоматические копии на отдельное устройство или в хранилище без доступа агента. 2. Снимок состояния перед любым крупным изменением. Одна команда, десять секунд. 3. Отдельный пользователь с ограниченными правами, а не тот, под которым работаешь ты. 4. Список того, что агент не может сделать физически. Не в правилах, а в правах. 5. Проверка восстановления. Копия, из которой ни разу не восстанавливались, это надежда, а не копия.
Пятый пункт систематически проёбывают, и выясняется это в худший из возможных моментов.
Особый случай: рабочая среда Отдельно про продакшн, потому что там цена совсем другая.
Практика, к которой приходят: агент вообще не имеет доступа к рабочей среде. Он готовит изменение, изменение проходит проверки, применяет его автоматика по отдельному каналу.
Причина не в недоверии к агенту, а в том, что это правильно и для людей тоже. Прямой доступ к рабочей среде это плохая практика независимо от того, кто им пользуется.
Побочный эффект приятный: агент, которого загнали в нормальный процесс поставки, автоматически получает откат, историю изменений и возможность разобраться постфактум, а не гадать на кофейной гуще.
Что делать после инцидента Инциденты случаются, и полезно иметь заготовленную процедуру. Порядок шагов важен, поэтому по пунктам и без лирики.
Не спрашивай у агента, что произошло. Он расскажет складную историю, которая может не иметь к реальности никакого отношения. Смотри журналы и историю команд.
Восстанови состояние, потом разбирайся. Обратный порядок приводит к тому, что во время разбирательства теряется ещё что-нибудь.
Найди, чего не хватало в правах, а не в правилах. Вопрос не почему он это сделал, а почему он смог.
Заведи проверку на этот класс. Один инцидент это случай. Тот же инцидент дважды это отсутствие проверки.
Наблюдение за действиями Инструмент, который стоит знать: перехватчик, который видит каждое действие агента до его выполнения.
Разрушительные действия и заборы
Устроен так: вешается на агентов на машине, имеет локальный движок правил и каталог опасных признаков. Чтение файлов с секретами, отправка секрета наружу, обратная оболочка, удаление домашней директории, запуск агента с флагом обхода ограничений, обращение к служебным адресам инфраструктуры. Опционально блокирует.
И отдельная возможность, которая здорово выручает после инцидента: восстановление задним числом того, что агент творил, из его собственных сессионных файлов, даже если перехватчик тогда не стоял.
Что запомнить Опасны разрешённые действия, применённые не туда, а не запрещённые.
Три уровня: свободно, с подтверждением, технически недоступно. Третий уровень это права, а не правила.
Безопасное действие лучше запрещённого: ищи, как сделать обратимым, а не что запретить.
Резервная копия в доступной агенту папке это не копия.
Копия, из которой ни разу не восстанавливались, это надежда.
К рабочей среде агент доступа не имеет. Изменения идут через обычный процесс поставки.
И после инцидента спрашивай не почему он это сделал, а почему он смог.
← Роли: что теперь делает разработчик · оглавление · Изоляция, права, песочница →
Спросить книгу может любой, кто вошёл в Neuraldeep Hub: агент ищет ответ по тексту и приводит цитату со ссылкой на главу.