Карсон Гросс, создатель hyperscript, рассказал о реальном случае работы с AI на примере поддержки своего языка. hyperscript — это интерпретируемый скриптовый язык для веба, написанный на JavaScript. В нём намеренно нарушены многие правила парсинга — нестандартный эксперимент.
Всё началось с бага. Пользователь сообщил, что в версии 0.9.91 перестала корректно работать конструкция:
fetch}?symbol=${symbolas JSON
Проблема: as JSON привязывалась слишком рано и пыталась преобразовать строку в JSON до того, как она попадала в fetch. А нужно было наоборот — сначала выполнить fetch, потом обработать результат как JSON.
Гросс использовал Claude, чтобы найти причину. AI справился отлично: выяснил, что при рефакторинге команды go автор неаккуратно вынес общий метод parseURLOrExpression(). Из-за этого после fetch парсер стал разбирать общее выражение, а as перехватывался как оператор преобразования типов, а не как модификатор fetch.
Но с исправлением AI справился плохо. Первое предложение — разбирать «string-like» лист и только потом выражение — было слишком частным и не работало с переменными: fetch $url as JSON. Второе — добавить флаг noConversions на парсер — было грязным хаком, хотя парсер и так уже был контекстно-зависимым.
Гросс вспомнил, что в hyperscript есть механизм «follows» — токены, которые «вышестоящий» элемент парсера может забрать себе, не давая выражениям их обработать. Он предложил Claude использовать именно это: временно «забирать» as как follow-токен при парсинге URL, а потом отпускать. Claude согласился и сгенерировал код. Но оказалось, что fix слишком широкий — он затронул и команду go, где as используется для конвертации. Тогда Гросс сам дописал финальное решение: перенёс pushFollow/popFollow только в FetchCommand#parse().
AI хорошо показал себя в расследовании и генерации тестов — создал маленькие, чёткие тесты, подтверждающие исправление. Но чистое, архитектурно верное решение пришлось додумывать человеку.
Автор делает вывод: AI полезен, но без понимания кодовой базы легко накопить технический долг. Ключ — «человек в цикле», который работает с AI как с инструментом, а не как с «учеником чародея», слепо принимая любые решения. Гросс также отмечает, что для возрастных разработчиков AI компенсирует снижение памяти и выносливости — помогает быстро вникать в контекст и генерировать больше тестов, чем хватило бы сил написать самому.