Яндекс лёг, и моя автоматика начала врать. Поймал это агент на Claude

Яндекс лёг, и моя автоматика начала врать. Поймал это агент на Claude

Две истории про ИИ-агентов, которые отчитались «всё в порядке», когда всё было плохо. Одна про аварию Яндекса, вторая про самого Claude.

11 октября у Яндекса остановился дата-центр. Поиск, Пэй, Go и Директ лихорадило весь день.

Я узнал об этом не из новостей. Мой агент, который ведёт рекламу интернет-магазина бытовой техники, утром упал с ошибкой. В тот же день в Telegram пришли две сводки по тем же рекламным кабинетам. В первой: «решено 6 из 9 проблем». Во второй: «без изменений».

Упавший агент вёл себя честно. Обе сводки врали. Ниже расскажу, как это вышло, как агент на Claude это заметил и почему за две недели до этого похожим образом соврал он сам.

Что у меня работает

Несколько бизнесов: магазин техники, база отдыха, юридическая практика, сайты. Рекламой, сайтами и отчётами занимаются ИИ-агенты на Claude. У каждого своя зона, память по проекту, доступы к нужным системам и расписание. Утром они присылают отчёты в Telegram, ночью проверяют, живы ли сервисы.

У магазина два рекламных аккаунта в Директе: в одном 38 кампаний, в другом 13. Каждый день скрипт ставит им оценку по набору проверок и присылает сводку: что стало лучше, что хуже. Накануне аварии у аккаунтов было 65 и 40 баллов из 100. Раз в неделю агент проводит аудит целиком.

День аварии

Днём 11 октября мы с агентом вручную проверили API Директа. Запрос списка кампаний вернул код 204 и пустое тело. Запрос данных клиента тоже 204. Справочник валют, который ни от чего не зависит, отвечал 22 секунды и возвращал всё тот же пустой ответ.

При этом direct.yandex.ru и Метрика в браузере открывались. Человек мог зайти в кабинет и работать руками, а вся автоматика через API стояла. В тот день она оказалась хрупче ручного труда, потому что у неё одна дверь.

Дальше случилось три вещи.

Агент-директолог упал с ошибкой «неожиданный HTTP 204». Это нормальное поведение: сломалось, сказал об этом.

Сводка не упала. Она не дождалась ответа от Директа, поставила обоим аккаунтам 0 из 100 и сравнила с прошлым днём. Проблемы, которые вчера находились, сегодня не нашлись, и сводка записала их в решённые: «решено 6 из 9». Повторный запуск сравнил ноль с сохранённым нулём и написал «без изменений». Обе сводки скрипт сам отправил мне в Telegram.

На следующий день еженедельный аудит выдал оценку N/A и строчку «0 включённых, 0 остановленных, 0 черновиков». По двум аккаунтам, где на самом деле 51 кампания.

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

Как это поймали

Сводки вдогонку разобрал агент на Claude. Он написал мне, что «решено 6 из 9» не настоящий прогресс, а последствие таймаута API: сравнивать было не с чем.

Аудит на следующий день тоже запускал он. И не стал пересылать мне ноль кампаний. Он написал: честную оценку дать не могу, «0 включённых» не похоже на реальное состояние, в утреннем дайджесте у этих аккаунтов 38 и 13 кампаний, значит, это симптом сбоя.

Помогла сверка двух источников. Один отчёт говорил «кампаний ноль», другой, собранный накануне, говорил «пятьдесят одна». Цифры не сходились, и агент сказал об этом вслух.

На третий день было ещё интереснее. 11 октября агент решил, что ошибка директолога целиком из-за аварии и чинить нечего, надо ждать. 12-го он пересмотрел свой вывод. Звонки шли, сайт и вебхуки работали, остальные запросы к Директу отвечали. Пустым оставался один узкий отчёт по поисковым запросам. Агент предположил, что 204 тут законный ответ Яндекса на пустую выборку, а наш код не умеет его понимать и считает фатальной ошибкой. И написал, что ждать дальше бессмысленно, надо чинить обработку.

А теперь про то, как соврал сам Claude

В конце сентября, за пару недель до аварии, фоновая задача агента-вебмастера отчиталась мне: «оба сайта без отклонений».

29 сентября при перепроверке выяснилось другое. В событиях поиска Яндекс.Вебмастера три страницы блога исключены из выдачи: 24, 26 и 28 сентября. Статус «неканоническая страница».

Причину нашли быстро, когда цифры легли рядом. Сервер отдаёт адреса со слешем на конце. А в коде страниц canonical стоял без слеша. Сервер говорит одно, разметка другое, Яндекс верит разметке и выкидывает страницу. Дефект сидел в шаблоне блога, то есть во всех 45 статьях.

Почему агент этого не увидел? В задаче было написано «проверь сайты». Он посмотрел индексацию, она была в порядке, и он честно отчитался. Диагностика и события поиска были ему доступны, он их просто не запросил.

Модель тут ни при чём. Задача была сформулирована расплывчато, и агент сделал ровно то, что в ней было написано.

Пять правил, после которых отчёты перестали врать

После этих двух историй я переписал фоновые задачи по одной формуле.

  1. Источник по имени. Вместо «проверь сайты»: «запроси диагностику, события поиска за 7 дней и индексацию». Агент берёт то, что названо, и не додумывает.
  2. Ничего лишнего. Прямая строка в задаче: другие файлы не открывай, дополнительных запросов не делай. Каждый лишний шаг стоит времени и денег и добавляет поводов уйти в сторону.
  3. Формат ответа. Сколько строк, что в каждой, последняя строка всегда итог. Если отчёт выглядит одинаково каждый день, его можно проверить за секунды.
  4. Признак нормы. Когда молчать, когда говорить. Молчание допустимо только там, где пустой результат и правда означает норму.
  5. Что делать при сбое. «Если источник не ответил или вернул пустоту, напиши об этом отдельным сообщением, без слов „всё в порядке“». Без этой строки сбой тонет и выглядит как норма. Ровно это и случилось со сводкой 11 октября.

Плюс одно правило поверх всех: пустые данные не означают, что всё хорошо. Если там, где вчера было 51, сегодня ноль, агент должен об этом спросить, а не посчитать изменения.

Что я из этого вынес

Падение видно сразу: пришла ошибка, ты пошёл разбираться. Уверенный отчёт на пустых данных можно не замечать неделями.

Агенту я теперь доверяю не потому, что он умный. Я знаю, что именно он проверяет каждое утро, и каждая проверка названа в задаче по имени. Формулировку я исправил один раз, и теперь она работает каждый день сама.

Правила моего агента-вебмастера целиком лежат в Telegram-канале: скилл, формула фоновой задачи и текст утренней проверки сайтов. Их можно положить своему агенту в Claude Code или в проект Claude и адаптировать под свои сайты. Забрать можно здесь: t.me/iiziai

11