Мой кодекс для ИИ-агентов: правила после пары дорогих ошибок
Первый реальный косяк случился на выходных. Клиент попросил агента напомнить о неоплаченных счетах. Агент посчитал «неоплаченными» всех, у кого в базе просто не стояла дата оплаты, включая тех, кто платил наличкой. Понедельник ушёл на разбор.
С тех пор у меня есть внутренний документ — кодекс ИИ-агента. Это не теория, а правила, которые я выписал после разбора реальных инцидентов.
Почему одного промпта мало
Долго думал: достаточно написать в system prompt «не отправляй без подтверждения». Не работает. Модель забывает, интерпретирует по-своему или обходит через инструмент, особенно когда контекст длинный.
Промпт — это просто пожелание. Кодекс должен жить снаружи: в коде и в правах инструментов. Если у агента физически нет возможности отправить письмо без подтверждения — он его не отправит.
Что подсмотрел у Алисы и Claude
Anthropic и Yandex показывают похожий подход: агент сначала кладёт письмо в черновики или показывает карточку «подтвердите действие». Между решением модели и внешним миром стоит человек.
Я взял этот принцип за основу. Всё, что нельзя откатить — только через подтверждение. Модель предлагает, я нажимаю.
Правила, которые у меня сейчас
Их немного, но каждое родилось из конкретной ошибки.
Действия с побочными эффектами — только с human-in-the-loop. Инструменты делю на read-only и mutation. Mutation всегда требует промежуточного ответа «готов сделать вот это, ок?».
Массовые действия — только после предпросмотра. Если агент хочет обработать выборку, сначала показывает список. Именно из-за отсутствия этого правила улетела та партия писем.
Явные параметры лучше свободной формы. Инструмент с обязательными полями типа period_from и include_pending заставляет модель думать точнее.
Права наследуются от пользователя. Если менеджер не видит договоры другого филиала, агент от его имени тоже не видит. Row Level Security в базе, а не в питоне.
Каждое действие оставляет след. Что решила модель, какие инструменты вызвала, что вернулось — всё логирую.
MCP 2026-07-28 и авторизация
В новой спецификации Model Context Protocol есть три вещи, которые идеально легли на мой кодекс: усиленная авторизация, stateless core и multi round-trip requests. Теперь правило «спроси перед действием» можно реализовать нативно.
Как теперь работаю с клиентами
Сначала все операции идут через подтверждение. Когда статистика показывает, что агент не ошибается неделями — перевожу в режим «делай сам, но показывай в ленте». Только потом снимаю и это.
Массовая операция, которая раньше занимала день, теперь укладывается в пару часов с проверкой. И никто не боится запускать, потому что знает: необратимое просто не дадут сделать.
Итог
Кодекс — это не про недоверие к модели. Это про то, что модель рано или поздно ошибётся, а последствия останутся у клиента. Хороший агент — тот, у которого пространство для ошибки заранее ограничено инструментами и правами.
Правила я беру не только из своих ошибок, но и из того, как это сделали в публичных агентах. А какое правило ты бы добавил первым?
