Вера Касьяненко, разработчик из команды DevRails ИИ в MTS Web Services, рассказала о создании агента-разработчика — сервиса, в котором языковая модель сама пишет код, запускает тесты, делает ревью и создает коммиты. Ключевая проблема, которую пришлось решать, — где именно выполняются команды, генерируемые моделью, и кто управляет этим местом. От ответа на этот вопрос зависит вся архитектура сервиса.
Агент в понимании команды — это сервис, где модель решает, что делать, а код исполняет эти решения. В отличие от обычного сервиса с LLM, агент работает с долгой задачей, которая может занимать минуты или часы, имеет состояние и использует инструменты: файловую систему, shell, git, внешние API. Модель в цикле получает задачу, вызывает инструменты, получает результаты и повторяет, пока задача не будет выполнена. Когда агент получает право менять файлы и запускать команды, он становится процессом с реальными правами в инфраструктуре, что требует особого внимания к безопасности.
Для интеграции агентов команда выбрала открытый протокол A2A (Agent2Agent), который описывает, как агенты передают друг другу задачи. A2A предоставляет карточку агента (справочник с описанием возможностей), долгую задачу (ресурс со статусом и прогрессом) и общий контракт, что позволяет избежать квадратичного роста интеграций. Однако A2A не решает вопросы безопасности исполнения — он лишь стандартизирует взаимодействие.
Команда рассмотрела три схемы исполнения. Схема 0 — все в одном процессе: агент работает как обычный сервис, где оркестрация и исполнение находятся вместе. Это просто, но небезопасно: любая ошибка модели может повлиять на весь процесс. Схема 1 — исполнение вынесено в отдельный под, которым управляет сам агент. Это дает некоторую изоляцию, но агент все еще контролирует среду. Схема 2 — платформенное управление средами: платформа создает и контролирует изолированные окружения, а агент получает доступ только к ним. Это обеспечивает максимальный контроль и безопасность.
В итоге команда остановилась на платформенной схеме, так как она позволяет сохранить контроль над действиями агента и изолировать его от основной инфраструктуры. Такой подход особенно важен для агента-разработчика, который имеет доступ к командной строке, файловой системе, git и сети — набору инструментов, способных натворить дел. Опыт MTS Web Services показывает, что при создании ИИ-агентов важно заранее продумывать архитектуру исполнения, а не полагаться на протоколы общения.


