Журнал · Rit.work

CodeMidas строит задачи для программирующих агентов из одних исходников

CodeMidas превращает готовые функции из открытых репозиториев в проверяемые задачи для обучения программирующих агентов без истории изменений и готовых тестов.

Rit.work
Студия разработки
21 сентября 2026 г.3 мин чтения

Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.

Готовые функции из открытых репозиториев научились автоматически превращать в задачи для обучения программирующих агентов. В препринте CodeMidas, который не проходил рецензирование и содержит замеры самих авторов, после обучения доля решённых задач на DeepSWE выросла более чем вдвое. Такой подход позволяет расширять обучающий набор без привязки к задачам в трекере, коммитам и готовым тестам.

Как исходный код превращается в обучающую задачу

CodeMidas строит среды для обучения с подкреплением (RL), используя исходный код как единственный материал, специфичный для конкретной задачи. Обычные конвейеры начинают с описания ошибки, запроса на изменение, коммита, документации или существующего набора тестов. Поэтому они охватывают только ту функциональность, вокруг которой сохранились такие материалы.

Здесь агент сначала изучает структуру проекта, настройки сборки и публичные точки входа. Он ищет функции с наблюдаемым поведением: консольные команды, библиотечные функции и интерфейсы, состояние которых меняется после последовательности вызовов.

Выбранную реализацию удаляют, а остальной репозиторий превращают в стартовую среду. Агент получает описание требуемого поведения и проект с недостающей функцией, но сам решает, какие алгоритмы и внутренние вспомогательные части использовать. Исходная реализация остаётся отдельно как эталон.

Так CodeMidas собрал 5 545 задач из 3 185 репозиториев. Набор охватывает 23 языка и 15 технических областей, а медианная эталонная правка содержит 142 строки. Это не только короткие упражнения на отдельные функции: большинство задач затрагивает несколько файлов и требует разобраться в существующем проекте.

Почему одного эталонного решения недостаточно

Главная сложность — получить проверяющую программу, которая пропускает разные корректные реализации, но отклоняет решения с подходящим внешним видом и неверным поведением. CodeMidas выводит ожидаемые результаты из запуска исходной версии проекта, а затем строит скрытые тесты вокруг публичных интерфейсов.

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

Отдельный агент просматривает утверждения в тестах и удаляет требования, которых нет в постановке. Задачу отбрасывают, если тест зависит от закрытой части реализации и это нельзя заменить проверкой наблюдаемого поведения.

После подготовки CodeMidas запускает стартовый и эталонный варианты в свежих контейнерах. Первый должен стабильно проваливать проверку, второй — проходить её. Из окружения также удаляют собранные файлы, кэши и другие следы, по которым агент мог бы восстановить вырезанный код.

Последний фильтр использует реальные попытки решения. Один агент ищет утечки, другой сопоставляет написанный код, условие и вердикт тестов. Задачи с ошибочной проверкой, доступным эталоном или только успешными либо только неуспешными попытками не попадают в обучение. Это снижает риск закрепить случайный способ обойти тесты вместо нужного навыка.

Меняет ли CodeMidas планы команд

MiMo-V2.5 обучали алгоритмом GRPO, который сравнивает несколько попыток и усиливает решения с успешным результатом проверки. Вознаграждение было двоичным: программа либо прошла скрытые тесты, либо нет. Отдельная обученная модель-оценщик не использовалась.

После обучения модель улучшила результат на всех внешних бенчмарках. На ProgramBench прибавка составила 17 процентных пунктов по метрике почти решённых задач, а на Terminal-Bench v2.1 — 8,5 процентного пункта по доле полностью выполненных заданий. Улучшения также появились в ремонте репозиториев и переводе программ между языками.

Фильтрация оказалась не менее важна, чем объём. Отобранный набор из 3 000 задач обошёл неочищенный набор из 8 000 задач на SWE-bench Pro, DeepSWE и внутренней проверке CodeMidas Val. Для собственного конвейера это означает, что дополнительные репозитории не компенсируют слабые тесты, утечки эталона и нестабильное окружение.

Проверяли только MiMo-V2.5, сравнивая её исходную версию с контрольными точками после обучения при одинаковых настройках. Бенчмарки охватывали исправление ошибок, создание программ, перевод кода и работу в терминале, но результаты не показывают, что тот же прирост автоматически сохранится у другой базовой модели.

Работа меняет планы команд, которые собирают собственные данные для программирующего агента. Историю задач и коммитов больше не обязательно считать единственным масштабируемым источником: можно извлекать задания из уже реализованного поведения. Основные расходы при этом смещаются с ручного поиска примеров на запуск агентов, изоляцию проектов, построение тестов и многоступенчатую проверку качества.

Источники

Пауза в чтении

Похоже на вашу задачу?

Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.

Rit.work

Студия разработки

Собираем мобильные приложения и помогаем командам получать от AI реальную пользу. Основатель и команда, работаем удалённо — с клиентами в России и за рубежом.

Ко всем материалам
Понравилось? Обсудим вашу задачу