Мой кодекс для ИИ-агентов: правила после пары дорогих ошибок

Мой кодекс для ИИ-агентов: правила после пары дорогих ошибок

Мой кодекс для ИИ-агентов: правила после пары дорогих ошибок

Первый реальный косяк случился на выходных. Клиент попросил агента напомнить о неоплаченных счетах. Агент посчитал «неоплаченными» всех, у кого в базе просто не стояла дата оплаты, включая тех, кто платил наличкой. Понедельник ушёл на разбор.

С тех пор у меня есть внутренний документ — кодекс ИИ-агента. Это не теория, а правила, которые я выписал после разбора реальных инцидентов.

Почему одного промпта мало

Долго думал: достаточно написать в 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. Теперь правило «спроси перед действием» можно реализовать нативно.

Как теперь работаю с клиентами

Сначала все операции идут через подтверждение. Когда статистика показывает, что агент не ошибается неделями — перевожу в режим «делай сам, но показывай в ленте». Только потом снимаю и это.

Массовая операция, которая раньше занимала день, теперь укладывается в пару часов с проверкой. И никто не боится запускать, потому что знает: необратимое просто не дадут сделать.

Итог

Кодекс — это не про недоверие к модели. Это про то, что модель рано или поздно ошибётся, а последствия останутся у клиента. Хороший агент — тот, у которого пространство для ошибки заранее ограничено инструментами и правами.

Правила я беру не только из своих ошибок, но и из того, как это сделали в публичных агентах. А какое правило ты бы добавил первым?