И до меня дошло, что я нарушил правило, которое сам миллион раз произносил в адрес джунов: "никогда не сажай человека делать сложную задачу за столом, заваленным чужими бумагами".
Иду в Claude Code и формулирую задачу заново: возьми данные из отчёта, сделай моки, найди примеры подобных интерфейсов и собери отдельную HTML-страничку. Без обвязки, без бэкенда, только этот компонент. Клод подумал и предложил пять вариантов: сводка, тепловая карта, карточки, вкладки и журнал. Через двадцать минут у меня на диске лежали пять прототипов. Каждый рабочий.
В карточках я наконец увидел то, ради чего отчёт затевался. Никитина Дарья Сергеевна сидит только в текстовых моделях - значит, задания на картинки и видео благополучно прогуляла. В понедельник её ждёт небольшая пропесочка.
Самый интересный момент случился в тепловой карте. Там обнаружился баг с фиксированными колонками - при скролле одна колонка налезала на другую. Тот же самый баг я уже видел в проде, когда пинал агента в живом приложении. Тогда я возился с ним больше часа, Claude на каждом подходе бодро отчитывался «исправил», я проверял - не исправил. В итоге я сдался, решив, что упёрся в какое-то фундаментальное ограничение CSS-фреймворка.
В песочнице я отправил скриншот и сказал: «дружище, ты лажанул». Он отчитался «исправил» - на самом деле нет. Отправил ещё раз. И пока я ходил смотреть остальные четыре варианта, Claude где-то там, в своём окне, тихо всё доделал. Возвращаюсь - работает.
Не буду клясться, что CSS-окружение в проде и в песочнице было побитово одинаковым: в живом приложении наверняка играли роль соседние стили, контейнеры, какие-то родительские правила, в которых я плаваю. Но разница, которая определила результат, лежала не в коде. Она лежала в том, что вокруг.
Это называется context rot - контекстная гниль. Когда вы просите агента поправить таблицу внутри живого приложения, в его контекст вместе с этой таблицей заходит шум: соседние стили, типы, утилиты, чужие компоненты. Каждая лишняя строчка отнимает внимание от той задачи, которая перед ним сейчас.
Получается, главная битва, которую мы ведём с AI-агентами, идёт не за токены и не за объём контекстного окна. Битва идёт за внимание. Та же самая, которую мы ведём со своими разработчиками. Дайте джуну одну задачу - сделает хорошо. Дайте пять параллельных - сделает все пять плохо. Дёргайте сеньора двадцать раз в день - получите хаос с приличным резюме на ревью. С агентом всё то же самое.
Чем эта история закончилась? Я выбрал вариант с карточками и перенёс его обратно в живое приложение. Пришлось чуть-чуть подкрутить родительский контейнер, и всё встало на место. Работает там сейчас. Колонки в тепловой карте больше не налезают - проверил.
Вы платите за подписку на модель, чтобы она думала над вашей задачей. А вместо этого она читает чужие импорты, чужие стили и чужой код, который никто не просил читать - потому что вы сами привели её туда работать.
Песочница для интерфейсов - не костыль. Это способ дать агенту ту же роскошь, которую мы стараемся давать людям: одну задачу, чистый стол, никаких посторонних шумов. Когда AI-агент в очередной раз тупит на сложной задаче в живом коде - это не он тупит. Это вы посадили его за стол, заваленный чужими бумагами, и удивляетесь, что он не сосредоточен. Уберите бумаги.
Post #42
196
- ❤ 2