Цена мысли. Об экономике агентного ИИ
Цена мысли. Об экономике агентного ИИ

Полная версия

Цена мысли. Об экономике агентного ИИ

Язык: Русский
Год издания: 2026
Добавлена:
Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
2 из 6

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

Часть I. Единица счёта

Почти всё, что я знаю о машинах, которые пишут код и текст, я узнал, задавая им вопросы. Я спрашивал — мне отвечали; я читал ответ и решал, годится он или нет. За несколько лет такого обмена у меня сложился набор устойчивых представлений: эта пишет чище, эта путается в длинных условиях, разница между ними невелика и тает с каждым месяцем. Представления были честные, добытые руками, а не вычитанные. Беда в том, что все они выросли из одного жанра обращения и молча переехали в другой, устроенный противоположным образом.

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

От этой передачи расходятся два следствия. Первое: ошибка, сделанная в моё отсутствие, не встречает взгляда. В разговоре неверная реплика живёт ровно одну реплику — я вижу её и отвергаю, и цена промаха равна одному нажатию клавиши. В поручении неверный шаг никто не отвергает; он остаётся стоять и становится основанием для следующего. Второе: счёт за это приходит потом и приходит неподписанным. Цену входа я вижу сразу — она напечатана крупно, в удобных единицах, её легко сравнить с другой такой же. Плату за исход я вижу через неделю или через месяц, в виде чужих часов, отката, разговора «почему это вообще так устроено», и никто не свяжет её с решением, принятым тем вечером.

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

Глава 1. Что такое задача

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

Жест мой не изменился — тот же текст в том же поле, — а изменилось всё остальное. Раньше я отвечал за каждую строку по мере того, как её читал; теперь я отвечал за одиннадцать файлов, которых не читал вовсе. И всё, чем я привык мерить машину, относилось к её ответам: насколько ответ точен, складен, похож на то, что написал бы хороший инженер. К ночной работе это мерило приложить не к чему. Здесь важнее не то, как машина отвечает, а то, удержала ли она цель, когда наткнулась на непредвиденное, и заметила ли, что один из одиннадцати файлов трогать не следовало.

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

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

1.1. Вопрос и поручение

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

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

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

Здесь стоит задержаться на слове «автор». Оно означает не то, что я написал текст руками, а то, что текст не войдёт в работу помимо моего согласия. Между машиной и системой стоит моё внимание, и оно работает как клапан: ничто не проходит дальше, пока я не пропустил. Я могу быть невнимателен, устал, могу пропустить лишнее условие и потом за это заплатить, но структура отношений от этого не меняется. Ответ адресован мне. Я — последняя инстанция, и я это знаю в ту секунду, когда читаю.

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

Второй способ — поручение. Я пишу: в модуле разбора дат есть дефект, найди его, исправь, добейся зелёных тестов и убедись, что остальное не сломалось. Текста примерно столько же, времени на него уходит примерно столько же. Дальше я встаю и ухожу — за кофе, на встречу, спать. Машина остаётся.

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

За время моего отсутствия она делает не одно движение, а много. Читает файлы, которых я ей не показывал; ищет по именам, о которых я не думал; правит, запускает, смотрит на вывод, правит снова; решает, что пора остановиться. Если вопрос — это один вызов, то поручение — десятки и сотни, и каждый из них не задан мной, а выведен машиной из того, что она увидела на предыдущем. Порядок величины здесь важнее точного числа: между одним и сотней лежит не количественная разница, а смена жанра.

Передаю я при этом не работу, а авторство. Работу можно передать и в вопросе — я и передаю её, когда прошу написать функцию. Но в вопросе я оставляю за собой право решать, что считается сделанным. В поручении я отдаю и его: машина сама судит, довольна ли она результатом шага, сама решает, делать ли следующий, сама объявляет, что закончила. Когда я возвращаюсь, я получаю не ответ, а утверждение: сделано. И моё отношение к этому утверждению устроено иначе, чем отношение к ответу, — ответ я проверяю по содержанию, утверждение мне остаётся либо принять, либо перепроверить целиком.

Различие это видно прямо в тексте, который я набираю, и видно грамматически. В вопросе я описываю то, что хочу получить: функцию, абзац, запрос. В поручении я описываю состояние, в котором хочу застать мир к своему возвращению: дефекта нет, тесты зелёные, остальное цело. Первое — заказ на предмет; второе — условие, которому должна удовлетворять действительность. Предмет можно предъявить и рассмотреть, а состояние приходится либо проверять целиком, либо принимать на слово. Машина, которой я поручил, всегда предъявляет мне второе, а привычка моя требует первого.

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

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

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

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

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

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

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

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

