Перейти к основному содержимому

Л1. От Vibe-coding к Harness Engineering: как не стать «макакой» в эпоху AI

Привет! Меня зовут Сергей Сабалевский. В своей работе я занимаюсь широким спектром задач: от настройки DevOps-инфраструктуры и дата-инженерии до разработки бэкенда и фронтенда.

Недавно я провел интересный эксперимент: полностью пересел на Claude Code и за две недели «навайбкодил» с нуля полноценный сервис с авторизацией, ролями, админкой и системой уведомлений. Раньше в одиночку я бы ни за что не затащил такой объем работы за столь короткий срок.

Но значит ли это, что профессия разработчика сводится к бездумному нажатию кнопок? Спойлер: нет. В этой статье мы разберем, как эволюционировали подходы к AI-кодингу, почему слепая генерация ломается на масштабе бизнеса и как выстроить такую среду (harness), в которой агенты будут приносить реальную пользу, а не технический долг.

Введение: Слон в комнате

6 февраля 2025 года Андрей Карпаты (Andrej Karpathy) опубликовал твит, который мгновенно стал манифестом нового подхода:

"There's a new kind of coding I call 'vibe coding', where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. [...] I 'Accept All' always, I don't read the diffs anymore. When I get error messages I just copy paste them in with no comment, usually that fixes it. The code grows beyond my usual comprehension. [...] It's not really coding — I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works." — Andrej Karpathy, X/Twitter

Звучит вдохновляюще — пока не задумаешься, что происходит с инженером, который месяцами не читает diff-ы и не отлаживает код вручную. С появлением агентов многие разработчики начали испытывать органический страх деградации. Сам Карпаты честно признается: когда ты перестаешь писать код руками, твои инженерные «мышцы» начинают атрофироваться, и ты перестаешь замечать важные нюансы.

Атрофия навыков — это не метафора

Исследование Anthropic (декабрь 2025) зафиксировало тревожную тенденцию среди собственных инженеров:

"I am for sure atrophying in my skills as a software engineer... But those skills could come back if they ever needed to, and I just don't need them anymore!" — инженер Anthropic

Другой инженер отметил: "If you were to go out and debug a hard issue yourself, you're going to spend time reading docs and code that isn't directly useful for solving your problem — but this entire time you're building a model of how the system works. There's a lot less of that going on because Claude can just get you to the problem right away."

Когда ИИ решает проблему за вас «напрямую», вы теряете побочное обучение — ту самую ментальную модель системы, которая отличает senior-инженера от оператора промптов.

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

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


Эволюция парадигм: как мы оказались здесь

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

Хронология ключевых событий
  • 2021 — запуск GitHub Copilot (preview) — эра автодополнения
  • 30 ноября 2022 — запуск ChatGPT — «английский язык как новый язык программирования»
  • Март 2023 — ChatGPT Code Interpreter — первый AI-агент, способный писать Python, запускать его в песочнице и итерировать над ошибками
  • Июнь 2024 — Claude 3.5 Sonnet + Claude Artifacts — LLM создает полноценные интерактивные веб-приложения прямо в чате
  • Сентябрь 2024 — OpenAI o1 — reasoning-модели с chain-of-thought
  • Январь 2025 — DeepSeek R1 — open-weights reasoning-модель, демократизировавшая доступ к «думающим» моделям
  • 6 февраля 2025 — Карпаты вводит термин «vibe coding»
  • Февраль 2025 — выход Claude Code — терминальный AI-агент, катализатор агентной парадигмы
  • Июль 2025 — формализация Context Engineering (LangChain, по идеям Карпаты)
  • Август 2025GPT-5 — «smartest, fastest, most useful model yet» от OpenAI
  • Август 2025исследование Anthropic: 132 инженера, 60% работы с Claude, +67% merged PR в день на инженера
  • Сентябрь 2025GitHub Copilot Coding Agent выходит в GA для всех платных подписчиков
  • Сентябрь 2025 — Anthropic выпускает Claude Sonnet 4.5 и публикует блог о context engineering для агентов
  • Октябрь 2025Claude Code на вебе — AI-кодинг доступен через браузер
  • Ноябрь 2025Claude Opus 4.5; Claude Code достигает $1B ARR
  • Декабрь 2025 — OpenAI выпускает GPT-5.2-Codex — специализированная модель для агентного кодирования
  • Февраль 2026 — Anthropic выпускает Claude Opus 4.6 и Sonnet 4.6 (1M контекст, ~80% SWE-Bench)
  • Февраль 2026 — Ryan Lopopolo (OpenAI) публикует «Harness Engineering» — 1M строк кода без единой строки, написанной человеком
  • Февраль 2026SWE-Bench Verified закрыт из-за контаминации; запущен SWE-Bench Pro (лучший результат: ~46%)
  • Февраль 2026РКИ Anthropic: разработчики с AI-помощью показывают на 17% худший результат в тестах на понимание кода

