Китайська модель Coding зламала всі рекорди! У реальному тесті KAT-Coder-Pro V2. від Kuaishou закрив справжній баг за 1 хвилину 20 секунд, вручну написав 1395 рядків коду для гри Minecraft — довготривала інженерна здатність на рівні Opus 4.8. Більше не потрібно бути AI-нянею.Автор статті, джерело: NewZeal
Чи дійсно AI для програмування досяг такого рівня за одну пробу?
Незалежно від того, наскільки сильно це розпишуть, краще показати це на практиці. Далі ми безпосередньо запустимо KAT-Coder-Pro V2.5 у більшій кількості реальних сценаріїв, щоб повністю перевірити його можливості.
Не будемо тримати в таємниці — розкриваємо: ця AI-модель, вбудована в CC, — це KAT-Coder-Pro V2.5, випущена Kuaishou, флагманська агентна модель для кодування. Інші AI ще борються за те, щоб «дописати вам шматок коду», а ця — має на меті «зробити цілий проект за вас». Саме це й є остаточна бар’єрна лінія, що розділяє всі моделі кодування.
Перше питання: Власноруч створений Minecraft, відразу грайний
Попередній пенальті-демо був лише розминкою, зараз додамо трохи інтенсивності до V2.5 — відтворимо «Minecraft» у прямому ефірі.
Підказки також мають понад 400 рядків. Скоротіть їх, приблизно так:
Один HTML-файл, Three.js, перший від першої особи. 14 типів блоків, кожен з власною твердістю, прозорістю та властивостями колізії; базальт незламний. Усі текстури повинні бути згенеровані програмно як зображення 16×16 пікселів на Canvas — не використовувати зовнішні текстури. Використовуйте шум із фіксованим сідом для генерації острова з пагорбами, узбережжям, мілководдям та підземними жилами. Програмно згенеруйте дубовий ліс, а також невелику хатину серед лісу, яку можна увійти (дерев’яний підлога, колони з колод, скляні вікна, дах з круглих каменів, цегляна труба), і від місця народження прокладіть стежку з круглих каменів. При наведенні виводьте каркас, при утримуванні лівої кнопки миші — прогрес-бар; після руйнування випадають частинки-оскодки. Звуки генеруйте на лету за допомогою Web Audio.
Невдовзі ви створили ігровий світ «Minecraft». Натисніть «Увійти у світ» — курсор миші блокується в межах екрана. Під ногами — трава, над головою — блакитне небо, а з-під ваших ніг простягається стежка з обробленого каменю, обходить дуб і веде до невеликої хати за ним — з дошок стіни, з колод — опори, з каменю — дах, з червоної цегли — труба, а по всіх стінах вставлені скляні вікна. Далі підійдіть до порожньої ділянки перед хатою, тривалий тиск лівої клавіші — «поп» — і трав’яний блок розбивається. Десяток зелених малих кубиків виринають з ями, кулькаючи вниз. Колір уламків збігається з кольором самого блоку, який ви щойно видалили. Потім переключайтеся між інструментами, вибираючи пісок, дубове дерево та камінь — настав час розгорнути свої творчі здібності й побудувати будинок. Здивуванням стає те, що в цьому маленькому світі ми спостерігали за заходом сонця, що пофарбував усе небо.
Друге питання: симуляція сонячної системи зі спільним «годинником»
Ще один тест інтерактивного характеру: нехай V2.5 виготовить сонячну систему голими руками. Щоб з’ясувати межі його можливостей, ми встановили надзвичайно жорсткі обмеження:
1000+ рядків підказок, основні моменти такі:
Один HTML, чистий Canvas 2D, Three.js заборонено. Всі вісім планет та 11 супутників — всі реальні орбітальні елементи за епоху J2000: велика піввісь, ексцентриситет, нахил, довгота висхідного вузла, аргумент періцентра, середня аномалія. Категорично заборонено angle += speed. Планети та супутники повинні вирішувати рівняння Кеплера за допомогою методу Ньютона, використовуючи спільний daysSinceJ2000. Обертання Венери та Урана має бути негативним. Тритон має обертатися у зворотному напрямку з нахилом 157,3°. Кільця Сатурна та Урана мають малюватися у два етапи — спочатку передні, потім задні, щоб планети закривали кільця. При високій швидкості супутники мають переходити у режим траєкторії для уникнення мерехтіння. При паузі обертання поверхні планет також має зупинятися; при зворотному відтворенні — рухатися назад. Поверхні планет мають малюватися програмно: на Юпітері має бути Велика Червона Пляма, яка проходить через видиму півкулю з обертанням; континенти Землі мають зникати при переході на задню сторону та з’являтися з іншого боку. Додатково: вісім рівнів швидкості часу, два масштаби орбіт, віртуальна камера з відстеженням, 700 фіксованих зірок з однією насінняю, пояс астероїдів, пояс Койпера, адаптивний макет, дев’ять клавіш-скорочень.
Зіткнувшись із такою складною вимогою, V2.5 продемонстрував книжковий підхід до інженерії. Він точно розбив весь проект: від проектування архітектури та стратегій розрахунку орбіт, до загальної системи подвійних пропорцій, генерації зоряного тла, малювання головної зірки, шаруваного відтворення планетних кілець та координації складної системи супутників. Усі модулі логічно побудовані один за одним, з бездоганним зв’язком. Не будемо багато говорити — негайно перейдемо до демонстрації.
Відкрийте цю веб-сторінку — посередині сьогоднішня дата, а вісім планет на екрані знаходяться саме в тих позиціях, де вони реальне знаходяться зараз. Це не просто зображення сонячної системи — це справжня діюча сонячна система! Сонце розташоване посередині, а планети розташовані одна за одною. Між Марсом і Юпітером — тонке кільце пилу, що повільно обертається — пояс астероїдів. Усі небесні тіла, усі супутники, кожна хмара на поверхні планет — все це приводиться в рух одним і тим же симуляційним часом. Коли ви натискаєте паузу, планети зупиняють обертання навколо Сонця, супутники — навколо своїх планет, а Земля — навколо своєї осі. Натисніть на Сатурн — праворуч з’являється панель інформації. У маленькому попередньому вікні на вершині панелі Сатурн повільно обертається, його кільця обертаються разом із ним, а всі ефекти перекриття відображаються без помилок. Це вже не схоже на домашнє завдання — це звучить як готовий продукт.
Третє питання: реальна проблема зі складом, замкнений цикл за 1 хвилину 20 секунд
Потім ми знову вкинули KAT-Coder-Pro V2.5 у реальний відкритий баг. Результат був набагато захопливішим, ніж тестові бали. Завдання походило з humanize — реального відкритого Python-бібліотеки. У 2024 році в ній був реальний баг: naturaldelta(timedelta(hours=-5)) мав повернути «5 hours», але вона видала «a day». Від’ємні 5 годин були перетворені на цілий день. Ми відкотили репозиторій до коміту, коли баг ще існував, передали йому лише issue та відпустили — жодних підказок протягом усього процесу. Після пошуку 2 шаблонів та прочитання 2 файлів вона одразу надала діагноз: 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. Багатофреймворкова практика має на меті «не мати проблем із адаптацією при зміні фреймворку». На практиці вона справді досягла ідеальної адаптації — повністю уникнувши «проблем із адаптацією».
Четверте питання: 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, який оцінює навчання, може додатково використовувати «божественний погляд» — чи пройдено фінальне тестування, яка якість патчу — це дозволяє точно прив’язати нагороди та покарання до конкретного кроку, уникнувши «одна помилка — і все зіпсовано».
Третє — три рівні нагород.
На верхньому рівні — реальні результати тестування з блокуванням шляхів для маніпуляцій і підлоги; на середньому рівні — стандартизація виклику інструментів, очищення тимчасових файлів та інші інженерні звички; на нижньому рівні — надання позитивної зворотного зв’язку за цінні невдачі, такі як «точне визначення місця, частково протестоване», щоб зберегти дослідницьку зацікавленість моделі. Варто зазначити, що спочатку команда вважала, що проблема з низьким значенням reward полягає в алгоритмі, але після перевірки виявилося, що винуватцем було саме середовище навчання — у ранніх приблизно 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).
