SkillForge: агенты сами придумывают себе задачи, чтобы выучить код проекта заранее

ИИ-агенты на основе больших языковых моделей уже неплохо справляются с автоматическим устранением проблем в коде в целом, но часто спотыкаются, когда дело доходит до конкретного репозитория, потому что им не хватает знаний, специфичных именно для этого проекта. Существующие подходы к самообучению агентов пытаются получить такие знания либо из истории репозитория, либо из траекторий исправлений, собранных прямо во время работы над задачами. У обоих путей есть цена: первый работает только там, где такой истории достаточно, второй требует ощутимых затрат на перебор вариантов при решении каждой отдельной задачи.
Авторы предлагают SkillForge, фреймворк самодистилляции, в котором знания о специфике проекта агент получает заранее, ещё до того, как столкнётся с реальными задачами. Вместо того чтобы ждать, пока настоящие проблемы обнажат пробелы в знаниях о проекте, SkillForge сам создаёт себе задачи, специфичные для конкретного репозитория: он берёт ключевые функции проекта, уже покрытые тестами, и заново их реализует, так рождаются синтетические задачи, придуманные самим агентом.
Решая эти синтетические задачи, SkillForge извлекает из процесса переиспользуемые знания о специфике проекта и превращает их в навыки, привязанные к конкретным сущностям репозитория, то есть к конкретным функциям, классам или другим элементам кода. Эти навыки сохраняются и связываются с соответствующими частями кодовой базы, чтобы агент мог опираться на них позже, уже при решении настоящих задач.
В экспериментах с открытыми и закрытыми моделями SkillForge стабильно улучшал качество решения задач по сравнению с сильными базовыми подходами. Авторы делают вывод: если дать агенту возможность заранее, проактивно накопить знания о проекте, ещё до встречи с реальными задачами, это существенно улучшает итоговое качество автоматического решения проблем в коде.
Ключевые факты
- Проблема: ИИ-агенты неплохо решают типовые задачи по коду, но у конкретного репозитория им не хватает специфических для проекта знаний, а получить их сегодня можно либо из истории репозитория, если она достаточно богата, либо ценой дорогого перебора вариантов прямо во время решения каждой задачи.
- Решение, SkillForge: агент сам создаёт себе тренировочные задачи, заново реализуя ключевые функции проекта, уже покрытые тестами, так знания о проекте накапливаются заранее, а не по ходу столкновения с реальными проблемами.
- Из решения этих синтетических задач фреймворк извлекает переиспользуемые навыки и привязывает их к конкретным сущностям репозитория, функциям, классам и другим элементам кода, чтобы агент мог применить их позже.
- В экспериментах на открытых и закрытых моделях SkillForge стабильно превзошёл сильные базовые подходы к решению задач по коду репозитория.
- Вывод авторов: проактивное накопление знаний о проекте до встречи с реальными задачами существенно повышает итоговое качество их решения.
Почему это важно
ИИ-агенты на базе языковых моделей уже неплохо решают типовые задачи по автоматическому устранению проблем в коде, но реальное узкое место, не общий навык программирования, а нехватка знаний о конкретном проекте: особенностях его архитектуры, соглашениях, внутренних API. До SkillForge такие знания добывались либо из истории репозитория, что работает только там, где эта история достаточно богата, либо через дорогостоящий перебор вариантов прямо во время решения каждой реальной задачи. SkillForge предлагает третий путь: агент сам, заранее, создаёт себе тренировочные задачи прямо из репозитория, заново реализуя ключевые функции, уже покрытые тестами, и накапливает знания о проекте ещё до того, как столкнётся с настоящей проблемой.
Кому это важно
В первую очередь, тем, кто разрабатывает или встраивает ИИ-агентов для работы с конкретной, часто крупной или устоявшейся кодовой базой: командам, поддерживающим внутренних агентов для собственных репозиториев, и исследователям, которые занимаются самообучением и непрерывным дообучением агентов под конкретный проект, а не только общими бенчмарками программирования.
Как это применить
В доступном тексте не сказано, станут ли код, модели или данные SkillForge доступны публично, поэтому судить о готовом инструменте для установки рано. Но сам подход описан как воспроизводимая схема: перед тем как выпускать агента на реальные задачи в конкретном репозитории, можно провести отдельный подготовительный этап, прогнать агента через синтетические задачи, собранные из уже покрытых тестами функций проекта, и сохранить извлечённые из этого навыки, привязанные к элементам кода, чтобы агент опирался на них при работе с настоящими проблемами.
Можно ли доверять
Авторы говорят об «обширных экспериментах» на открытых и закрытых моделях и о стабильном приросте по сравнению с сильными базовыми подходами, но в доступном тексте нет ни конкретных цифр прироста, ни названий использованных моделей, бенчмарков или базовых методов, с которыми сравнивали SkillForge. Проверить эти результаты по имеющемуся материалу нельзя, нужен полный текст работы.
Риски и подводные камни
Сам механизм подхода подсказывает и его ограничение: синтетические задачи рождаются из уже покрытых тестами функций, то есть из того, что в проекте и так хорошо описано и проверено, открытым остаётся вопрос, насколько такая тренировка переносится на настоящие, ранее не встречавшиеся проблемы, которые как раз не покрыты существующими тестами. Подход по построению также зависит от качества и полноты тестового покрытия репозитория: чем меньше в проекте протестированных ключевых функций, тем меньше материала для синтетических задач.