Китайская модель Coding просто взорвала рынок! В реальных тестах KAT-Coder-Pro V2. от Kuaishou закрыла настоящий баг за 1 минуту 20 секунд, вручную написала 1395 строк кода для создания Minecraft, и её способности к длинным проектам сравнимы с Opus 4.8 — больше не нужно быть няней для ИИ.Автор статьи, источник: Новознание
На практике ИИ для программирования уже дошёл до этого уровня?
Неважно, насколько сильно это рекламируют — лучше показать на практике. Далее мы сразу запустим KAT-Coder-Pro V2.5 в еще больше реальных сценариев, чтобы полностью разобраться в его возможностях.
Не будем тянуть — раскрываем секрет: эта AI-модель, встроенная в CC, — это KAT-Coder-Pro V2.5, выпущенная Kuaishou, флагманская агентная модель для программирования. Другие ИИ могут пока бороться за то, чтобы «дописать вам фрагмент кода», а эта решает задачу — «сделать весь проект за вас». Именно это и является финальной пропастью, стоящей перед всеми моделями программирования.
Первый вопрос: Собственноручно созданная версия Minecraft, сразу играбельная
Только что выполненный пенальти был разминкой, теперь добавим немного интенсивности для V2.5 и воссоздадим Minecraft в реальном времени.
Подсказки также содержат более 400 строк. Сожмите их, примерно так:
Одиночный HTML-файл, Three.js, от первого лица. 14 типов блоков, каждый со своими параметрами твердости, прозрачности и столкновения; базальт неразрушаем. Все текстуры должны быть сгенерированы программно как изображения 16×16 пикселей с помощью Canvas — никаких внешних текстур. Используйте шум с фиксированным сидом для генерации острова с холмами, побережьем, мелководьем и подземными жилами. Программно сгенерируйте дубовый лес, а также небольшой домик в лесу, в который можно войти (деревянный пол, бревенчатые столбы, стеклянные окна, крыша из круглых камней, кирпичный дымоход), и проложите от точки появления дорожку из круглых камней. При наведении курсора отображайте каркас, при удержании левой кнопки мыши — индикатор прогресса; при разрушении блока высвобождаются частицы осколков. Звуковые эффекты должны синтезироваться в реальном времени с помощью Web Audio.
Затем был создан играбельный мир «Minecraft». Нажмите «Войти в мир» — курсор мыши блокируется в окне. Под ногами — трава, над головой — голубое небо. По земле от ваших ног простирается дорожка из гравия, огибает дуб и ведет к маленькой хижине за деревом — деревянные стены, бревенчатые столбы, крыша из гравия и кирпичная труба, а по периметру стен — стеклянные окна. Далее подойдите к открытой площадке перед хижиной, удерживайте левую кнопку мыши — раздается звук «плюх», и блок травы разрушается. Из образовавшейся ямы выскакивают десяток зеленых кубиков, кувыркаясь вниз. Цвет осколков совпадает с цветом только что добытого блока. Затем переключитесь в панели инструментов на песок, дубовую древесину и камень — пора приступать к строительству. И приятным сюрпризом стало наблюдение за закатом, окрашивающим небо в яркие тона.
Второй вопрос: Симуляция солнечной системы с использованием одного «часов»
Еще один тест интерактивного функционала: пусть V2.5 создаст солнечную систему голыми руками. Чтобы проверить его возможности, мы установили крайне строгие ограничения:
Более 1000 строк подсказок, основные моменты следующие:
Один HTML-файл, чистый Canvas 2D, запрещено использовать Three.js. Все восемь планет и одиннадцать спутников должны использовать реальные элементы орбиты эпохи J2000 — большая полуось, эксцентриситет, наклонение, долгота восходящего узла, аргумент перигелия, средняя аномалия. Запрещено использовать angle += speed. Планеты и спутники должны решать уравнение Кеплера методом Ньютона и использовать общую переменную daysSinceJ2000. Вращение Венеры и Урана должно быть отрицательным. Тритон должен двигаться в обратном направлении с наклонением 157,3°. Кольца Сатурна и Урана должны отрисовываться в два прохода — спереди и сзади — чтобы планеты могли закрывать кольца. При высокой скорости спутники должны переключаться в режим траектории для предотвращения мерцания. При паузе вращение поверхности планет также должно останавливаться; при обратной перемотке — откатываться в обратном направлении. Поверхности всех планет должны отрисовываться программно: на Юпитере должен присутствовать Большое Красное Пятно, которое перемещается вместе с вращением через видимое полушарие; континенты Земли должны исчезать при выходе на обратную сторону и появляться снова с другой стороны. Дополнительно: восемь уровней скорости времени, два масштаба орбит, виртуальная камера с слежением, 700 фиксированных звезд с фиксированным семенем, пояс астероидов, пояс Койпера, адаптивная вёрстка, девять горячих клавиш.
С учетом таких сложных требований V2.5 продемонстрировал методичный инженерный подход. Он точно разбил весь проект на компоненты: от архитектурного проектирования и стратегии расчета орбит до глобальной системы двойных пропорций, генерации звездного фона, рисования главной звезды, многоуровневой визуализации планетных колец и координации сложной системы спутников. Все модули логично выстроены друг за другом, каждая деталь тщательно продумана. Не будем долго говорить — сразу покажем демонстрацию.
Откройте эту веб-страницу — в центре сегодняшняя дата, а восемь планет на экране находятся точно в тех позициях, где они находятся в реальности в данный момент. Это не просто изображение солнечной системы — это настоящая работающая солнечная система! Солнце расположено в центре, планеты размещены вокруг него. Между Марсом и Юпитером медленно вращается тонкое кольцо пыли — пояс астероидов. Все небесные тела, все спутники, каждое облако на поверхности планет — всё это приведено в движение одним и тем же симулированным временем. Когда вы нажимаете кнопку паузы, планеты останавливаются в своем орбитальном движении, спутники прекращают вращаться, Земля перестает вращаться вокруг своей оси. Нажмите на Сатурн — справа выскользнет панель с информацией. В маленьком предварительном окне в верхней части панели Сатурн медленно вращается вокруг своей оси, его кольца вращаются вместе с ним, и все взаимные перекрытия сохраняются без единой ошибки. Это уже не похоже на домашнее задание — это похоже на запущенный продукт.
Вопрос 3: Реальная проблема с складом, замкнутый цикл за 1 минуту 20 секунд
Затем мы снова поместили KAT-Coder-Pro V2.5 в реальный открытый баг. Результат оказался намного интереснее, чем просто тесты. Задача взята из humanize — реального открытого Python-библиотеки. В 2024 году в ней был реальный баг: naturaldelta(timedelta(hours=-5)) должна была вернуть «5 hours», но вместо этого возвращала «a day». Отрицательные пять часов были интерпретированы как целый день. Мы откатили репозиторий к коммиту, в котором баг ещё существовал, передали ему только issue и отпустили — без каких-либо подсказок. После поиска двух паттернов и чтения двух файлов он сразу дал диагноз: Python хранит отрицательные timedelta в дополнительном коде, поэтому timedelta(hours=-5) на самом деле представляет собой days=-1, seconds=68400. Исходный код применял abs() к каждому компоненту отдельно: -1 день превратился в 1 день, а 68400 секунд остались без изменений, в результате чего получилось «1 день + 19 часов». Этот анализ корневой причины полностью совпадает с диагнозом официального исправления — дополнительный код, несогласованность знаков компонентов, ошибка из-за применения abs() к каждому компоненту отдельно. Однако предложенное им решение отличается от официального: официальное исправление заключается в применении абсолютного значения ко всему timedelta целиком, тогда как он выбрал сначала преобразовать всё в общее количество секунд, а затем разбить обратно. Кстати, весь этот цикл проходил в Claude Code. А Claude Code — это как раз одна из сред, явно упомянутых в официальном Harness Scaling: mini-swe-agent, Claude Code, Codex, OpenClaw. Многократные испытания в разных фреймворках направлены на то, чтобы «при смене фреймворка не возникало проблем с адаптацией». Практические тесты показали, что он действительно полностью адаптировался — без каких-либо признаков «неприспособленности».
Вопрос 4: 20 минут 12 секунд — замена двигателя на летящем самолете
Последний вопрос — это не исправление ошибки, а внедрение целого набора новых функций в живую систему. Все сталкивались с этим: вы загружаете файл размером 1 ГБ, доходит до 92%, и соединение прерывается. Обновляете страницу — и всё начинается с 0%. Решение называется фрагментированная загрузка: разбейте файл на тысячу фрагментов, при обрыве загружайте только недостающие. На первый взгляд всё просто — разбейте, загрузите, соберите обратно. Но сложность — не в этих трёх шагах, а во всём том хаосе посередине:
Фрагменты приходят в неправильном порядке. Клиент переподключается и повторно отправляет данные, но сервер не может отличить, является ли это повторной попыткой или перезаписью. После перезагрузки сервера 700 фрагментов на диске становятся бездомными. Даже если все фрагменты придут, это не гарантирует, что данные переданы правильно.Он работал 20 минут 12 секунд. Решение заключалось в том, чтобы разделить диск на три «ящика»: опубликованные, метаданные прогресса и незавершенные фрагменты. Фрагменты всегда остаются в папке chunks/, физически недоступные для опубликованной области. Метаданные сначала записываются во временный файл, а затем атомарно переименовываются. Это необходимо, потому что процесс может аварийно завершиться в середине записи прогресса, оставив частичные, поврежденные данные. Сначала записывается полный файл, затем — одним шагом происходит переименование: либо все успешно, либо ничего не изменяется. После перезагрузки достаточно одного взгляда — прогресс мгновенно восстанавливается. Повторное фрагментирование, посимвольное сравнение. Ленивый подход: «если на этом месте уже есть фрагмент — считаем его дубликатом и пропускаем». А здесь — сравнение по одному байту: даже незначительное расхождение вызывает ошибку, исходные данные остаются нетронутыми. В итоге было предоставлено 8 файлов, около 1400 строк кода, пять новых API, 26 тестов на загрузку — все функции паузы, возобновления и восстановления после обновления браузера реализованы на стороне клиента. npm test → 33 теста, 0 сбоев. При этом ни один из пяти старых интерфейсов не был нарушен. Ключ к этой задаче — в этих двадцати минутах, когда он ни разу не забыл ни одного из длинных «а что, если…?». Реальная программная инженерия — девяносто процентов усилий уходит именно на эти «а что, если…?».
Инженерные возможности агента сопоставимы с Opus 4.8
Вернёмся к KAT-Coder-Pro V2.5 и его результатам в реальных рейтингах. На PinchBench, оценивающем способность агентных инструментов, KAT-Coder-Pro V2.5 набрал 94,2 балла, обойдя Opus 4.8. На SWE-Bench Pro — признанной «самой сложной» оценкой программной инженерии на уровне репозиториев — он получил 65,2 балла, немного уступив Opus 4.8 (69,2 балла), но значительно опередив ряд китайских моделей. Кроме того, на внутреннем наборе реальных инженерных тестов KAT Code Bench он набрал 53,1 балла, также войдя во второй эшелон; на бизнес-ориентированном агентном тестовом наборе KAT Claw Bench он получил 85,5 балла, плотно конкурируя с лучшими закрытыми и открытыми аналогами. В контексте всей гонки моделей для программирования — это реальное попадание в первый эшелон. После ознакомления с реальной мощью KAT-Coder-Pro V2.5 пришло время разобраться в его инженерной реализации.
Разбор ключевых технологий
На этот раз команда KwaiKAT провела системное обновление, сосредоточившись на «более длинных цепочках задач и более сложных бизнес-рабочих процессах». Конкретно, KAT-Coder-Pro V2.5 достиг всестороннего прорыва по трем ключевым направлениям:
Долгосрочные инженерные возможности, универсальные агентные способности и масштабная система усиления обучения агентов, поддерживающая всё это.«Высокий балл в одиночном файле» и «реальная работа в проекте» — это две разные вещи
Необходимо осознать реальность: просить ИИ «дописать функцию» и просить ИИ «завершить полноценный инженерный проект» — это два совершенно разных уровня способностей. Первое сегодня модели освоили без труда. Но настоящая программная инженерия всегда выглядит иначе. Самые частые ошибки моделей при выполнении длительных задач в репозиториях — это неправильное определение местоположения между файлами, игнорирование стандартов проекта и сдача кода без прохождения тестов. И настоящим узким местом часто оказывается нечто контринтуитивное: модель тормозит не из-за того, сколько кода она прочитала, а из-за того, сколько реальных проектов она полностью запустила и проверила. Проблема в том, что массовое создание работоспособных и проверяемых сред репозиториев чрезвычайно сложно — в отрасли успех в прямом создании сред долгое время составлял около 16,5%. Другими словами, если удаётся успешно настроить хотя бы один репозиторий из шести — это уже неплохо. Решение KwaiKAT — AutoBuilder, который превращает модель в «инженера среды»: анализирует репозиторий, генерирует конфигурацию и проверяет в изолированной песочнице, действительно ли тесты выполняются; если нет — автоматически итеративно исправляет. Эффект мгновенный: успешность создания сред выросла с 16,5% до 57,2%, накоплено более 100 000 работоспособных и проверяемых сред, охватывающих 12 языков программирования. Типы изменений в этих средах включают исправление ошибок, дополнение функций, обеспечение совместимости интерфейсов, взаимодействие между модулями и регрессионное исправление — практически все сценарии, с которыми сталкиваются в реальной разработке. Именно это и есть «производственная линия» V2.5. В обработке данных есть ещё один хитрый приём. Отрасль привыкла «оставлять правильное, выбрасывать неправильное», но KwaiKAT наоборот ищет золото в неудачах — многие провалы отличаются лишь отсутствием одного решающего шага: направление верное, локализация точная, не хватает лишь одного ключевого суждения. Команда отфильтровала такие образцы, повторно запустила их с целевыми подсказками — около 20% из них превратились в воспроизводимые, качественные обучающие данные. Таким образом, модель учится не только тому, «как делать правильно», но и тому, что гораздо ценнее: «как исправить ошибку».
Универсальный агент: от «умеет вызывать инструменты» до «способен справляться с бизнес-задачами»
Написание кода — это только половина агентных возможностей. Другая половина — управление реальными бизнес-процессами. Существующие оценки вызова инструментов в основном основаны на атомарных задачах — проверка погоды, бронирование билета, примерно пять циклов и всё готово. Но реальные бизнес-процессы — это другой масштаб; например:
Прочитайте тенденции за неделю по нескольким платформам, отфильтруйте пункты, связанные с индустрией коротких видео, выберите пять самых популярных по каждой платформе, затем составьте краткий отчет с разделами и ограничением по количеству символов, упорядоченный по дате в обратном порядке, без вымышленных данных.Такая работа требует более десяти циклов взаимодействия, сопровождается множеством скрытых форматов и ограничений на согласованность, и при разрыве хотя бы одного звена вся задача рушится. Как и в длинных инженерных проектах, этот навык оттачивается в «цеху». С кодовой стороны — AutoBuilder, с бизнес-стороны — KwaiClawEnv; три уровня работают в замкнутом цикле:
- Слой Service динамически расширяет пул и преобразует большое количество навыков сообщества в развертываемые сервисы;
- Уровень Task использует реальные бизнес-задачи в качестве семян для порождения множества вариантов задач;
- Уровень Eval использует двойную фильтрацию «жесткие правила + оценка моделью», оставляя только выполнимые, проверяемые и естественные траектории.
В сгенерированных обучающих данных средняя траектория включает 15 вызовов инструментов, а самая длинная превышает 100 шагов, охватывая анализ данных, интеграцию между системами, пакетную обработку документов и генерацию отчетов. Именно этим занимаются тысячи инженеров и сотрудников бизнес-подразделений Kuaishou каждый день.
Масштабное обучение с подкреплением, позволяющее ИИ самостоятельно научиться «как делать»
Супервизированная тонкая настройка позволяет модели копировать примеры, но она теряется при столкновении с неизвестными ошибками и неожиданными обратными связями. На самом деле, именно крупномасштабное обучение с подкреплением учит модель исследовать, исправлять ошибки и проверять. Команда KwaiKAT сосредоточила свои усилия на следующих трех аспектах:
Первое — бесконечное масштабирование каркаса (Harness Scaling).
Позвольте модели проходить практические испытания в различных фреймворках: mini-swe-agent, Claude Code, Codex, OpenClaw. Эти фреймворки значительно различаются по протоколам вызовов, управлению контекстом и потоку управления, заставляя модель развивать навыки именно в «решении задач», чтобы не терять эффективность при смене фреймворка.
Во-вторых, долгосрочное распределение кредитов.
В сотнях взаимодействий, какой именно шаг привел к хорошему результату? Команда использует асимметричный PPO: во время работы модель видит только информацию из реальной среды, а Critic, оценивающий обучение, может дополнительно использовать «божественный взгляд» — чтобы точно начислить награды или штрафы за конкретный шаг, основываясь на том, прошел ли финальный тест и насколько качественен патч, избегая ситуации «одна ошибка — и всё провалено».
Третье — трехуровневая награда.
Верхний уровень: реальные результаты блокировки для предотвращения манипуляций с тестами; средний уровень: стандартизация вызовов инструментов, очистка временных файлов и других инженерных практик; нижний уровень: предоставление положительной обратной связи за ценные неудачи, такие как «точное позиционирование, частично протестировано», чтобы поддержать исследовательскую мотивацию модели. Стоит отметить, что команда изначально считала, что проблема с низким значением вознаграждения связана с алгоритмом, но после проверки выяснилось, что виновником была сама среда обучения — в ранних этапах примерно в 16% траекторий хотя бы одна неудача возникала из-за песочницы, а не модели. После тщательной доработки инфраструктуры уровень ошибок обратной связи от песочницы был снижен ниже 2%, а частота сбоев при обучении снизилась примерно на порядок. Именно эти незаметные, но фундаментальные работы и обеспечили стабильное обучение в дальнейшем.
Модель, вмещающая пять способностей
Долгосрочные проекты, универсальные агентные системы, терминалы, эстетика фронтенда, универсальные знания — для каждого из этих пяти направлений KwaiKAT обучил отдельного эксперта. Сложность заключается в том, чтобы объединить их в одну модель, избегая при этом эффекта «нажал на одну сторону качелей — другая поднялась». Решение команды — MOPD (множественное онлайн-обучение с учителями): ученик сам решает задачи, и в зависимости от области задачи к нему подключается соответствующий эксперт; способности объединяются в функциональном пространстве, а не путем жесткого слияния параметров.
KAT-Coder-Pro V2.5 объединяет возможности пяти экспертов — не нужно переключаться при развертывании: пишите код, запускайте процессы, создавайте страницы — всё в одном.Предыдущая версия, высоко оцененная за свои передовые возможности дизайна, полностью сохранила эти качества в этой версии, что подтверждает эту систему: новые возможности значительно расширены, а старые не потеряны ни на йоту. Такое безоговорочное переосмысление напрямую привело к самой убедительной отчетности.
Во второй половине кодинга решающее значение имеет «инженерия»
KAT-Coder-Pro V2.5 основан на четком понимании: сегодня ограничением для усиления программных моделей уже не является «размер модели», а «насколько прочна окружающая инфраструктура». Поэтому сборка среды, синтез траекторий, стабильность RL и интеграция способностей были рассмотрены как равнозначные системные задачи. В результате получен четкий профиль способностей — топовый использование агентных инструментов и самые близкие к мировым передовым достижениям инженерные возможности на уровне репозиториев. Для разработчиков это означает, что теперь можно смело передавать на выполнение целую задачу или весь рабочий процесс, не будучи вынужденными постоянно сопровождать ИИ. Сейчас KAT-Coder-Pro V2.5 полностью запущен, и вы можете сразу приступить к использованию. Чтобы начать: напрямую вызывайте API через StreamLake.com (ID модели: kat-coder-pro-v2.5).
