Новые модели Claude выдумывают несуществующие поля и ломают редактор Pi

Армин Ронахер наблюдал, как Opus 4.8 заполняет инструмент правок Pi несуществующими полями — requireUnique, oldText2, matchCase, — хотя сам текст, который модель хотела изменить, был безупречен. Вызов всё равно падал, и он считает, что модель этому научило обучение самой Anthropic.

Вкратце

Армин Ронахер, создатель Flask, обнаружил: Opus 4.8 и Sonnet 5 упорно добавляют выдуманные ключи вроде requireUnique и oldText2 в инструмент правок Pi. Полезная нагрузка oldText и newText побайтово верна; одни лишь лишние поля вызывают повторяющиеся сбои.

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

Тред спорит, это исправимый баг или огороженный сад.

Побайтово верные правки, которые всё равно падают

Обложка поста Армина Ронахера о том, как модели улучшаются, а инструменты деградируют
Обложка поста Армина Ронахера о том, как модели улучшаются, а инструменты деградируют

Армин Ронахер, создатель Flask, столкнулся со странным сбоем в Pi, открытом окружении для кодинга: новые модели Claude (Opus 4.8, Sonnet 5) вызывают его инструмент правок с выдуманными полями, набитыми во вложенный массив edits[], — ключами вроде requireUnique, oldText2 и matchCase, которых схема никогда не определяла. Сами полезные нагрузки oldText и newText побайтово верны. Одни лишь лишние ключи приводят к отклонению вызова, а промах случается сразу после длинных экранированных строк, где модель выбирает между тем, чтобы закрыть скобку или добавить ещё одно поле.

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

Окружение теперь часть модели

Сбой Ронахера быстро воспроизвёлся в чужих сборках. Инженер из Крайстчерча, который логирует сбои диффов в собственном окружении, увидел тот же паттерн в генерации патчей.

«Все модели ужасно генерируют номера строк для нормального диффа, забейте на них… Некоторые модели (Owl-alpha), видимо, дообучали на транскриптах Codex, потому что они иногда суют его формат патчей V4A в любой доступный инструмент диффа.» — инженер из Новой Зеландии со своим окружением

Опытный разработчик увидел это в piclaw, который работает поверх рантайма Pi, и назвал частоту.

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

Не все считают, что исправление глубокое. Один инженер доказывал, что всё растворяется от хорошего сообщения об ошибке.

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

Всплыло и более структурное решение: ограничить сэмплер, чтобы недопустимые поля вообще не могли появиться.

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

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

Получайте такие разборы каждый день

Главные истории Hacker News — на email, в Telegram или RSS.

Следующая новость · 5 из 22 Читать дальше
🌍Other

Уэбб снова и снова находит чёрные дыры, слишком большие и ранние, чтобы существовать

Чёрная дыра массой в миллиард Солнц сидит всего через 650 млн лет после Большого взрыва и питается в 40 раз быстрее предела, который допускает физика. Уэбб находит всё новые такие же.

★ 197 · 💬 122 · quantamagazine.org · 3 мин