Все проекты
Клиентские проекты в продакшне

CodeMate Agent Локальный AI-агент для VS Code, который превращает задачи, описанные своими словами, в проверенные и безопасно применённые изменения кода в проектах на .NET и React.

AI-агент для программирования, построенный с той же дисциплиной надёжности и безопасности, что и продакшн-ПО: генерация кода под контролем политик, автоматическая проверка после применения и откат, circuit breaker’ы и CI-пайплайн с мутационным тестированием.

Иллюстрация: CodeMate Agent превращает задачу из чата в проверенный diff кода, который проходит проверки политик, сборки и типов

Клиент / проект

-

Отрасль

Инструменты для разработчиков / AI-инженерия

Мой вклад

  • Архитектура бэкенда агента (Python/FastAPI)
  • Расширение для VS Code (TypeScript)
  • Защитные механизмы: движок политик
  • проверка и откат
  • circuit breaker’ы
  • AI-оркестрация: классификация намерений
  • самопроверка
  • память
  • CI/CD
  • процесс релизов и мутационное тестирование
  • Архитектурные решения в формате ADR
Чат-панель CodeMate Agent в VS Code с выбором контекста и намерения и задачей, готовой к отправке

О проекте

CodeMate Agent — локальный AI-агент для VS Code, созданный в рамках клиентского проекта, чтобы сократить время на рутинную инженерную работу в кодовых базах на .NET и React. Он задуман как второй разработчик, которому можно поручить задачу, а не как очередной чат-бот, прикрученный к редактору.

Технологии: Python, FastAPI, TypeScript, VS Code Extension API, Qdrant, GitLab CI

Задача

Универсальные AI-ассистенты для кода хорошо генерируют правдоподобный код, но им гораздо сложнее доверить его применение: у них нет настоящих защитных механизмов от опасных изменений, нет проверки того, что сгенерированный код вообще собирается, нет автоматического восстановления, если что-то пошло не так, и нет памяти о том, что не сработало в прошлый раз. Цель была не в более умном автодополнении, а в агенте, которому можно обоснованно доверить работу с реальной кодовой базой.

Решение

Спроектировал и построил систему целиком: бэкенд на Python/FastAPI и расширение для VS Code с чат-панелью в стиле Copilot. Запросы, написанные своими словами, классифицируются по намерению (код, тесты, диагностика ошибок сборки, чат, объяснение) с порогом уверенности — при низкой уверенности агент не угадывает, а переспрашивает пользователя. Каждое сгенерированное изменение проходит ограниченный цикл самопроверки, затем движок политик, прежде чем попасть на диск (блокирует запрещённые пути, опасные операции и захардкоженные секреты), а после применения — проверку сборки и типов с автоматическим откатом при ошибке. Длинные или прерванные задачи сохраняют контрольные точки на каждом этапе, поэтому выполнение можно продолжить, а не начинать заново.

Ключевые возможности

Каждое изменение сначала показывается как предпросмотр diff и применяется только после одобрения.

Предпросмотр diff в CodeMate Agent: сгенерированная валидация email рядом с исходным компонентом в ожидании одобрения

Технический подход

Путь запроса в CodeMate Agent: от расширения VS Code через классификацию намерения, генерацию, самопроверку и проверку политик к предпросмотру diff, применению и проверке с откатом

  • Бэкенд: Python + FastAPI, с абстракцией над LLM-провайдером, чтобы модель можно было заменить, не затрагивая оркестрацию, память и пайплайн генерации кода.
  • Оркестрация: классификация намерений с порогом уверенности, планирование задачи, ограниченный цикл самопроверки и автономное перепланирование, которое учитывает прошлые ошибки (хранятся в Qdrant между сессиями) при следующей попытке.
  • Безопасность: движок политик блокирует запрещённые пути, опасные операции и захардкоженные секреты до применения любых изменений; после применения — проверка сборки и типов с автоматическим откатом при ошибке; контрольные точки на каждом этапе, чтобы прерванные задачи можно было продолжить.
  • Надёжность: общие circuit breaker’ы для вызовов LLM и памяти, admin API с данными о состоянии, сессиях и метриках и структурированное логирование с привязкой к ID запроса.
  • Расширение: чат-панель в VS Code с переключателем контекста (активный файл / открытые файлы / весь workspace), историей запусков и диагностикой ошибок по этапам.
  • Процесс: архитектурные решения фиксируются в ADR, в CI — порог мутационного тестирования (по kill rate, а не только по покрытию строк), проверка покрытия изменений и описанный процесс релизов, за которым стоят несколько выпущенных версий расширения.

Сложности

Доверить агенту реальные правки

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

Ошибаться с пользой, а не угадывать

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

Чтобы страховка действительно работала

circuit breaker’ы и мутационное тестирование имеют смысл, только если они обязательны, а не просто присутствуют — встроить в CI порог по kill rate и общие circuit breaker’ы значило доказать, что страховка выдерживает реальные сбои, а не существует лишь на бумаге.

Развивать агента, не подрывая доверие к нему

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

Моя роль

Работал над бэкендом агента, расширением для VS Code и процессом CI/CD и релизов — архитектура, реализация и постоянное развитие на протяжении нескольких выпущенных версий. Также писал ADR для ключевых решений и выстраивал практики тестирования и надёжности проекта — от модульного и мутационного тестирования до описанных выше систем проверки с откатом и circuit breaker’ов.

Результат

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

Реальные продукты, практичная разработка и задачи, которые стоит решать.

Избранные работы: .NET, full-stack SaaS, AI-интеграции, инструменты для разработчиков, React, React Native и не только.

Связаться