🧭 Andrej Karpathy
Ex-директор AI в Tesla, один из основателей OpenAI, автор термина «vibe coding». Karpathy первым назвал словами то, что многие разработчики уже делали интуитивно — но его же собственная практика с конца 2025 года показывает: vibe coding и настоящая инженерия с CC — это два разных режима работы, и путать их опасно.
Ты по-прежнему отвечаешь за свой софт. Нельзя вносить уязвимости только потому, что код писался в режиме vibe coding — ответственность за результат не делегируется модели вместе с написанием строк. Вопрос не «кто печатал код», а «кто проверил, что он безопасен и корректен».
По формулировке Karpathy, vibe coding — это когда ты описываешь желаемый результат на высоком уровне, доверяешь AI написать код целиком и сознательно не вычитываешь каждую строку и каждый шаг. Ты остаёшься в потоке идеи, а не в деталях реализации.
Это не халтура — это осознанный выбор режима работы под конкретную задачу. Ключевое слово «сознательно»: ты заранее решаешь, что для этой задачи вычитка построчно не нужна, потому что цена ошибки низкая и результат легко откатить.
Пример небрежного, но уместного vibe-запроса для быстрого прототипа:
Сделай мне лендинг для идеи стартапа: калькулятор
чаевых с разными настроениями (жадный/щедрый/по-братски).
Пусть будет весело, с анимациями. Не важно как названы
переменные, просто чтобы работало и выглядело прикольно.
Это нормальный промпт — для одноразового прототипа, демо на хакатоне или обучающего эксперимента. Проблема начинается, когда тот же стиль запроса применяют к сервису, который завтра пойдёт в продакшн.
Karpathy проводит жёсткую границу между двумя разными эффектами, которые LLM-агенты оказывают на разработку, и путать их — источник большинства недоразумений вокруг «AI пишет весь код за меня».
Это не два конца одной шкалы «доверия к AI» — это две разные оси с разной аудиторией, разной целью и разными критериями успеха. Смешение этих режимов — когда профессионал работает в стиле «поднятия пола» на задаче, которая требует «поднятия потолка» — и есть корень большинства инцидентов с AI-сгенерированным кодом в проде.
Если ты воспринимаешь agentic engineering как «vibe coding, но для профессионалов» — ты упускаешь суть. Это разные практики с разными обязательными шагами. Vibe coding можно начать без спецификации. Agentic engineering без спецификации, тестов и ревью — это vibe coding под чужим именем, и он несёт те же риски, только с более высокой ставкой.
Таблица ниже — рабочий инструмент, а не философия: перед началом задачи с CC реально стоит спросить себя «в каком я сейчас режиме» и свериться со столбцом.
| Ось | Vibe coding | Agentic engineering |
|---|---|---|
| Цель | Поднять пол — дать доступ тем, кто не пишет код | Поднять потолок — увеличить throughput профессионала |
| Кто использует | Новичок, не-разработчик, идея-первым основатель | Инженер, который отвечает за качество и последствия |
| Ответственность | Формально та же — но часто не осознаётся | Явная и принятая: ты подписываешься под результатом |
| Чтение кода | Минимальное или отсутствует | Обязательное — код читают, хотя пишет его агент |
| Роль человека | Автор идеи, наблюдатель результата | Oversight — 99% времени не пишешь код напрямую, а оркестрируешь агентов и проверяешь их работу |
| Риск при ошибке | Низкий — прототип, демо, обучение, легко откатить | Высокий — прод, пользователи, деньги, данные, уязвимости |
Разделение «пол vs потолок» превращается в практическое правило выбора режима под задачу. Ошибка — не в самом vibe coding, а в применении его там, где нужен другой режим.
- Проверка идеи стартапа за вечер
- Личные скрипты и утилиты для себя
- Обучение — понять как работает технология через эксперимент
- Хакатоны, демо, one-off визуализации
- Нет пользователей, нет реальных данных, нет денег на кону
- Код с доступом к реальным пользовательским данным
- Всё, что касается аутентификации, платежей, прав доступа
- Сервисы с внешним периметром — публичные API, формы ввода
- Код, который переживёт тебя в команде — его будут менять другие
- Любая ситуация, где цена отката ошибки высокая
Практический тест на переключение режима: если ошибка в этом коде может стоить денег, данных пользователей или репутации — ты уже не в vibe coding, независимо от того, как ты формулировал промпт.
По мысли Karpathy, переход от vibe coding к agentic engineering требует роста в четырёх направлениях одновременно: лучше спецификации, лучше тесты, лучше инфраструктура и лучше суждение (judgment) о том, где агенту доверять, а где — нет. Ни один инструмент не заменяет это автоматически.
Контраст в промптах — та же задача, два режима:
# VIBE CODING (для прототипа — нормально)
"Добавь эндпоинт для смены пароля пользователя"
# AGENTIC ENGINEERING (для продакшн-сервиса — обязательно)
"""
Задача: эндпоинт смены пароля для продакшн API.
Спецификация:
- POST /api/users/{id}/password
- Требует текущий пароль для подтверждения (re-auth)
- Новый пароль: минимум 12 символов, проверка через zxcvbn
- Инвалидировать все текущие сессии кроме текущей после смены
- Rate limit: не более 5 попыток в час на пользователя
- Логировать факт смены (без самого пароля) в audit log
Тесты которые должны пройти (напиши тесты первыми):
- Успешная смена с верным текущим паролем
- Отказ при неверном текущем пароле (401, без утечки в тексте ошибки)
- Отказ при слабом новом пароле с понятным сообщением
- Все остальные сессии становятся невалидными
- Rate limit блокирует 6-ю попытку в течение часа
- SQL-инъекция и XSS в поле пароля не проходят как валидный ввод
После реализации: покажи план изменений и жди подтверждения
перед применением к коду. Не удаляй существующие тесты
аутентификации.
"""
Модель для второго промпта — claude-sonnet-5 с Plan Mode: агент показывает план файлов и изменений до выполнения, а тесты пишутся до реализации, чтобы у агента не было соблазна подогнать код под удобный, а не правильный результат.
Разница между двумя промптами выше — не «один быстрее другого». Первый промпт делегирует агенту все решения о безопасности неявно, и агент либо угадает твои ожидания, либо нет. Второй промпт превращает неявные ожидания в явные проверяемые критерии — именно это Karpathy имеет в виду под «лучше specs, лучше тесты»: дисциплина сдвигается на вход процесса, а не остаётся вычиткой на выходе.
Переход — не единовременное решение «теперь я серьёзный инженер», а постепенное наращивание дисциплины по мере роста ставок задачи. Ниже — как это выглядит на практике при работе с CC.
Пропустить шаг 2 — не остановиться и не задать вопрос явно. Прототип тихо становится частью продакшена, потому что «уже работает же». Именно здесь возникают уязвимости, которые потом описывают как «AI написал небезопасный код» — хотя на деле никто не менял режим работы вместе с изменением ставок.
Ресурсы Andrej Karpathy
| Ресурс | Тема | Почему читать |
|---|---|---|
| karpathy.ai | Личный сайт, эссе и проекты | Первоисточник идей об AI-разработке от их автора |
| @karpathy | Мысли в реальном времени | Здесь впервые прозвучал термин «vibe coding» и последующие уточнения |