1. Autocomplete (2021–2023)

Эпоха GitHub Copilot. Разработчик пишет код, а ИИ выступает в роли продвинутого автодополнения, дописывая за ним текущую строку или функцию. Модель видит только текущий файл и несколько соседних табов — контекст минимален, но даже это экономило часы на бойлерплейте.

2. Prompt Engineering (2023–2024)

Запуск ChatGPT 30 ноября 2022 года сместил фокус на искусство составления текстовых запросов. Английский язык стал новым языком программирования. Мы писали промпты на три абзаца, чтобы получить нужный компонент. Code Interpreter (март 2023) пошел дальше — впервые ИИ мог не только генерировать код, но и запускать его, видеть ошибки и исправлять их самостоятельно.

3. Vibe Coding (Начало 2025)

Термин, придуманный Андреем Карпаты 6 февраля 2025, описывает состояние, когда разработчик полностью отдается «вайбу» общения с ИИ и буквально забывает о существовании кода. Этот подход отлично работает для пет-проектов. Например, Саймон Уиллисон (Simon Willison) за год создал более 110 небольших веб-инструментов — от кулинарных таймеров до бенчмарков Python-библиотек и классификаторов изображений на базе CLIP.

Но сам Уиллисон жестко разграничивает вайб-кодинг и профессиональную AI-разработку:

"Vibe coding does not mean 'using AI tools to help write code'... This is a hill I am willing to die on." — Simon Willison, Not all AI-assisted programming is vibe coding (март 2025)

"If someone tells you that coding with LLMs is easy they are (probably unintentionally) misleading you." — Simon Willison, Here's how I use LLMs to help me write code (март 2025)

Осторожно: иллюзия

Vibe-coding прекрасен для быстрых прототипов. Но если вы попытаетесь применить чистый вайб-кодинг для масштабируемого enterprise-продукта, вы быстро утонете в галлюцинациях и сломанной бизнес-логике. Как говорит Уиллисон: "Your responsibility as a software developer is to deliver working systems. If you haven't seen it run, it's not a working system."

4. Context Engineering (Середина 2025)

Пришло осознание, что длинные промпты бессмысленны без правильных данных. Тот же Карпаты ввел идеальную аналогию: LLM — это новый тип процессора (CPU), а контекстное окно — это оперативная память (RAM). Как он сформулировал: "[Context engineering is the] delicate art and science of filling the context window with just the right information for the next step." Мы стали передавать моделям структуру репозитория, файлы документации и использовать RAG.

5. Agentic & Harness Engineering (2026+)

Сегодня мы переходим к парадигме инженерии сред. Второе полугодие 2025 стало «годом агентов»: GitHub Copilot Coding Agent вышел в GA (сентябрь), Cursor выпустил Background Agents (июнь), Claude Code стал доступен на вебе (октябрь) и достиг $1B ARR (ноябрь), OpenAI выпустил специализированный GPT-5.2-Codex (декабрь). Инженер больше не пишет бизнес-логику руками — он проектирует «упряжь» (harness) для автономных ИИ-агентов.