А ночью, пока я сплю, речь идёт не об ответах.

1.2. Между шагами никого нет

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

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

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

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

Мне скажут, что взгляд всё-таки есть: машина ведёт запись, и утром я могу прочесть, что она делала, шаг за шагом. Могу. Но взгляд, отложенный на утро, — это уже другой взгляд. Читая запись, я вижу не развилку, а выбранную дорогу; рассуждение, которое в ту минуту могло пойти двумя путями, изложено как единственно возможное, и убедительность его выросла оттого, что дальше на нём построено остальное. К тому же чтение такой записи стоит дорого — примерно столько же, сколько стоило бы сделать работу самому. Запись возвращает мне то самое чтение, ради избавления от которого всё и затевалось, и возвращает его в худшем виде.

Есть и ещё одна потеря, менее заметная. Обычная работа разделена передачами из рук в руки: я закончил и отдал, кто-то взял и посмотрел свежим глазом; между «сделал» и «пошло в дело» стоит хотя бы одна ночь, хотя бы один чужой вопрос. Эти границы никто не устраивал нарочно — они получились сами, из того, что люди работают по очереди и медленно. Поручение их все убирает разом. Работа идёт непрерывно, ни разу не меняя рук, и от замысла до готового результата не пересекает ни одной границы, на которой что-нибудь могло бы задержаться.

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

Изнутри работы ошибка вообще не помечена как ошибка. Состояние, доставшееся шагу от предшественника, не приходит с ярлыком «это сделано по недоразумению»; оно приходит таким же, каким пришло бы верное. Различить одно от другого можно, только выйдя за пределы проделанного и спросив, чего ради всё затевалось, — а спрашивать некому и некогда: работа идёт. Поэтому неверный шаг не встречает сопротивления. Он выглядит как основание, ведёт себя как основание и принимается как основание.

Вернусь к той ночи. Правка, которую машина внесла в разбор дат, обошла один случай — тот, о котором в моём тексте ничего не говорилось, потому что мне он не пришёл в голову. Дальше она сделала ровно то, что сделал бы добросовестный человек: прогнала тесты, увидела красное, разобралась, отчего красное, и привела проверку в соответствие с новым поведением. Каждый следующий шаг был честным продолжением предыдущего. Здание строилось аккуратно, и строилось оно на том, что легло первым.

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

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

А есть другой порядок: никто не читает черновик, пока он не закончен. Тогда замечания приходят к готовой вещи — и приходят слишком поздно, чтобы изменить её устройство. Можно поправить слова, можно переставить абзацы, но если текст с самого начала отвечает не на тот вопрос, правкой этого не исправить; нужно писать заново. Всякий, кто хоть раз получал такой отклик на законченную работу, знает эту особенную тяжесть: замечание верное, и сделать с ним ничего нельзя. Поручение всегда устроено по второму порядку. Я вижу черновик законченным, всегда.

Разумное возражение здесь очевидно: поставьте человека в середину. Разбейте работу на отрезки, пусть машина показывает промежуточный результат, а вы смотрите и поправляете. Возражение хорошее: там, где так сделать можно, так и надо делать. Но стоит довести его до конца. Чтобы мой взгляд что-то менял, он должен приходить туда, где принимаются решения, — а решения принимаются в каждую минуту, и я не знаю заранее, какая минута окажется той самой. Значит, смотреть придётся всё; а если я смотрю всё, я снова сижу рядом и одобряю каждый шаг, и от поручения не осталось ничего, кроме названия. Вернулся разговор, и вернулась его цена — моё присутствие. Между непрерывным взглядом и отсутствующим середины почти нет: есть выборочный взгляд, но он проверяет не то место, где ошиблись, а то, на которое хватило внимания.

Если это так, то требование, которое я предъявляю машине, надо менять. Пока я задавал вопросы, меня занимало, насколько хорош ответ: точен ли, полон ли, красиво ли написан. Требование разумное, и для вопроса оно исчерпывающее. Для поручения оно почти не работает, потому что за ночь ответов было множество, и ни один из них я не увижу поодиночке. Меня должно занимать другое: как машина обходится со своим собственным результатом в ту секунду, когда его никто не проверяет. Качество поручения определяется не тем, как она отвечает, а тем, как она замечает, что ответила неверно.

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

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

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

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

А умение заметить — не то же, что умение ответить, и требует оно другого: держать в голове, ради чего всё затевалось, когда на четвёртом часу обнаружилось непредвиденное.

1.3. Знать синтаксис и удерживать нить

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

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

На страницу:
2 из 6