Колонка

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

Год журнала: каждый случай, когда ИИ соврал, и каждый, когда всерьёз выручил. Протокол проверки, к которому это привело, и почему реальная история луддитов — про качество и цену перехода, а не про страх машин.

мнение 14 августа 2026 г.

Это колонка-мнение, а не результат лаборатории. Цифры здесь — из рабочего журнала автора и цитируемых внешних источников (помечены в тексте), никогда — из реестра клеймов. Измеренные результаты с доказательствами живут в /claims/.

На прошлой неделе я нашёл в Dockerfile образ с тегом, которого никогда не существовало. Не устаревший, не с опечаткой. Модель просто придумала его целиком. Код выглядел аккуратно, тесты проходили. Автор пул-реквеста сказал, что всё проверил глазами.

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

Меня раздражают оба случая.

Я использую ИИ каждый день: пишу код, разбираю чужие репозитории, ставлю эксперименты, готовлю датасеты. На моём домашнем железе живёт self-hosted стек из десятков сервисов, и без ИИ я бы не поддерживал его один. Примерно год назад я завёл журнал: после каждого случая, когда инструмент мне соврал, и после каждого, когда всерьёз выручил, туда уходит запись. Накопилось на две колонки, и обе стоит показать целиком, с уликами.

А в конце объясню, при чём здесь луддиты и почему я считаю, что они были правы. Это не фигура речи, у меня там числа.

Счёт первый: ускорение в 2,6 раза, которого не было

Мой бенчмарк реранкера выдал 2,7 запроса в секунду. Боевой сервис на соседнем узле, с тем же образом и той же моделью, делал 7. Разница в 2,6 раза на ровном месте.

Я решил, что нашёл золото: боевой узел был протюнен по памяти и ядру, значит, тюнинг и даёт 2,6×. ИИ-ассистент, с которым я ставил эксперимент, гипотезу поддержал и помог собрать контроли: одинаковый образ, одинаковый governor, одинаковая модель. Всё сходилось. Я уже планировал ребут-эксперимент с даунтаймом, чтобы добить доказательство.

Перед ребутом я задал работающему сервису один вопрос:

$ curl -s localhost:8082/props | jq .total_slots <!--hq-->
4    # мой бенч при этом гонял с --parallel 1 <!--hq-->

Боевой сервис крутил четыре параллельных слота. Мой бенч запускался с одним, явно заданным. А в самом сервисе флаг --parallel не задавался вовсе: между версиями llama-server у него сменился дефолт, единица превратилась в четыре. Никакого «тюнинг даёт 2,6×» не существовало. Реальный вклад тюнинга, после честного A/B: 6–14%.

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

Счёт второй: nDCG больше единицы

Для своего RAG-стека я собрал систему оценки качества поиска. Метрика nDCG по определению лежит между нулём и единицей. Моя выдала 1,63. На следующем прогоне 2,13.

Код оценки писался с ИИ. Тесты были зелёные, включая два теста «идеальный вход даёт 1.0». Ошибка сидела в единицах: числитель считал попадания по чанкам документов, а нормировочный идеал по якорям разметки. Разные множества, разные мощности, метрика спокойно уходила за единицу на любом реальном корпусе.

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

С тех пор у меня правило для любой метрики: сначала тест инварианта на границе. Если величина обязана лежать в отрезке, это проверяется отдельным тестом до того, как метрике начинают верить.

Счёт третий: месяц healthy, четыре документа из тридцати

Самый дорогой счёт. RAG-стек стоял в проде месяц. Все healthcheck зелёные, эндпоинты отвечают, мониторинг молчит. Потом я загрузил в него тридцать реальных документов.

Проиндексировались четыре.

Чанкер режет документы на куски по 545–574 токена. Эмбеддер без одного неочевидного флага обрезал физический батч на 512. Всё, что длиннее, не усекалось, а падало с ошибкой сервера. При этом сервис честно рекламировал ёмкость 2048 токенов на слот: заявленная ёмкость не проверялась ни одним тестом, все мои тесты эмбеддили короткие строки.

Автоматика месяц отвечала «жив». Вопрос «а жуёшь ли ты документы нормального размера» ей никто не задавал. Класс «формально живо, реально непригодно» ловится только реальным использованием: залить корпус, задать вопрос, посмотреть, что вернулось.

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

Вторая колонка

Показывать счета и молчать о выигрыше было бы нечестно. За тот же год с тем же инструментом:

Год назад значительную часть этого я делать не умел. ИИ не сделал работу за меня, но резко сократил путь от «не знаю, с чего начать» до первого работающего варианта.

Цена тоже в журнале: проверка съедает от четверти до трети сэкономленного времени. Каждый точный факт приходится подтверждать, числа перемерять, патчи гонять через тесты, а потом ещё проверять сами тесты. Даже после этого остаток положительный. В реальной работе ИИ похож на сотрудника, который печатает быстрее всех в команде и никогда не признаётся, что чего-то не знает.