Кульминацией стал февраль 2026: Ryan Lopopolo из OpenAI описал пятимесячный эксперимент с 1M+ строк кода, где ни одна строка не была написана человеком, а скорость разработки составила ~1/10 от ручной. Одновременно Anthropic опубликовала РКИ, показавшее парадокс: при росте продуктивности разработчики с AI-помощью показывают на 17% худший результат в тестах на понимание кода.

Уиллисон назвал эту зрелую практику vibe engineering"the other end of the spectrum, where seasoned professionals accelerate their work with LLMs while staying proudly and confidently accountable for the software they produce" (Vibe engineering, октябрь 2025).

"AI tools amplify existing expertise. The more skills and experience you have as a software engineer the faster and better the results you can get." — Simon Willison, Vibe engineering (октябрь 2025)


Иллюзия скорости и суровая бизнес-реальность

Внедрение агентов вскрыло неожиданные проблемы в компаниях. Первичная эйфория от того, что разработчики стали генерировать в 4 раза больше Pull Requests, быстро сменяется суровой реальностью.

Ловушка метрик: Time-to-QA vs Time-to-Market

Разработчику с ИИ кажется, что он невероятно ускорился, но он часто перестает глубоко вникать в код, неявно делегируя поиск багов отделу тестирования (QA). В результате возникает ловушка метрик: время до передачи задачи в QA (Time-to-QA) может снизиться на 23%, но итоговое время доставки фичи до продакшена (Time-to-Market) улучшается всего на 15%. Для крупных фичей улучшение Time-to-Market оказывается статистически незначимым — разработчики быстро понимают, что AI плохо справляется с большими эпиками. Почему? Потому что отдел QA начинает захлебываться в потоке сгенерированного спагетти-кода, и количество возвратов задач разработчикам резко возрастает.

Независимые исследования подтверждают эту тенденцию:

  • GitClear (январь 2024): анализ ~153 миллионов измененных строк кода за 2020--2023 показал, что code churn вырос с 9% до 15,2% — код, который пушат и удаляют/откатывают в течение двух недель. При этом доля рефакторинга (moved code) значительно снизилась.
  • Uplevel (середина 2024): исследование ~800 разработчиков не выявило значимого улучшения в PR cycle time. Более того, разработчики, использовавшие Copilot, допускали на 41% больше багов, чем те, кто работал без него.
  • Cursor / University of Chicago (ноябрь 2025): анализ десятков тысяч разработчиков (Suproteem Sarkar) показал, что компании мержат на 39% больше PR после включения агента по умолчанию. При этом revert rate значимо не вырос, а частота багфиксов даже слегка снизилась. Интересно, что senior-разработчики принимают AI-код охотнее: +6% за каждое стандартное отклонение в годах опыта.
А где позитив?

Исследование Anthropic (декабрь 2025, 132 инженера) показывает другую сторону: Claude используется уже в 59% рабочих задач (год назад — 28%), а субъективный прирост продуктивности вырос с +20% до +50%. При этом 27% задач с участием Claude — это работа, которая вообще не была бы сделана без AI (внутренние инструменты, устранение мелких раздражителей). Исследование Harvard/BCG (750 консультантов, GPT-4) зафиксировало +40% к качеству результатов и выравнивание навыков: слабейшие участники улучшились на +43%, сильнейшие — лишь на +17%.

«Дёшево — это не бесплатно»: ловушка nice-to-have

Еще один интересный симптом — рост количества «nice-to-have» фичей. Если раньше создание красивого дашборда заняло бы 4 часа и от него бы отказались, то теперь агент делает его за 15 минут. Но 15 минут, умноженные на десяток таких задач в день, — это 2,5 часа рабочего времени на вещи, которые не несут ключевой ценности бизнесу. Как точно сформулировал Саймон Уиллисон:

"The biggest challenge in adopting agentic engineering practices is getting comfortable with the consequences of the fact that writing code is cheap now." — Simon Willison

