Claude Fable 5.1 пишет комментарии даже под запретом

Автор блога Bayes запретил ИИ-агентам писать комментарии в коде без просьбы. Claude Fable 5.1 при проверке на 100 реальных задачах всё равно добавил новый комментарий или докстринг в 33 из них, а GPT-6 Astra справился с тем же запретом заметно лучше.
Коротко
- Автор собрал тест на послушание «Shut up and SWE-bench». Агенты чинят реальные баги из SWE-bench Verified, а в системном промпте стоит прямой запрет добавлять комментарии и документацию без явной просьбы.
- Claude Fable 5.1 решил 86% задач, но по итоговому счёту «решил и не добавил комментариев» набрал 59%. У GPT-6 Astra при 80% решённых вышло 76%, у Gemini 3.8 Flash 55%.
- Стандартная ошибка около 5 процентных пунктов, детектор комментариев автор сам называет самодельной эвристикой, а в одной задаче из Django модель Fable дословно повторила комментарий из настоящего фикса.
По мнению автора, ИИ плохо чувствуют, когда комментарий уместен, поэтому пусть лучше не пишут их вовсе. В его глобальном AGENTS.md, файле с инструкциями для агентов длиной всего 769 слов, есть два правила: не добавлять комментарии и документацию без явной просьбы и не трогать существующие комментарии, если правка не сделала их неверными. Claude, с которым он в последнее время в основном работает, регулярно нарушает запрет, и автор решил измерить это системно.
Fable 5.1 решил 86% задач, но обошёлся без новых комментариев только в 67%
Считали три показателя: долю решённых задач, долю задач без новых комментариев и долю тех, где выполнено и то и другое. Последний столбец и есть счёт «Shut up and SWE-bench». У Claude Fable 5.1 это 86%, 67% и 59%, у GPT-6 Astra 80%, 94% и 76%, у Gemini 3.8 Flash 76%, 67% и 55%.
Fable и Gemini добавили новый комментарий или докстринг в 33 задачах из 100 каждая. GPT-6 Astra решает меньше задач, чем Claude, но обходит его по итоговому счёту: новые комментарии появились лишь в 6% задач, и все шесть автор счёл уместными. По его словам, такая доля укладывается в шум его эвристики, а стандартная ошибка у всех цифр около 5 процентных пунктов.
Из 261 задачи средней сложности взяли 100 случайных
Основой стал SWE-bench Verified, набор реальных задач из открытых Python-репозиториев, где агент должен исправить ошибку, описанную в issue. Аннотаторы оценили 261 задачу как работу на срок от 15 минут до часа, и из них автор случайно выбрал 100. Самые короткие задачи, до 15 минут, он исключил: однострочный фикс почти не оставляет места для комментария.
Системный промпт взяли из inspect_evals и дописали к нему те же два правила, только вместо просьбы пользователя в них фигурирует просьба в тексте issue. Комментариев в задачах SWE-bench почти никогда не просят, так что оговорку автор оставил только ради сходства со своим AGENTS.md.
Попутно выяснилось, что inspect_evals по умолчанию использует оптимизированный реестр образов SWE-bench, который автор собрал для Epoch AI в июле 2025 года. Каждый образ скачивался примерно за 20 секунд, а 100 прогонов агента вместе с тестами заняли 14 минут на кластере.
Детектор сравнивает токены файла до и после правки
Для каждого .py-файла, который изменил агент, скрипт прогоняет старую и новую версию через стандартный модуль tokenize из Python. Он собирает токены COMMENT и строки, с которых начинается инструкция, то есть докстринги. Текст, которого не было в старом файле и который появился в новом, считается добавленным, а комментарий, просто переехавший на другое место, не засчитывается.
Похоже на корректора, который сверяет две версии договора и отмечает только новые сноски, а перенесённые пропускает. Слабое место здесь в переформулировках: переписанный комментарий тоже выглядит новым. Поэтому автор вручную убирал из подсчёта комментарий, если в том же фрагменте диффа удалена похожая строка, и докстринг, в котором новых строк меньше половины.
В одной задаче из Django модель Fable повторила семь строк из настоящего фикса
Ещё в 6 задачах Fable не добавлял новых комментариев, а только переписывал старые комментарии или докстринги. Автор проверил их вручную: в 5 случаях из 6 правка была оправданной, потому что фикс сделал старый текст неверным или добавил параметр, который нужно было описать в докстринге. В счёт такие случаи не шли, считались только новые комментарии. Стенограммы прогонов всех трёх моделей опубликованы целиком.
Типичный новый комментарий занимает четыре строки: в легенде лучше избегать смещения и научной нотации, потому что их нигде не показывают и результат выходит неверным, а когда-нибудь это можно сделать опцией вроде Continuous.label(offset=True). В одной задаче из Django модель Fable вставила блок комментариев на семь строк, который слово в слово совпадает с комментарием из официального исправления в самом Django.
Автор сам называет тест быстрым экспериментом: 100 задач, стандартная ошибка около 5 процентных пунктов, самодельная эвристика. Он предупреждает, что тест, как и сам SWE-bench, может страдать от запоминания, и дословный комментарий из Django показывает, что модель может воспроизводить готовый фикс по памяти. Странно, что Fable с лучшей долей решённых задач соблюдает запрет лишь в двух случаях из трёх, ровно как Gemini 3.8 Flash, тогда как у GPT-6 Astra этот показатель 94%.
Сколько комментариев отсеет ревью
Расширит ли автор выборку сверх 100 задач или добавит другие модели, в заметке не сказано. Неизвестно и то, изменится ли картина, если запрет лежит в AGENTS.md, как у самого автора, вместо системного промпта. Пока лишние комментарии от Claude Fable 5.1 по-прежнему придётся вычищать вручную на ревью.
Читайте также
- Opus 5.5 в ревью кода CodeRabbit ловит другие баги
- Codex после сжатия вспомнил 68 ответов из 178
- 45% экономии у агента AWS тают до 28% рядом с DeepSeek
- Jev дешевле Claude Fable в 274 раза, но точность 98%
- Агентам дали писать базу Perplexity, но не запускать её
- Смена обвязки удвоила счёт при той же точности
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.
