Почти во всём, что делает агент, он разбирается лучше меня. Последние семь недель мы с Клодом считали, что включают в себя остающиеся на долю человека пять процентов, и получили достаточно однозначный ответ.
Что я считал
В репозитории этого сайта с 7 сентября лежал файл с мало что говорящим названием «пять процентов» (так исторически сложилось). Правило было простое: после каждого раза, когда я ревьюил код агента, тот дописывал туда запись: в чём ошибся, сколько раз уже так ошибался за всё время, и короткое описание наиболее показательных примеров.
Цель была примерно: накопить достаточно случаев, чтобы сделать выводы, а потом, собственно, написать про это статью.
К 27 октября накопилось 219 случаев и четырнадцать видов ошибок — так, как их распределяли сами агенты.
Главная ошибка
Самый толстый раздел — 93 случая, 42% всех, получил заголовок «What it was handed, it treats as fixed»: что дали, то и данность. Причём он был настолько назойливым, что я написал про него в «Агентской библии», не дожидаясь завершения эксперимента.
Вот несколько характерных примеров:
- Агент выбирал префикс для коммита из списка:
feat,fix,docsи так далее. Изменение не подходило ни под один, и он выбрал наименее неподходящий. Моё волевое решение: завести префиксcontent:. - Девять мест в коде открывали ссылку в новой вкладке, и агент предложил завести для этого отдельный параметр. Моё решение: во всех остальных местах «та же вкладка» сложилась исторически и была ни к чему, так что параметр не нужен — всё просто должно всегда открываться в новой вкладке.
- Роль
artistв учёте часов он прочитал как «художник» и записал на неё эмблемы для сайта. Artist — это про музыканта. - Правило «опубликованный адрес страницы не меняется» он применил к переименованной песне и оставил ей старый адрес. Хотя поменять его вместе с названием было бы ничего страшного.
Ирония в том, что в каждом случае рассуждение внутри рамки корректно. Второй агент, которого попросят проверить первого, его одобрит. Поймать это можно, только сдвинув саму рамку.
И остальные тоже
Тринадцать других разделов агент завёл как отдельные ошибки, и названия у них разные. Но если спросить про каждый, что именно агент принял за данность, ответ находится почти всегда:
- Объяснение того, как работает код, подменяет запуск кода (28) — данностью стало его собственное объяснение. Он трижды написал, что GitHub отмечает сборку готовой «через несколько минут»; один запрос к API показал три секунды.
- Правит копию перед глазами, а не факт за ней (19) — данность: копия одна, та, что открыта.
- Просишь источник — получаешь его версию источника (16) — данность: как он помнит текст, так текст и выглядит.
- Дали форму — заполнит форму (14) — данность: раз формат позволяет, значит, так и надо. Агенту разрешили пометить, кто поёт какой куплет, — он построил реестр исполнителей и четыре проверки при сборке. Мне нужно было «просто for reference».
- Текст отвечает на его вопрос, а не на вопрос читателя (10) — данность: как понял он, так поймёт и читатель.
- Ещё три поменьше (8, 6 и 2) — его собственное прошлое решение, его замысел вместо отрисованной страницы, его прочтение вместо текста автора.
Вместе с главной это 196 случаев из 219, 89%; остальные подробно расписывать не буду — можно посмотреть в самом файле.
К слову, тут ирония выходит и на мета-уровень: например, список буллитов выше написал агент. Ему, думаю, понятно, что он написал. При этом я читаю это снова и снова, и у меня как белое пятно — будто мы в каких-то вещах вообще на разных языках говорим. Я чувствую здесь какой-то урок, который нам ещё предстоит вынести.
Оговорки
Эксперимент далёк от чистого: один агент, на одном фреймворке (Claude Code), один проект, причём довольно странный — личный сайт, на котором живут ещё четыре сайта, игра про грибы, песни и ИИ-персона, которая ходит и удивляется. Ну и подсчёт тоже, думаю, хромал, потому что считающий уже видел категории, а богатые, как известно, всегда богатеют.
Так что на это стоит смотреть как на интересный сигнал, а не какое-то строгое заключение. Тем не менее.
Что из этого вышло
Файл я закрыл... И открыл новый.
Во-первых, теперь «сделай шаг назад и посмотри, а не являются ли сами рамки задачи кривыми» — это отдельный скилл, который так и называется, «пять процентов».
Первый же его прогон, правда, показал, что, возможно, мы имеем дело с системной проблемой, а не проблемой постановки задачи. Агент нашёл, что один и тот же текст перефразируется в разных местах на сайте, и задался вопросом, не стоит ли их унифицировать.
То, что он это нашёл, — хорошо (нехорошо, что этого не нашёл отдельный скилл /dry), но вот одно из тех мест, где это повторялось, оказалось вообще устаревшим, и ему нет места на сайте:

Весь «writing», который там был, — это атавизм, оставшийся от поза-поза-прошлой версии сайта, когда я временно возомнил себя крутым блогером. На сайте Fractional CTO ему не место, по крайней мере не в таком виде точно.
Так что скилл, найдя узкое место, не увидел, в чём оно действительно узкое.
При этом агент тут не виноват: он не знает, что у вас в голове, — хотите ли вы, например, впихнуть изменение в существующие префиксы коммитов или придумать новый. Решить за вас то, что является вашим, он не может.
Пойдёт ли это дальше так же — не знаю, но теперь мы ведём новый учёт: сколько оставленных Клодом комментариев в рамках нового скилла оказались по делу 🙈
Сработает или нет — не буду предсказывать, хотя интуиция подсказывает ответ. Но в курсе держать буду.