Главная / Дневник / № 13
· эссе · AI · август 2026 ·

Скрипт сжёг $61 за сутки. Он не сломался — он работал

Автоматизация с платным вызовом внутри — это подписка, тариф которой узнаёшь потом. Разбор одного дорогого дня: внешний флаг приняли за событие, и цикл платил за одно и то же, пока не заметили по постороннему признаку.

Олег Мифтахов 20 августа 2026 · 3 мин · № 13

У меня крутится фоновый конвейер: раз в несколько минут проверяет входящие диалоги, разбирает их моделью и готовит ответы. Обычный день стоит несколько долларов — это заметно дешевле, чем делать то же руками.

Пятнадцатого августа он стоил $61.

Самое неприятное в этой истории не сумма. Неприятно, что скрипт не падал. Не было ни исключения, ни таймаута, ни сообщения об ошибке — он всю ночь делал ровно то, что в нём написано.

Флаг, который приняли за событие

Условие запуска выглядело безобидно: если в диалоге есть непрочитанное сообщение — разобрать его моделью.

Проблема в одном слове. «Есть непрочитанное» — это не событие. Это состояние, и оно остаётся истинным, пока состояние не изменилось. А изменить его может только человек: собеседник напишет что-то новое или я сам отвечу.

Дальше арифметика. Цикл просыпается, видит истинный флаг, платит за разбор. Через несколько минут просыпается снова — флаг всё ещё истинный, потому что за это время ничего не произошло. Платит снова. И так всю ночь, за один и тот же текст.

Событие происходит один раз. Состояние истинно, пока длится. Я написал условие про состояние, а рассуждал про событие — и между этими двумя вещами лежала вся разница в цене.

Заметили по постороннему признаку

Отдельно стоит сказать, как я вообще узнал.

Не по алерту — алерта на этот случай не было. Не по счёту — счёт приходит потом. Я полез в систему по совершенно другому поводу, увидел странность рядом и потянул за неё.

То есть работающий цикл, тихо жгущий деньги, мог крутиться ещё неделю. Ничего в системе не считало это проблемой, потому что формально проблемы не было: все вызовы успешные, все ответы получены, ошибок ноль.

Мониторинг, который следит за падениями, такое не ловит по определению. Он смотрит на исключения, а здесь исключений нет.

Что я поменял

Три вещи, и все три — не про этот конкретный скрипт.

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

Отпечаток входа перед оплатой. Перед платным вызовом считается короткий отпечаток того, что подаётся на вход. Совпал с прошлым — не платим, берём прежний результат. Одна проверка, которая делает повторную оплату одного и того же текста невозможной в принципе, независимо от того, насколько кривым окажется условие запуска.

Порог с алертом. Превысили дневную сумму — приходит сообщение. Не «упало», а «стало дороже обычного». Это другой класс сигнала, и его в системах мониторинга обычно нет.

Мысль, которую стоит вынести

Любая автоматизация с платным вызовом внутри — это подписка. Вы её не оформляли и тариф вам не показали, но каждый месяц она берёт с карты столько, сколько возьмёт.

Пока в ней нет счётчика, вы не знаете тариф. Не «примерно знаете» — не знаете вообще. Мой конвейер годами мог бы стоить три доллара в день, а в одну случайную ночь — шестьдесят, и с точки зрения кода это одно и то же поведение.

Отсюда правило, которое теперь применяю ко всему, что запускается без меня: цикл имеет право тратить деньги только тогда, когда у него есть счётчик и потолок. Не «надо бы добавить потом» — до первого запуска.

И более общее: самая дорогая поломка это не та, которая падает. Падение видно сразу, его чинят за час. Штука, которая работает как написано и при этом делает не то, что задумано, живёт месяцами — просто потому, что ни один датчик не считает её проблемой.

Шестьдесят один доллар — недорогое напоминание. Вопрос был в том, сколько бы я платил, если бы не полез туда по другому поводу.

#AI #вайбкодинг #автоматизация #экономика
Обсудить в Telegram →