Протокол, к которому эти счета меня привели, менялся после каждого факапа. Сейчас он короткий.

  1. Любое точное имя проверяется внешне, у каждого факта помечено происхождение. Версия, тег, флаг, хеш, URL. Смотреть в реестр, документацию или исходники, а не в следующее сообщение той же модели. Метки три: проверил сам, взял из документации, получил от модели. Вторую и третью смешивать нельзя.
  2. Зелёный тест не считается доказательством работы. Хотя бы раз пройти реальный путь: загрузить настоящий документ, посмотреть, что реально вернул поиск.
  3. Дефолты фиксируются явно, за эксперимент меняется одна переменная. Спрашивать эффективный конфиг у работающего процесса.
  4. Сырые результаты лежат рядом с выводом. Читатель, который может пересчитать таблицу, найдёт ошибку раньше, чем она станет чужим продом.
  5. Считается полная цена. Первый замер памяти под нагрузкой показал 7,7 ГиБ; реальное потребление процесса оказалось 187 МиБ, остальное было файловым кэшем.

Методология самодельная. Просто без неё сэкономленные часы через месяц возвращаются техдолгом.

При чём здесь луддиты

Теперь обещанное. Пока я вёл этот журнал, индустрия у меня на глазах разделилась на два лагеря: одни объявили инструмент бесполезным генератором слопа, другие объявили скептиков луддитами. Второе слово употребляется как диагноз. Зря: реальная история луддитов сильно интереснее карикатуры, и она ровно про наш журнал.

Луддиты не были крестьянами, испугавшимися машин. Национальный архив Великобритании описывает их по регионам: ноттингемские вязальщики поколениями работали на чулочных рамах, йоркширские кропперы стояли на вершине квалификационной пирамиды ремесла. Люди, знавшие технологию лучше всех в стране, ломали станки избирательно, у конкретных фабрикантов, резавших расценки. В письме в Home Office от февраля 1812 года ноттингемский магистрат Роберт Бейкер описывал случай, когда унесённую при погроме ткань на следующий день вернули владельцу: люди, ломавшие рамы, подчёркнуто не были грабителями. Эрик Хобсбаум называл это collective bargaining by riot, коллективным торгом посредством бунта. Насилие там тоже было настоящее, вплоть до убийства фабриканта Уильяма Хорсфолла, и вешали в Йорке в 1813-м за конкретные преступления, а не за экономические взгляды.

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

Главный аргумент луддитов был про качество. Дешёвые «cut-ups», против которых бунтовал Ноттингем, кроились и сшивались вместо цельной вязки и расползались по швам. Байрон, выступая первой речью в Палате лордов против смертной казни за поломку рам, говорил ровно об этом: работа выполняется быстрее, выходит хуже и идёт на экспорт. Речь сохранилась в Hansard. Вязальщики были правы в оценке качества полностью. Это им никак не помогло: товар «достаточно хорош и заметно дешевле» выигрывает у «превосходен и дорог» на большинстве рынков. Знакомая механика? Первый сгенерированный вариант кода обычно хуже того, что напишет сильный инженер. И рынку в большинстве задач нужен не лучший код, а достаточно хороший к четвергу.

Производительность выросла раньше зарплат

Теперь числа, из-за которых я считаю, что луддиты были правы по существу.

Роберт Аллен назвал первую половину XIX века «паузой Энгельса»: за 1780–1840 годы выпуск на британского работника вырос примерно на 46%, а реальные зарплаты на 12%. Норма прибыли за то же время удвоилась. Расчёт опирается на пессимистичные ряды Фейнстейна; оптимистичные серии Кларка дают мягче, но историки спорят о глубине разрыва, не о его существовании.

После 1840-го всё изменилось: к 1900-му выпуск вырос на 90%, зарплаты на 123%. Труд догнал производительность и обогнал. То есть машины в итоге сделали всех богаче. Проблема в слове «в итоге»: разрыв продержался дольше профессиональной жизни человека, встретившего механизацию в её начале.

А с ручными ткачами механизация расправилась в два такта, и первый удар нанесли не станки, а собственный приток людей в ремесло. Машинное прядение сделало ткачество выгодным: пряжа подешевела, спрос рос, а учились ремеслу за недели, благо семилетнее ученичество только что отменили. Та самая дата, 1814-й. В профессию хлынули люди, и именно они обрушили расценки: к 1817 году заработок ткача упал больше чем вдвое, при том что механических ткацких станков на всю отрасль насчитывалось около двух с половиной тысяч. Обваливать зарплату было пока физически нечем.

