Проблема существующих AI‑ассистентов в IDE
Современные IDE активно внедряют модели генеративного ИИ, но большинство из них остаются лишь улучшенными автокомплитами. Пользователь получает предложения кода в реальном времени, однако процесс разработки остаётся полностью ручным: переключение файлов, настройка окружения, запуск тестов – всё это требует постоянного вмешательства разработчика. Термин «агент», который часто используют в маркетинговых материалах, в действительности не отражает никакой автономности. Отсутствие планирования задач, невозможность самостоятельно оценивать состояние проекта и ограниченные возможности взаимодействия с файловой системой делают такие решения лишь косметическим дополнением к традиционному workflow.
От идеи к прототипу: первые шаги
Инициатива началась с желания превратить «Cursor для неразработчиков» в действительно самостоятельного помощника. Первоначальная концепция предполагала создание инструмента, способного принимать высокоуровневые запросы от пользователя (например, «реализуй CRUD‑операцию для модели User») и преобразовывать их в последовательность действий: генерацию кода, создание файлов, внесение изменений в конфигурацию проекта и запуск тестов. Для реализации этой идеи был выбран модель Claude Code от Anthropic, известная своей способностью к более сложному контекстному рассуждению по сравнению с типичными автокомплитами.
Архитектурные решения
Ключевым элементом системы стал «мозг» – отдельный микросервис, отвечающий за планирование и координацию действий. Он принимает запрос пользователя, формирует план в виде DAG (directed acyclic graph), где каждый узел представляет атомарную операцию (создать файл, добавить импорт, выполнить команду сборки). План передаётся в исполнительный слой, реализованный через набор «ручных» плагинов, каждый из которых умеет взаимодействовать с конкретным аспектом IDE:
- FileHandler – создаёт, читает и модифицирует файлы в проекте.
- ProjectConfigurator – изменяет файлы конфигурации (csproj, Dockerfile, CI‑скрипты).
- TestRunner – инициирует запуск тестов и собирает результаты.
- ShellExecutor – позволяет выполнять произвольные команды в терминале, но только в ограниченном «песочном» режиме.
Для обеспечения безопасности и соответствия корпоративным политикам все плагины работают в изолированных контейнерах, а доступ к файловой системе ограничен только корневой папкой проекта. Кроме того, каждый запрос проходит через модуль валидации, который проверяет, нет ли попыток выполнить вредоносные команды.
Интеграция с IDE и управление файлами
Интеграция реализована через расширение Visual Studio Code, которое открывает WebSocket‑соединение с микросервисом планирования. При получении ответа от «мозга» расширение последовательно исполняет операции, отображая их статус в виде прогресс‑баров и журналов. Пользователь видит, как создаются новые файлы, какие строки кода вставляются, и может в любой момент прервать процесс. При необходимости система предлагает интерактивные уточнения: «Для какого уровня доступа нужен контроллер?», «Какие тестовые фреймворки использовать?».
Обучение и планирование действий
Модель Claude Code была дообучена на наборе реальных репозиториев с открытым кодом, включающих типичные CRUD‑операции, паттерны DDD и микросервисную архитектуру. Обучающий набор также содержал примеры последовательных действий, требующих изменения нескольких файлов и последующего тестирования. Благодаря этому модель способна не только генерировать код, но и предсказывать, какие файлы необходимо создать или изменить, какие зависимости добавить и какие тесты запустить.
Для планирования используется подход «Chain‑of‑Thought»: модель сначала формулирует текстовое описание плана, затем преобразует его в структурированный JSON, где каждому шагу сопоставлен тип операции и необходимые параметры. Этот JSON служит входом для исполнительного слоя, что позволяет избежать ошибок, связанных с прямым выполнением сгенерированного кода.
Тестирование и результаты
Было проведено несколько сценариев: автоматическое создание REST‑контроллера, внедрение Kafka‑продьюсера и генерация Docker‑образа для микросервиса. В каждом случае система успешно:
- Сгенерировала необходимые файлы (контроллер, сервис, интерфейсы).
- Добавила недостающие NuGet‑пакеты и обновила
csproj. - Настроила
appsettings.jsonдля подключения к Kafka. - Запустила юнит‑тесты, обнаружив и исправив небольшие синтаксические ошибки.
Среднее время полного цикла от запроса до готового к запуску кода составило 45‑60 секунд, что существенно ускорило прототипирование. Пользователи отмечали, что возможность «передать задачу в руки» уменьшила количество рутинных переключений между окнами и позволила сосредоточиться на бизнес‑логике.
Перспективы развития
Текущий прототип уже демонстрирует, что AI‑агент может выйти за рамки простого автокомплита и стать полноценным помощником, способным планировать, выполнять и проверять свои действия. В дальнейшем планируется расширить набор плагинов для работы с базами данных, облачными сервисами и CI/CD‑конвейерами. Кроме того, будет реализована поддержка обратной связи: агент будет учиться на исправлениях пользователя, улучшая свои планы в реальном времени. Важным направлением остаётся усиление механизма контроля безопасности, чтобы гарантировать, что автоматические операции остаются в рамках заданных политик и не нарушают целостность проекта.
Эти шаги открывают путь к более автономным системам разработки, где человеческий ввод ограничивается формулировкой целей, а AI‑агент берёт на себя всю техническую реализацию.