Зачем мучить агентов пиксельной графикой?
В 2026 году рынок AI-агентов для кодирования напоминает джунгли: каждый день новый инструмент обещает заменить целую команду разработчиков. Но стандартные бенчмарки вроде HumanEval или SWE-bench меряют решение изолированных функций и багфиксов. А что если дать агенту реальную наукоемкую задачу? Такую, где нужно не просто написать код, а понять алгоритм из научной статьи, реализовать его с нуля и получить визуальный результат.
Я выбрал Depixelizing Pixel Art — алгоритм из SIGGRAPH 2011, который превращает растровую пиксельную графику в векторные кривые Безье. Это идеальный тест: он требует работы с изображениями, поиска контуров, аппроксимации кривыми, обработки углов. Ни один агент не видел эту задачу в тренировочных данных (ну, может, краем глаза). Зато после теста сразу видно, кто умеет думать, а кто просто генерирует красивый код, который не работает.
Спойлер: результаты сильно разошлись. Один агент справился за 3 итерации, другой — за 7, третий — сломался на первой же попытке. И да, самый дорогой агент не всегда лучший.
Суть задачи: превращаем пиксели в кривые
Классическая статья Йоханнеса Копфа и Дэниела Коэна-Ора (SIGGRAPH 2011) описывает метод, который берет изображение с четкими пиксельными границами и создает гладкие векторные контуры. Алгоритм состоит из нескольких шагов:
- Поиск связных компонентов одного цвета (каждый пиксель — узел графа).
- Построение скелета области через морфологическую скелетизацию.
- Аппроксимация контура кривыми Безье с учетом углов и изгибов.
- Рендеринг результата с антиалиасингом.
Звучит как типичная задачка для курсовой по Computer Vision. Но реализовать это с нуля — тот еще квест. Нужно не только написать корректный код, но и правильно обработать краевые случаи: узкие перешейки, шум, цвета с небольшими вариациями.
Я подготовил фиксированный промпт (см. ниже) и запускал его для каждого агента в одинаковых условиях: Python 3.12, Pillow, NumPy, SciPy, OpenCV. Измерял время выполнения и визуальное качество (PSNR между оригиналом и реконструкцией). В качестве тестового изображения — классический спрайт из игры 8-битной эры (16×16 пикселей).
Промпт, который я скормил агентам
Вот точный промпт без изменений:
"""
Твоя задача — реализовать алгоритм Depixelizing Pixel Art из статьи Kopf & Cohen-Or, SIGGRAPH 2011.
Вход: PNG-файл с пиксельной графикой (путь к файлу)
Выход: изображение того же размера, где каждый пиксель заменен векторным контуром (рендеринг в растр).
Шаги алгоритма:
1. Загрузить изображение, выделить все связные области одного цвета (4-связность).
2. Для каждой области построить скелет (thin skeleton) с помощью morphological thinning.
3. На скелете найти точки ветвления и концевые точки — они станут узлами кривых.
4. Аппроксимировать каждый сегмент между узлами кубической кривой Безье.
5. Рендерить кривые с антиалиасингом на белом фоне.
Ограничения:
- Не используй готовые реализации depixelizing (нет таких в PyPI).
- Используй только стандартные библиотеки: Pillow, numpy, scipy, opencv-python.
- Код должен быть законченным скриптом, который принимает путь к файлу как аргумент командной строки.
- Вывод — сохранение результата в файл result.png.
- Обработай изображения размером до 256x256.
Пожалуйста, сначала объясни свой план, затем напиши код. Если возникают проблемы — покажи промежуточные результаты (скелет, сегментацию).
"""
Я не менял ни слова. Агенты видели этот промпт и должны были генерировать код самостоятельно.
Участники: кто вышел на ринг
| Агент | Версия/Модель | Контекстное окно | Стоимость за вызов |
|---|---|---|---|
| Claude Codex | Claude 4.7 Sonnet | 200K токенов | $0.015/1K токенов |
| Cursor | GPT-5 Turbo | 128K токенов | $0.02/1K токенов |
| DeepAgents CLI | DeepSeek-V4 | 256K токенов | Бесплатно (open-source) |
| Hermes Agent | Hermes 3.1 70B | 32K токенов | $0.004/1K токенов |
| GitHub Copilot Workspace | GPT-5 + Claude 4 гибрид | 150K токенов | $10/мес (подписка) |
Все агенты работали в режиме автономного цикла: одна итерация = один ответ (код или фикс). Я давал минимальные указания при ошибках компиляции или если результат был откровенно плохим. Максимум — 10 итераций на агента.
Результаты: таблица позора и славы
| Агент | Итераций | Время (сек) | PSNR (dB) | Субъективное качество | Ошибки |
|---|---|---|---|---|---|
| Claude Codex | 3 | 47 | 28.3 | Отличное — гладкие кривые, нет артефактов | Нет |
| Cursor | 5 | 83 | 25.1 | Хорошо, но видны ступеньки на диагоналях | Небольшие |
| DeepAgents CLI | 7 | 124 | 24.8 | Среднее — скелет с разрывами, углы сглажены | 3 ошибки компиляции |
| Hermes Agent | 10 (лимит) | 210 | 18.2 | Плохо — пиксельные блоки, кривые не гладкие | Множественные |
| Copilot Workspace | 6 | 102 | 23.5 | Удовлетворительно — некоторые контуры потеряны | 1 критическая (неправильный порядок кривых) |
Важный нюанс: я оценивал PSNR между оригинальным пиксельным изображением (16×16) и реконструкцией того же разрешения. Это не идеальная метрика для векторной графики, но она показывает, насколько хорошо агент сохранил структуру.
Почему Claude Codex выиграл, а Hermes провалился?
Давайте разберемся. Claude Codex не просто написал код — он сразу понял алгоритм. Его первая итерация содержала полный скелет решения с правильным выделением связных компонент и скелетизацией через scipy.ndimage.binary_hit_or_miss. На второй итерации он добавил аппроксимацию кривыми Безье с помощью scipy.interpolate. Третья — финальный рендеринг и устранение мелких багов. Тактика: объяснить план, написать код, протестировать на синтетическом примере.
Cursor (GPT-5 Turbo) показал себя хорошо, но не идеально. Он использовал OpenCV для поиска контуров (cv2.findContours), что дало ступеньки на диагоналях — алгоритм не умеет сглаживать кривые на пиксельной решетке, если не добавить дополнительный шаг. Потребовалось 5 итераций, чтобы Cursor догадался применить фильтр Гаусса перед аппроксимацией.
DeepAgents CLI (DeepSeek-V4) — бесплатный open-source агент, который недавно сравнивали с Claude Code на Terminal Bench. Здесь он показал себя достойно, но трижды выдавал синтаксические ошибки (забывал импорты, путал имена переменных). Видимо, контекстное окно 256K токенов не помогло: агент «забывал» детали задачи после генерации большого блока кода.
Hermes Agent (Hermes 3.1 70B) — разочарование. Его контекст всего 32K токенов, и он не смог удержать весь алгоритм в памяти. Первая версия кода просто рисовала черные линии по границам пикселей — никакого скелета, никаких кривых. На последующих итерациях он пытался улучшить, но каждый раз ломал предыдущую логику. Та же проблема заметна и в обзоре пяти AI-инструментов 2026 — Hermes умеет генерировать код, но не удерживает сложную структуру.
Copilot Workspace — гибрид, но гибридизация не помогла. Он смешал подходы: сначала скелетизация через scikit-image, потом аппроксимация через собственный алгоритм. Результат получился средним: контуры плавные, но некоторые тонкие детали (1–2 пикселя) исчезли.
Типичные ошибки, которые делают все агенты (кроме одного)
- Игнорирование углов. Агенты аппроксимируют всё одной кривой, из-за чего острые углы становятся скругленными. Нужно детектировать углы по изменению направления скелета.
- Пересечение кривых. При рендеринге соседние кривые накладываются — результат выглядит грязным. Claude Codex единственный, кто использовал маску для каждого цвета отдельно.
- Неправильная обработка отверстий. Пиксельные «дырки» (например, глаз персонажа) обрабатываются как отдельные области, но их контуры должны быть вложенными. Только Cursor догадался проверить связность на уровне графа.
- Слишком много пиксельных шумов. Если исходное изображение неидеальное (сглаженные края), алгоритмы дают сбой. Ни один агент не добавил предварительную бинаризацию.
Что вынести из этого бенчмарка?
Во-первых, размер контекста — не главное. Hermes с 32K проиграл, но DeepAgents с 256K тоже не победил. Ключевой фактор — способность агента планировать и итеративно улучшать. Claude Codex делает это лучше всех благодаря встроенному циклу «думаю → пишу → проверяю».
Во-вторых, не доверяйте готовым библиотечным функциям. Cursor использовал cv2.findContours, но эта функция не предназначена для пиксельной графики — она ищет границы по градиенту, а не по связности. Агент не понял, что алгоритм требует морфологической скелетизации.
В-третьих, бесплатные агенты имеют право на жизнь, но для сложных задач придется потратить больше времени на отладку. DeepAgents CLI справился, но потратил 7 итераций и 2 минуты. Если ваш проект не критичен по времени — это вариант. Если каждая минута простоя стоит денег — лучше заплатить за Claude Codex.
Кстати, интересное явление: агенты, которые прошли AgentPuzzles.com (арену, где агенты пишут задачи друг другу), показывают более стабильные результаты. Claude Codex занимает там топ-3, а Hermes — далеко внизу. Это намекает, что способность решать чужие криптозадачи коррелирует с умением реализовывать научные алгоритмы.
Так кого выбрать?
Для сложной наукоемкой задачи — Claude Codex вне конкуренции. Да, он дороже остальных (0.015$ / 1K токенов против 0.004$ у Hermes), но вы заплатите за меньшее количество итераций и финальное качество. Если бюджет ограничен — попробуйте Cursor: он даст приемлемый результат за умеренные деньги.
Но есть неочевидный совет: не гонитесь за самым мощным агентом «в лоб». Иногда лучше взять специализированный инструмент. Например, для обработки изображений можно использовать SAM 3 для сегментации, а потом скормить результат агенту для построения кривых. Комбинация двух простых AI-решений может победить одного монстра.
И напоследок: не верьте рекламным метрикам. Единственный честный бенчмарк — это ваша конкретная задача. Прогоните агентов на своем датасете, как я это сделал с пиксельным спрайтом.
FAQ по бенчмарку
Какой AI-агент показал лучший результат?
Claude Codex (Claude 4.7 Sonnet) — справился за 3 итерации, достиг PSNR 28.3 dB, без ошибок. Второе место — Cursor (GPT-5 Turbo) с 5 итерациями и PSNR 25.1 dB.
Сложно ли реализовать Depixelizing Pixel Art?
Да, задача требует понимания связных компонент, морфологической скелетизации и аппроксимации кривыми Безье. Без глубоких знаний компьютерного зрения агенты часто допускают ошибки.
Какой агент самый дешевый для подобных задач?
DeepAgents CLI — бесплатный open-source, но требует больше итераций. Hermes Agent дешевле Claude, но качество сильно ниже. Оптимальный баланс цена/качество — Cursor.