Станки пришли вторым тактом. К 1830 году их стало 55 тысяч вместо 14, а ручных станков в парламентских дебатах по-прежнему числилось около 240 тысяч: люди не исчезали из статистики, они продолжали работать по профессии, пока профессия дешевела. Ткач, получавший в лучшие годы до 23 шиллингов в неделю, к 1826-му получал 5–8, и в некризисные 1830-е парламентские комиссии фиксировали те же уровни. Шиллинги номинальные, с поправкой на дефляцию падение ближе к трём разам. Всё равно обвал уровня жизни в разы за одно поколение, и занять благосостояние у собственного внука ткач не мог.

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

Вопрос, который луддиты задали и за постановку которого заплатили, звучал не «хороши ли машины». Он звучал: кто получит выгоду перехода и кто оплатит его издержки. Подробно эту логику разбирают Карл Бенедикт Фрей в The Technology Trap и Брайан Мерчант в Blood in the Machine; на русский вторая, к сожалению, не переведена.

Кто оплачивает переход сейчас

Самый очевидный кандидат: люди, которые только входят в профессию.

Stanford Digital Economy Lab зафиксировала относительное снижение занятости на 16% среди работников 22–25 лет в профессиях, которые ИИ задевает сильнее всего (в первой редакции препринта было 13%). Более опытные сотрудники в тех же областях держались лучше. По работе на американской базе онлайн-вакансий, junior-вакансий разработчиков стало на 14–15% меньше относительно senior после выхода ChatGPT.

Оба источника пока препринты, данные в основном по США, и на тот же период пришлись другие удары по найму: налоговая правка Section 174, с 2022 года заставлявшая американские компании капитализировать расходы на разработку вместо немедленного вычета (летом 2025-го вычет восстановили для налоговых лет, начинающихся после 31 декабря 2024-го), конец эпохи нулевых ставок, откат ковидного перенайма. Авторы стэнфордской работы сами оговаривают, что весь эффект на ИИ списывать нельзя, а в февральском обновлении 2026 года показали, что при самых строгих контролях спад у наиболее затронутых ИИ молодых работников проявляется только с 2024 года. Но проблема входа уже не выглядит фантазией.

Если команда убирает все задачи для начинающих, senior-инженеры не начнут появляться из воздуха через пять лет. Сегодня команда на этом экономит, а потом получает дефицит людей, умеющих отвечать за систему целиком, а не только принимать или отклонять генерацию.

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

Есть и различие с 1812 годом, без которого аналогия превращается в фатализм. Луддит жил при запрете на объединение работников (Combination Acts, 1799–1824), без права голоса (городские рабочие частично получили его в 1867-м, сельские в 1884-м), с хлебными законами, державшими цену еды, и с виселицей за сломанный станок. Шестидесятилетний разрыв объясняется не паровой машиной. Он объясняется тем, что у пострадавшей стороны не было ни одного канала предъявить счёт. Сегодня каналы есть: право объединяться (профсоюз, в отличие от цеха, торгуется о доле выигрыша с нанимателем, а не держит дверь против других рабочих), переносимая квалификация, открытые веса, возможность поднять инференс на своём железе и уйти от поставщика. Мой домашний стек существует ровно поэтому. Гарантий у каналов нет: когда исследователь Дэниел Кокотайло увольнялся из OpenAI, молчание о своих претензиях к компании ему предложили обменять на заработанную долю примерно в два миллиона долларов. Он отказался, история стала публичной, и компания отступила от практики таких соглашений. Работают каналы до тех пор, пока ими пользуются.

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

Вместо вывода

В 1804 году Жаккар усовершенствовал станок, где узор задавала последовательность перфокарт. Бэббидж взял этот принцип для Analytical Engine, а Ада Лавлейс написала, что машина «ткёт алгебраические узоры подобно тому, как жаккардов станок ткёт цветы и листья». Луддиты жаккардовых станков не ломали, механизм добрался до Британии позже виселиц в Йорке. Но программирование выросло из того же промышленного мира, где машина впервые начала менять цену профессионального навыка. Теперь спор пришёл к нам.

Отказываться от ИИ из принципа мне кажется проигрышной стратегией. Использовать его без проверки тоже, и этих людей я опасаюсь больше: принципиальный отказник хотя бы не заливает прод галлюцинациями.

Автор того пул-реквеста, кстати, по-прежнему доверяет модели на слово. Человек, перекладывавший данные руками, по-прежнему перекладывает. Оба уверены, что время на их стороне.

Вопрос луддитов остался: кто получает выигрыш и кто оплачивает переход?

Мне интересен ваш журнал. Что ИИ уже сломал лично у вас и что дал, в обе колонки. Особенно от тех, кто нанимает джунов, и от тех, кто сейчас пытается войти.


Да, этот текст готовился с помощью ИИ. Эту строку я оставляю намеренно. Ссылки на первоисточники стоят прямо в тексте, сырые данные моих замеров лежат в открытых репозиториях, несколько красивых формулировок проверку не пережили и были выброшены. Спорить предлагаю не о том, был ли здесь ИИ, а о том, выдерживает ли текст проверку.

← Все колонки