Искусственный интеллект в программировании уже давно вышел за рамки простых подсказок кода. Современные инструменты, такие как GitHub Copilot, интегрированные в Visual Studio Code, способны не только дописывать код, но и выполнять команды в терминале, запускать сборки и тесты прямо из редактора. Вот еще Open AI вчера выпустил Codex, это адаптация моего поста про SWE-Agent.
Однако, когда дело доходит до сложных изменений или отладки, эффективность агентов снижается. Например, при работе с запутанными зависимостями в CMake часто приходится вручную предоставлять необходимые файлы или устранять ошибки сборки.
В таких случаях полезно начать с добавления нового теста и валидировать каждый шаг агента.

Последовательная разработка с участием человека (Human-in-the-loop)
Современные агенты программной инженерии (SWE-агенты) используют подход, напоминающий традиционные рабочие процессы:
Определение микроцели: например, “рефакторинг AuthService для поддержки JWT”.
Модульность: фокус на соответствующих модулях или файлах.
Внесение изменений: модификация кода для достижения цели.
Запуск тестов: выполнение юнит- и интеграционных тестов для проверки изменений.
Анализ результатов: определение следующих шагов на основе результатов тестирования — продолжение, пересмотр или обращение за помощью к человеку.
Этот итеративный процесс соответствует исследованиям в области масштабирования вычислений по времени (Test-Time Scaling): модели улучшают свои рассуждения, оценивая результаты и корректируя подход. Подобный подход реализован в современных reasoning-моделях, таких как OpenAI o1 и o3, а также в DeepSeek R1, которые демонстрируют улучшенные способности к рассуждению благодаря более длительным вычислениям во время инференса.
Интеграция внешних инструментов с помощью Model Context Protocol (MCP)
Model Context Protocol (MCP) — это открытый стандарт, предназначенный для обеспечения бесшовной связи между AI-моделями и внешними инструментами или источниками данных.
Принципы архитектуры MCP:
Host: координирует работу нескольких клиентов и обеспечивает безопасность.
Client: поддерживает соединения с серверами, управляя протоколами связи и состоянием.
Server: предоставляет контекст, инструменты и подсказки клиентам, действуя как шлюз к конкретным источникам данных.
Преимущества интеграции MCP:
Расширенное понимание контекста: агенты получают более полное представление о проекте, получая доступ к внешним данным.
Улучшенная автоматизация рабочих процессов: агенты могут выполнять задачи, такие как обновление задач в Jira, получение документации из Confluence и мониторинг CI/CD-пайплайнов.
Масштабируемость: модульный дизайн позволяет легко интегрировать дополнительные инструменты и сервисы по мере развития проекта.
Контекст проектов и пользовательские инструкций
Для эффективной работы SWE-агенты требуют четкого понимания контекста проекта. Это начинается с процесса инициализации агента, в ходе которого он получает доступ к рабочему пространству проекта и более широкой кодовой базе, обычно в Git-репозитории.
Во время инициализации агент изучает ключевую документацию — такую как README, архитектурные диаграммы и руководства по стилю — формируя представление о структуре проекта. Он индексирует файлы и каталоги проекта, определяет инструменты сборки и готовится к запуску тестов и сборок через командную строку.
Эта начальная настройка критически важна, предоставляя агенту полное понимание зависимостей и соглашений проекта. Кроме того, эффективная инициализация включает в себя установление ассоциаций между техническим языком — такими как требования, пользовательские истории и архитектурные описания — и фактической кодовой базой.
Подход различается в зависимости от характера проекта:
Существующие проекты: агент сосредотачивается на сборе контекста о текущем состоянии, используя документацию и структуру кодовой базы для понимания существующих функций и зависимостей.
Новые проекты: агент участвует в первоначальном сборе требований и проектировании системы, создавая основу для руководства процессом разработки с нуля.
Ключевым элементом этого рабочего процесса является использование пользовательских инструкций рабочего пространства. В Visual Studio Code их можно предоставить Copilot через файл .github/copilot-instructions.md
в репозитории. Этот файл позволяет разработчикам определять специфические для проекта контракты и стандарты кодирования, настройки окружения.
GitHub Copilot в Visual Studio Code затем автоматически применяет эти инструкции, обеспечивая соответствие предложений кода практикам команды.
Принципы проектирования программного обеспечения и тестирования
SWE-агенты работают наиболее эффективно c кодовыми базами, которые хорошо структурированы и тщательно протестированы. Применение устоявшихся принципов проектирования программного обеспечения — таких как SOLID, модульность, чистая архитектура и CQRS — создает благоприятные условия для агента, делая код легко поддерживаемым и изменяемым.
Тестирование так же критично. Всеобьемлющий набор тестов не только позволяет узнавать о проблемах в коде на этапе запуска тестов, но и предоставляет агентам ориентиры во время разработки. Хорошо составленные тесты определяют структуру для отладки, позволяя агентам понимать ожидаемое поведение.
Эти принципы напрямую влияют на то, как SWE-агенты внедряются в проект. Во время инициализации агент собирает ключевую документацию, стандарты написания кода и архитектурные документы, включая руководства по стилю, предпочтительные шаблоны проектирования, границы модулей, структуру и подходы к тестированию.
Предоставляя четкие принципы проектирования и надежные практики тестирования с самого начала, AI-агенты могут создавать и модифицировать, пока под контролем человека, программное обеспечение.
Заключение
Хотя SWE-агенты представляют собой значительный шаг вперед, решение высоко сложных задач программной инженерии остается вызовом. Такие проблемы, как запутанные зависимости, неоднозначные требования или ошибки интеграции, по-прежнему трудны даже для самых продвинутых агентов.
Однако новые исследования и практические рабочие процессы предлагают перспективные решения:
Масштабирование вычислений во время тестирования: предоставляя агентам больше вычислительных ресурсов и времени в ключевые моменты, они могут оценивать несколько стратегий, учиться на результатах и итеративно двигаться к лучшим решениям.
Последовательная разработка, ориентированная на микроцели: разбивая большие проблемы на небольшие, тестируемые шаги — каждый из которых проверяется перед продолжением — как агенты, так и люди могут эффективно управлять сложностью.
CI/CD-пайплайны остаются важным компонентом. Они ответственны за выполнение тестов, выявления ошибок. Интеграция агентов с этими системами не только ускоряет рабочие процессы, но и устанавливает цикл обратной связи, который помогает агентам эффективнее помогать инженерам.
Обогащая контекст проекта, поддерживая комплексную документацию и принимая последовательные, ориентированные на тестирование рабочие процессы, команды могут наделить агентов способностью справляться даже со сложными изменениями с возрастающей эффективностью.
Ссылки:
SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering — arxiv.org/pdf/2405.15793
CodeMonkeys: Scaling Test-Time Compute for Software Engineering — arxiv.org/pdf/2501.14723
Thinking Longer, Not Larger: Enhancing Software Engineering Agents via Scaling Test-Time Compute — arxiv.org/pdf/2503.23803
Introducing the Model Context Protocol — Anthropic — anthropic.com/news/model-context-protocol
a1exkras
Про варианты встраивания агентов в ci/cd интересно. Мы типо прогнали тесты, что-то упало, возвращаемся в ide, нажимаем кнопочку "подкинуть контекста из ci" и скармливаем агенту? Какие еще есть опции?
aufklarer Автор
Они хорошо выявляют всякие отклонения типовые. Типа пройтись по репам и собрать кто использует старую версию платформы. Подтянуть к баг тикету логи и с кодом их связать. Это все пока сырое, но кажется что полгодика и будет уже подспорье стандартный лазаньям по логам и трейсам.