Claude Fable 5 обошёл GPT-5.6 Sol в тесте на NP-трудной задаче: режим /goal почти не помог
Чарльз Азам, независимый исследователь и автор блога charlesazam.com, сравнил двух ИИ-агентов, Claude Fable 5 (в Claude Code) и GPT-5.6 Sol (в Codex CLI), на задаче KIRO: неопубликованной NP-трудной задаче проектирования оптоволоконной сети, которую он сам решал вручную на C++ ещё студентом в 2018 году на хакатоне. Нужно соединить пункты распределения и вышки-терминалы кольцами и короткими ответвлениями в трёх городах Франции, Гренобле, Ницце и Париже, так, чтобы каждая вышка входила ровно в одно кольцо, а суммарная длина кабеля была минимальной (направление прокладки сегмента меняет его стоимость). Масштаб перебора огромен: только для Парижа простое распределение 532 вышек по 11 узлам даёт 11^532 вариантов, а более строгая нижняя оценка для одной ограниченной семьи решений (19 колец по 28 вышек), около 10^1223.
Автор сначала прогнал по одной 30-минутной паре без подсказок для каждой модели из более широкой выборки, а затем сосредоточился на паре Fable 5 / Sol и довёл её до трёх «чистых» парных прогонов на каждую модель, с обычным режимом и с включённым /goal.
Режим /goal выиграл 4 прогона из 6, но у ОБЕИХ моделей средний результат с /goal оказался хуже, чем без него: редкие крупные провалы перекрывали частые небольшие выигрыши. При этом Fable 5 оказался заметно сильнее Sol: в обычном режиме он в среднем опережал Sol на 1875 очков, с /goal, на 1984. Разброс результатов Fable 5 в обычном режиме уложился всего в 319 очков, тогда как у Sol, в 1958 очков, то есть Fable 5 показывал стабильно предсказуемый результат, а Sol, сильно разбросанный. Лучший единичный результат всего эксперимента, 31 934 очка, дал Fable 5 с включённым /goal, но самой надёжной («безопасной») конфигурацией автор называет Fable 5 без /goal.
Отдельная часть материала разбирает, что команда /goal в Claude Code и Codex CLI называется одинаково, но устроена принципиально по-разному. В Claude Code /goal реализован как привязанный к сессии хук Stop: после каждого хода основной модели отдельная небольшая модель-оценщик (по умолчанию Haiku) читает условие цели и переписку и выдаёт «да» или «нет» с обоснованием; «нет» запускает ещё один ход, «да» снимает цель. Эта модель-оценщик не может пользоваться инструментами или заглядывать в файлы, она судит только по тому, что видно в тексте диалога. В Codex CLI (автор изучил исходники версии 0.144.4) цель хранится как состояние треда: интерфейс сохраняет формулировку цели, а SQLite, её статус и бюджет; сама рабочая модель получает инструменты create_goal, get_goal и update_goal; если тред простаивает при активной цели, Codex сам вставляет продолжающий ход с формулировкой цели и «аудитом завершения». Вывод автора: оценщик Claude независим, но видит только переписку; модель Codex видит файлы и инструменты, но по сути сама оценивает свою же работу.
Автор объясняет, почему /goal может выигрывать большинство отдельных прогонов и всё же быть плохим выбором по умолчанию: в обычных задачах программирования прогресс, как правило, легко проверить (тест либо починен, либо нет), а в задаче оптимизации дополнительное время лишь усиливает то направление, которое агент уже выбрал, хорошее решение дорабатывается, а плохой солвер получает больше времени закрепиться в тупике. В его данных медиана с /goal сдвинулась немного в лучшую сторону, а худший исход стал заметно хуже.
Автор честно перечисляет ограничения: это одна неопубликованная задача, а не общий рейтинг агентов для программирования; только пара Fable 5 / Sol получила по три чистых парных прогона, у остальных моделей выборки, по одному прогону с разными промптами, версиями обёртки и лимитами времени; прогоны шли последовательно через подписочные сервисы, которые могли меняться со временем; контейнеры давали агентам доступ к 8 процессорным ядрам, хотя в метаданных задачи было заявлено одно ядро, что дало преимущество параллельным решениям Fable 5; при этом каждый засчитанный результат Fable 5 и Sol был валиден, поскольку обёртка требовала промежуточных контрольных точек и финальной проверки.
Весь код, промпты, таблицы результатов, исключённые прогоны, заметки о траекториях, скрипты анализа, генератор графиков и полный протокол доказательств выложены в открытый репозиторий CLIArena вместе с точными командами для воспроизведения, эксперимент можно перепроверить самостоятельно.
Ключевые факты
- Автор сравнил Claude Fable 5 (Claude Code) и GPT-5.6 Sol (Codex CLI) на неопубликованной NP-трудной задаче KIRO, проектировании оптоволоконной сети для Гренобля, Ниццы и Парижа, где только по Парижу число вариантов перебора оценивается в порядке 10^1223.
- По трём чистым парным прогонам каждой модели Fable 5 стабильно опережал Sol: в обычном режиме, в среднем на 1875 очков, с /goal, на 1984; разброс результатов Fable 5 (319 очков) оказался почти в шесть раз меньше, чем у Sol (1958 очков).
- Режим /goal выиграл 4 прогона из 6, но у обеих моделей ухудшил средний результат: редкие крупные провалы перекрывали частые небольшие выигрыши; лучший результат всего эксперимента (31 934 очка) дал Fable 5 с /goal, но самой надёжной конфигурацией остался Fable 5 без /goal.
- /goal у Claude Code и Codex CLI устроен по-разному: у Claude Code, независимый хук Stop с отдельной моделью-оценщиком (обычно Haiku), которая видит только текст переписки и не может смотреть файлы; у Codex CLI цель хранится в SQLite, а инструменты create_goal/get_goal/update_goal доступны самой рабочей модели, которая фактически оценивает саму себя.
- Весь код, промпты, результаты и скрипты анализа выложены в открытый репозиторий CLIArena, эксперимент воспроизводим, но автор сам отмечает искажающие факторы: 8 доступных ядер вместо заявленного одного и прогоны через подписочные сервисы, которые могли меняться со временем.
Почему это важно
Это редкий независимый и воспроизводимый бенчмарк агентных инструментов программирования на реально сложной, ранее нигде не публиковавшейся оптимизационной задаче. Он показывает не рекламный, а измеренный разрыв в качестве между Claude Fable 5 и GPT-5.6 Sol, а заодно разбирает популярную функцию «доводить дело до конца» (/goal): она не является бесплатным приростом производительности, а меняет саму траекторию поиска решения, и может выигрывать большинство отдельных раундов, но при этом ухудшать средний результат.
Кому это важно
Инженерам и исследователям, которые применяют ИИ-агентов (Claude Code, Codex CLI) для инженерных и оптимизационных задач; командам, выбирающим между Claude Code и Codex CLI для агентной разработки; авторам собственных бенчмарков ИИ-агентов, которым нужна методология честного парного сравнения с воспроизводимыми скриптами.
Как это применить
Не включать /goal бездумно на по-настоящему сложных и открытых оптимизационных задачах: команда меняет цикл управления и путь поиска, а не просто «пробует дольше», иногда это находит лучшее решение, иногда даёт плохой идее больше времени закрепиться. Если важнее предсказуемость, а не пиковый результат, стоит предпочесть обычный режим без /goal. Опубликованные автором скрипты и протокол доказательств в CLIArena можно взять как шаблон для запуска похожих парных бенчмарков на собственных задачах.
Можно ли доверять
Материал независимый, автор не связан ни с Anthropic, ни с OpenAI, это продолжение его более раннего разбора того же бенчмарка. Эксперимент воспроизводим: опубликованы код, промпты, скрипты анализа, идентификаторы прогонов и протокол доказательств. При этом выборка небольшая, по три чистых парных прогона на модель во флагманской паре, а у остальных моделей и вовсе по одному; сам автор честно перечисляет искажающие факторы (доступ к 8 ядрам вместо заявленного одного, возможный дрейф подписочных сервисов со временем). Это добросовестный, но узкий по масштабу бенчмарк, а не крупное исследование.
Риски и подводные камни
Малое число прогонов (по три на модель) означает, что результаты могут измениться при большей выборке. Контейнеры давали агентам 8 процессорных ядер вместо заявленного в метаданных одного, это системно благоприятствовало параллельным решениям Fable 5, и автор сам отмечает это как искажающий фактор. Прогоны шли последовательно через подписочные сервисы, которые могли меняться без предупреждения. Результаты специфичны для одной узкой неопубликованной оптимизационной задачи и не стоит обобщать их на программирование в целом. Наконец, скрытый риск самого /goal, редкие, но крупные провалы: включение функции по умолчанию на сложных задачах может незаметно ухудшать средний результат даже при том, что она выигрывает большинство отдельных раундов.
«Дело не в том, помогает /goal или вредит. Дело в том, что функция настойчивости может выигрывать большинство отдельных прогонов и при этом ухудшать наблюдаемый средний результат.»
— Чарльз Азам, автор бенчмарка