"Delivering new code has dropped in price to almost free... but delivering good code remains significantly more expensive than that." — Simon Willison

Каждая сгенерированная строка кода становится техническим долгом — её нужно поддерживать, тестировать и понимать. Сальваторе Санфилиппо (Salvatore Sanfilippo), создатель Redis, предупреждает: "They tend to produce fragile code bases that are larger than needed, complex, full of local minima choices, suboptimal in many ways."

YAGNI на стероидах

LLM структурно склонны к over-engineering: они оборачивают код в лишние абстракции, создают ненужные конструкции и усложняют там, где достаточно простого решения. Сложный код «съедает внимание» AI в будущих итерациях — over-engineering компаундится. Принцип YAGNI (You Aren't Gonna Need It) актуален как никогда: AI делает нарушение этого принципа слишком лёгким.


Harness Engineering: строим «леса» для ИИ

Как же обуздать агентов? Ответ кроется в подходе Harness Engineering. Сам термин ввел Райан Лопополо (Ryan Lopopolo) из OpenAI в статье «Harness engineering: leveraging Codex in an agent-first world» (11 февраля 2026). Их команда провела пятимесячный эксперимент: начав с пустого git-репозитория в конце августа 2025, три инженера (позже семь) построили внутренний продукт размером более 1 миллиона строк кода — и ни одна строка не была написана человеком вручную.

"Over the past five months, our team has been running an experiment: building and shipping an internal beta of a software product with 0 lines of manually-written code." — Ryan Lopopolo, OpenAI (февраль 2026)

За это время было открыто и смержено ~1 500 PR — в среднем 3,5 PR на инженера в день. Код покрывает application logic, инфраструктуру, тулинг, документацию и внутренние утилиты.

Как они выстроили работу агента (в их случае — Codex):

  1. Отказ от мега-промптов. Первоначально команда пыталась запихнуть все знания в один монолитный AGENTS.md — это провалилось: контекстное окно переполнялось, агент пропускал ограничения, документ быстро устаревал. Решение: "So instead of treating AGENTS.md as the encyclopedia, we treat it as the table of contents" — короткий файл (~100 строк), который служит картой, указывающей на глубокие источники истины.

  2. Progressive Disclosure (постепенное раскрытие). Вся база знаний лежит в структурированной папке docs/. Агент стартует с маленького стабильного документа и сам решает, когда ему нужно прочитать спецификацию по архитектуре или безопасности. Как описывает команда OpenAI: "This enables progressive disclosure: agents start with a small, stable entry point and are taught where to look next, rather than being overwhelmed up front." Этот паттерн напрямую связан с Context Engineering из предыдущего раздела — LLM-«процессору» нужно загружать в «RAM» только релевантные данные.

  3. Механические ограничения. Агенты работают в изолированных песочницах (sandboxes). Стандартные Docker-контейнеры разделяют ядро с хостом — это недостаточно для запуска непроверенного AI-кода. Идеальный подход — microVMs (например, AWS Firecracker), которые обеспечивают полную аппаратную виртуализацию с миллисекундным запуском и полной изоляцией ядра.

Практический вывод

Паттерн «AGENTS.md как оглавление» можно применить прямо сейчас в любом проекте: создайте короткий root-файл с навигацией по документации, а детали вынесите в отдельные файлы (ARCHITECTURE.md, SECURITY.md, TESTING.md). Агент сам прочитает нужный файл, когда задача этого потребует.

ИИ как идеальный тестировщик

Там, где агенты работают практически идеально — это написание автоматических тестов. При наличии строгой высокоуровневой документации с иерархией тестирования (класс/метод) AI-тесты достигают ~95% точности и могут работать в режиме полной автономии.

Конкретный пример: крупная enterprise-команда делегировала генерацию тестов Claude Code — покрытие unit-тестами выросло с ~33% до 95%, что привело к значительному снижению количества багов, доходящих до QA.

Кейс StrongDM: «Вселенная цифровых двойников»

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

  • Holdout Scenarios — E2E-сценарии пользовательских историй хранятся вне кодовой базы как «holdout set» (по аналогии с ML-обучением) — агент не может «подсмотреть» тесты при написании кода
  • Digital Twins — AI-агенты строят поведенческие клоны сторонних сервисов (Okta, Jira, Slack), создавая полноценную тестовую инфраструктуру без зависимости от внешних API
  • Массовое тестирование — рой симулированных тестировщиков прогоняет тысячи сценариев в час без ограничений по rate limits и API-костам

Автономный QA-воркфлоу OpenAI

В своем проекте на 1M+ строк OpenAI довели автоматизацию тестирования до логического предела. Один промпт запускает полный цикл:

  1. Валидация текущего состояния кодовой базы
  2. Воспроизведение зарепорченного бага
  3. Запись видео, демонстрирующего ошибку
  4. Реализация исправления
  5. Верификация фикса через управление приложением
  6. Запись второго видео с подтверждением исправления
  7. Мерж

Для UI-тестов агент подключается через Chrome DevTools Protocol — получает DOM-снэпшоты, скриншоты и возможность навигации, буквально «видя» интерфейс. Кроме того, фоновые задачи регулярно сканируют кодовую базу на отклонения от «золотых принципов» и автоматически открывают рефакторинговые PR.


Продвинутые паттерны Harness Engineering

Помимо базовых принципов (AGENTS.md как оглавление, Progressive Disclosure, песочницы), существует ряд конкретных инженерных приемов, которые делают работу агентов предсказуемой:

  • Dynamic Context Discovery. Длинные выводы инструментов записываются во временные файлы, а агент использует tail/grep для извлечения только нужных фрагментов. Cursor сообщает о снижении потребления токенов на 46,9% при таком подходе.
  • «Ralph Wiggum Loop». Middleware-прослойка, которая перехватывает агента перед завершением задачи и заставляет его прогнать тесты и сверить результат со спецификацией — предотвращает преждевременное «я всё сделал!».
  • Doom-Loop Detection. Отслеживание количества правок в одном файле: если агент правит один и тот же участок 3+ раз, система принудительно останавливает его или инжектирует промпт "reconsider your approach".
  • Compound AI Systems. Маршрутизация задач между моделями: мощная модель-планировщик (следует инструкциям), легкие модели для компактификации контекста, паттерн «reasoning sandwich».

Безопасность: YOLO Mode и нормализация риска

Важно для практики

Этот раздел критически важен для каждого, кто работает с AI-агентами. Последствия пренебрежения безопасностью могут быть катастрофическими.

«YOLO Mode» и нормализация девиации

Для достижения максимальной производительности агентов разработчики всё чаще включают «YOLO Mode» — автоматическое одобрение всех терминальных команд без ручной проверки. Исследователь безопасности Йоханн Ребергер (Johann Rehberger) провел аналогию с катастрофой «Челленджера»: нормализация девиации (normalization of deviance) — агенты работают с правами root, ничего плохого не происходит, и люди начинают считать это безопасным.

Саймон Уиллисон предупреждает о неизбежности катастрофического червя через prompt injection — вредоносный код, встроенный в популярные NPM/Python-пакеты, который активируется, когда AI-агент читает и исполняет инструкции из зависимостей.

Уязвимости MCP (Model Context Protocol)

С ростом экосистемы MCP-серверов появились новые векторы атак:

  • Tool Poisoning — скрытые вредоносные инструкции в описании инструмента, невидимые пользователю, но исполняемые агентом
  • «Rug Pull» — инструмент изменяет своё поведение после первоначального одобрения, постепенно расширяя привилегии

Защитные паттерны

  • Dual LLM Pattern — разделение на «карантинную» LLM (обрабатывает недоверенный ввод) и «привилегированную» LLM (имеет доступ к инструментам). Карантинная модель не может вызывать инструменты напрямую.
  • Code-Then-Execute — агент генерирует код, но не выполняет его. Выполнение происходит только после проверки (автоматической или ручной) в изолированной среде.

Evals: новые unit-тесты для AI

Мальте Убл (Malte Ubl) из Vercel точно сформулировал проблему:

"A prompt without the evals, models, and especially UX is like getting a broken ASML machine without a manual." — Malte Ubl, Vercel

В мире AI-кодинга evals (evaluation benchmarks) играют роль, аналогичную unit-тестам: они определяют, насколько хорошо модель справляется с задачами. Однако к ним нужно относиться критически.

Контаминация SWE-bench (февраль 2026): обнаружилось, что модели (GPT-5.2, Claude Opus 4.5, Gemini 3 Flash) могут дословно воспроизводить патчи из тренировочных данных. В ответ был создан SWE-bench Pro на приватных кодовых базах — и success rate упал с 70%+ до ~23%. Агенты по-прежнему с трудом справляются со сложной, ранее не виденной архитектурой.


Парадокс супервизии и социальный эффект

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

AI также меняет социальную динамику в командах. Специалисты начинают работать за пределами своих доменов — alignment-исследователи пишут фронтенд, бэкендеры создают дизайн-системы. С одной стороны, это расширяет возможности. С другой — размывает экспертизу. Один senior-инженер из Anthropic признался: "I like working with people and it's sad that I 'need' them less now. More junior people don't come to me with questions as often."


Итоги: куда мы движемся

Инструменты (Cursor, Claude Code, Windsurf) будут меняться каждый месяц. Учить конкретные кнопки бессмысленно. Важно освоить мета-навык: умение выстраивать пайплайны и ограничения.

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

Ключевые takeaways этой лекции:

  1. AI умножает экспертизу — положительную и отрицательную. Инвестиции в фундаментальные знания окупаются кратно.
  2. Скорость генерации кода != скорость доставки ценности. Метрика Time-to-Market важнее Time-to-QA.
  3. AGENTS.md как оглавление + Progressive Disclosure — конкретный паттерн, который можно внедрить завтра.
  4. AI — идеальный QA-инженер, но посредственный архитектор. Используйте его сильные стороны.
  5. Безопасность не опциональна. Песочницы, Dual LLM, Code-Then-Execute — минимальный набор для продакшена.
  6. Осознанная практика — единственное лекарство от атрофии навыков.
Практическое задание

Для закрепления материала подумайте о вашем текущем рабочем процессе. Попробуйте на этой неделе взять типовую задачу и решить ее "в лоб" одним промптом, не подготавливая контекст. Зафиксируйте, в какой момент агент свернет не туда. На следующем семинаре мы обсудим эти провалы!


Дальнейшее чтение

Первоисточники и ключевые статьи

  • Karpathy, A. (2025). "Vibe coding" tweet, 6 февраля 2025. X/Twitter
  • Willison, S. (2025). "Here's how I use LLMs to help me write code", 11 марта 2025. simonwillison.net
  • Willison, S. (2025). "Not all AI-assisted programming is vibe coding", 19 марта 2025. simonwillison.net
  • Willison, S. (2025). "Vibe engineering", 7 октября 2025. simonwillison.net
  • Lopopolo, R. (2026). "Harness engineering: leveraging Codex in an agent-first world", 11 февраля 2026. OpenAI

Исследования и метрики

  • Anthropic (2025). "How AI is transforming work at Anthropic", 2 декабря 2025. anthropic.com
  • LangChain (2025). "Context Engineering", 2 июля 2025. blog.langchain.dev
  • GitClear (2024). "Coding on Copilot: 2023 Data Suggests Downward Pressure on Code Quality", январь 2024.
  • Uplevel (2024). Исследование ~800 разработчиков, середина 2024.
  • Sarkar, S. (2025). Cursor / University of Chicago study, ноябрь 2025.
  • Dell'Acqua, F. et al. (2023). "Navigating the Jagged Technological Frontier", Harvard/BCG, GPT-4 study.

Инструменты и ресурсы