🧪 «У меня локально работает» — это не результат проверки
В прошлом посте был список запретов для ИИ-агентов на боевой системе. Первый пункт — разные контуры. Разбираю, почему он первый.
Локальная копия и боевой сервер выглядят одинаково. Тот же код, та же схема базы, те же экраны. Дальше начинаются различия, и каждое из них ломает проверку по-своему:
• 📦 Объём данных. Локально десяток записей, в бою — десятки тысяч. Запрос, который отвечал мгновенно, начинает думать полминуты. Локально это не увидеть в принципе. • 🎭 Форма данных. В боевой базе живут записи, которых по нынешним правилам быть не должно: заведённые до изменения логики, с пустыми полями, с опечатками, с отменёнными статусами. Тестовые данные всегда аккуратные — в этом их беда. • 👥 Люди. Пользователи нажимают не то и не в том порядке, открывают три вкладки, уходят с незаполненной формой и возвращаются через час. Ни один сценарий проверки этого не воспроизводит. • ⚙️ Окружение. Версии, переменные, права доступа, внешние сервисы, лимиты. Совпадает почти всё — а ломается на том, что не совпало.
Отсюда правило, записанное в регламенте отдельной строкой: локальное поведение не является доказательством боевого. Ни один агент в прод не ходит — ни посмотреть, ни «только прочитать».
Что тогда делать с локальной копией? Использовать по назначению.
Локалка отвечает на вопрос «есть ли тут ошибка» — если сломалось там, в бою сломается точно. Она не отвечает на вопрос «всё ли теперь хорошо». Это генератор гипотез, а не приёмка.
Приёмка выглядит иначе: изменение выкатывает человек, на боевых данных проверяются заранее названные вещи, и заранее известно, как откатиться. Не «посмотрим, что будет», а «проверяем вот это, и если не сходится — возвращаем как было».
Полезный вопрос, который стоит задавать себе и агенту перед выкаткой: чем боевые данные отличаются от тех, на которых это проверено? Если ответа нет — проверка не проводилась, а просто ничего не упало.
Следующий пост — почему агент не должен принимать собственную работу.