golang

Вайб-кодинг и AI-Native: Как мы перестали писать код руками и отдали рутину Claude Code

  • пятница, 13 ноября 2026 г. в 00:00:19
https://habr.com/ru/articles/1106926/

Давайте начистоту: AI-Native — это не когда у вас в IDE висит Copilot и угадывает названия переменных. Это абсолютно другой подход к созданию софта, который сейчас называют «вайб-кодингом» (vibe coding). Вы задаете высокоуровневое направление, архитектурные границы и правила игры (тот самый «вайб»), а автономный ИИ-агент пишет весь синтаксис.

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

1. OpenAPI — наш главный промпт (и защита от галлюцинаций)

Главная беда любой LLM — она любит фантазировать. Скажешь ей «сделай API для пользователей», и она нагородит свои структуры, забудет про типы и забьет на валидацию.

Чтобы ИИ не галлюцинировал, мы используем API-First подход. Файл openapi.yaml становится не просто документацией для фронтендеров, а жестким техническим заданием для нейросети.

  • Вы руками описываете пути, DTO, обязательные поля и лимиты (например, что age — это integer с minimum: 18).

  • Агент читает эту спеку и генерирует контроллеры, модели и валидацию строго по ней. Пространства для фантазии ноль — ИИ жестко зажат контрактом.

2. Контекст в коде: выбрасываем Confluence

Обычно правила архитектуры лежат где-то в Confluence, куда никто не заходит. В AI-Native мире правила должны быть машиночитаемыми и лежать прямо в репозитории, чтобы ИИ учитывал их при каждом запросе.

  • .cursorrules (или .claudemdc): Файл в корне проекта с жесткими инструкциями без воды. Например: “Используй Clean Architecture. Слой Domain не должен знать про инфраструктуру. Используй CQRS. Ошибки бизнес-логики возвращай через паттерн Result, никаких Exceptions”.

  • Словарь терминов (docs/domain-glossary.md): ИИ обожает плодить синонимы (то User, то Client, то Customer). Пишем словарь: “Account — это счет. Deactivate — это смена статуса, а не удаление”. Агент читает это и называет классы правильно, не ломая Ubiquitous Language.

  • Архитектурные решения (docs/adr/): Папка с короткими Markdown-заметками о выбранных технологиях. Когда просишь ИИ прикрутить кэш, он читает файл 0001-use-redis.md и делает всё на Redis, а не тащит в проект Memcached по своей инициативе.

3. Стек и фреймворки: почему рулит строгая типизация

AI-Native не требует модных «ИИ-фреймворков». Наоборот, чем жестче и скучнее ваш стек, тем лучше ИИ пишет код.

  • Строгие типы (C#, Go): Компилятор — ваш лучший тестировщик. Если ИИ нагаллюцинировал с типами, компилятор C# или Go тут же ударит его по рукам на этапе сборки.

  • Паттерн CQRS: Идеальная архитектура для нейросети. Ей гораздо проще и безопаснее сгенерировать один изолированный CreateOrderHandler на 100 строк, чем ковырять и рефакторить монолитный God-сервис на тысячи строк.

  • DevContainers (Docker): Инфраструктурная база. Вы даете ИИ настроенный .devcontainer, и агент сам поднимает себе изолированную среду со всеми базами данных, не ломая вашу локальную ОС.

4. Как разложить папки, чтобы ИИ не сошел с ума

ИИ сканирует структуру проекта. Если у вас каша, он напишет кашу. Делаем всё максимально прозрачно (по классике Clean Architecture):

/
├── .cursorrules               # Главный системный промпт (правила игры)
├── docs/                      # Машиночитаемый контекст
│   ├── adr/                   # Архитектурные решения
│   ├── api/openapi.yaml       # API-контракт (наш главный ограничитель)
│   └── domain-glossary.md     # Словарь терминов бизнеса
├── src/
│   ├── Domain/                # Чистая бизнес-логика (интерфейсы, сущности)
│   ├── Application/           # Наши юзкейсы, CQRS-команды
│   ├── Infrastructure/        # Работа с БД (Postgres, Redis)
│   └── Presentation/          # REST API Контроллеры (генерируются ИИ)
├── tests/                     # Unit, Integration и Contract тесты
└── Makefile                   # Шорткаты (make build, make test) для агента

5. Claude Code в терминале: как он работает за нас

Забудьте про чат-боты сбоку экрана. Современные агенты (Claude Code) живут прямо в терминале и имеют права на выполнение shell-команд. Как выглядит обычная задача:

  1. Вы пишете в консоли: “Реализуй эндпоинт деактивации профиля по openapi.yaml. Сделай хэндлер, напиши миграцию для Postgres и покрой юнит-тестами. Запусти make test”.

  2. Агент читает ваши правила, сканирует существующие слои, генерирует файлы и сам запускает тесты в терминале.

  3. Допустим, тест упал, потому что ИИ забыл прокинуть зависимость в DI-контейнер. Агент сам читает ошибку из stderr, лезет в условный Startup.cs, добавляет зависимость и снова запускает билд. Вы получаете на ревью уже рабочий код.

6. Тесты: теперь это проблема агента

Написание моков и генерация тестовых данных — самая скучная работа. Теперь мы отдаем ее целиком (подход Agent-Driven Development).

  • Юнит-тесты: Вы просто говорите: “Напиши тесты для оплаты, проверь случай, когда баланс отрицательный”. ИИ сам прикручивает условный xUnit + Moq и генерит простыню бойлерплейта.

  • Интеграционные тесты (Testcontainers): Агент пишет тест, который программно поднимает реальный Docker с Postgres, накатывает туда миграции, делает реальный SQL-запрос, проверяет ответ и убивает контейнер.

7. А что остается делать Senior-разработчику?

Раз ИИ пишет код, мы что, больше не нужны? Наоборот. ИИ забирает реализацию CRUD, а на нас остается самая сложная, высокоуровневая инженерная работа, где нейросети стабильно лажают:

  1. Проектирование домена (DDD): ИИ не знает ваш бизнес. Если вы неправильно выделите агрегаты и границы, ИИ сгенерирует идеальный код для провальной архитектуры. Думать над сущностями всё еще должны вы.

  2. Базы данных и перфоманс: Модели часто пишут ORM-запросы с проблемой N+1, забывают про индексы и блокировки (Row-Level Locks). SQL-миграции нужно ревьюить под лупой.

  3. Отказоустойчивость (Resiliency): ИИ пишет «счастливые пути». Кто будет настраивать Circuit Breaker, таймауты, идемпотентность ключей и ретраи, когда отвалится внешнее API? Это ваша зона ответственности.

  4. Безопасность (Security): ИИ может захардкодить секреты, забыть проверить права пользователя на конкретный ресурс (IDOR) или пропустить инъекцию.

В эпоху вайб-кодинга вы перестаете быть просто «писателем кода». Вы становитесь системным архитектором, который выстраивает надежный каркас. И это, честно говоря, гораздо интереснее, чем в сотый раз писать один и тот же контроллер.