Всем привет! Меня зовут Станислав Денисов, я ML-инженер в компании «Инфосистемы Джет».
Вайбкодинг уже стал неотъемлемой частью разработки. Claude Code отвечает за 4% всех публичных коммитов на GitHub, а в Google 50% кода генерируется ИИ. Это не временная мода — технологии пришли надолго.
Спорить, хорошо это или плохо, бессмысленно. Важнее понимать, как использовать ИИ с умом. В сложных проектах без предметных знаний полагаться на ассистентов рискованно. Но и отказываться от экономии времени на рутине — неразумно.
Сегодня протестируем Yandex Code Assistant на задаче, где важна безопасность: создание MVP сервиса для одноразовой передачи секретов, как в Privnote или Yopass. Задача выглядит как простой CRUD, но под капотом — множество уязвимостей, если не продумать архитектуру и защиту.
Цель — понять, насколько ассистент автономен, где он справляется, а где без человека не обойтись.
Почему Yandex Code Assistant
Наша команда регулярно использует Cursor, GitHub Copilot и Claude Code. С 2024 года Yandex SourceCraft Code Assistant стал не просто подсказчиком, а полноценным агентом в SDLC — поэтому тестируем его на реальной задаче.
Задача с подвохом: написать MVP сервиса, где секрет можно прочитать только один раз или до истечения TTL. Если ИИ просто сделает CRUD — получится уязвимый сервис. Интересно, сможет ли ассистент сам продумать threat model и безопасность.
Оболочка агента: роли и визуализация
Проект стартовал с нуля. Ассистент предложил выбрать режим работы. Доступны пять модов:
- Architect: проектирование до реализации.
- Code: написание и рефакторинг.
- Ask: объяснения и ответы.
- Debug: поиск и исправление багов.
- Orchestrator: автоматическое управление задачами.
Orchestrator — ключевая фишка. Как в Cursor, он сам переключается между ролями: архитектор, разработчик, тестировщик.
На промпт «Помоги спроектировать MVP… Опиши архитектуру и threat model» ассистент создал 8 markdown-файлов: описал этапы, нарисовал диаграммы, структурировал систему.
После каждого промпта он обновлял внутренний To-Do и шел по нему шаг за шагом.
Особенно удобна визуализация изменений. Встроенный diff показывает, что именно меняется в файлах, с пояснениями к каждому действию.
Под капотом — расширяемость через Model Context Protocol (MCP). Есть скиллы вроде create-mcp-server и create-mode для кастомных ролей. В тесте не использовали, но потенциал есть.
Разбор полетов: успехи и ограничения ИИ
Я дал агенту 10 итеративных промптов — от архитектуры до фронтенда. Основные из них:
- Проектирование: «Спроектируй MVP сервиса для одноразовой передачи секретов. Опиши архитектуру, threat model и меры безопасности».
- Бэкенд: «Сгенерируй backend на FastAPI с SQLAlchemy и SQLite/PostgreSQL. Эндпоинты: создать, получить, пометить как прочитанный, удалить просроченные».
- Безопасность: «Покажи безопасный подход к хранению: шифрование, генерация токена, TTL, одноразовый доступ. Перепиши код и объясни».
- QA: «Напиши pytest-тесты: одноразовое чтение, истекший TTL, неверный токен, повторный доступ, физическое удаление».
Что получилось хорошо
Ассистент отлично справился с рутиной:
- Настроил валидацию через Pydantic с ограничением размера секрета.
- Использовал BackgroundTasks из FastAPI для очистки просроченных записей — без лишних cron-скриптов.
- Добавил In-Memory Rate Limiter как Middleware — защита от брутфорса.
- Сгенерировал docker-compose.yml, Dockerfile и конфиг Nginx.
Код выглядел готовым к деплою. Почти.
Где потребовался человек
- Шифрование на стороне сервера: ассистент использовал cryptography.fernet с ключом на основе мастер-ключа и ID секрета. Это означает, что администратор с доступом к БД и переменным окружения может расшифровать всё. Для zero-knowledge нужно шифрование на клиенте (Web Crypto API), где ключ передаётся в URL-хеше (#KEY) и не попадает на сервер.
- TOCTOU-уязвимость: при получении секрета агент делал SELECT, проверял флаг accessed, отдавал данные, потом обновлял запись. При двух параллельных запросах оба могут прочитать секрет. Решение — использовать SELECT ... FOR UPDATE или атомарный UPDATE ... RETURNING.
- Физическое удаление: ассистент помечал секрет как удалённый, но не удалял зашифрованный текст из БД. Настоящая безопасность требует физического DELETE и, по возможности, крипто-шреддинга — перезаписи данных мусором перед удалением, чтобы не оставить следов в WAL-файлах.
ИИ отлично экономит время на шаблонных задачах. Но безопасность, бизнес-логика и контроль — зона ответственности разработчика.
Итоги
Yandex Code Assistant впечатлил:
- Режим Orchestrator — удобен и автономен.
- Работа с контекстом — точечные правки без поломки архитектуры.
- Diff-режим — упрощает ревью.
- Инфраструктура — Docker, Nginx, всё на месте.
Но есть нюансы:
- Промпты на русском, а фронт — на английском. Не критично, но странно.
- Без глубокого ревью код нельзя сливать в прод. Как и любой ИИ-ассистент, он не идеален.
Разработчиков ИИ пока не заменит. Но меняет их роль: от писателя кода — к архитектору, ревьюеру и контролёру безопасности.
Результатом доволен. То, на что раньше ушёл бы день, ассистент сделал за час. Инструмент полезный — при условии вдумчивого подхода. А без знаний и контроля — даже самый умный ИИ превратит MVP в уязвимую бочку.