Agentic Coding
Как AI-агенты автономно пишут, тестируют и итерируют код
Проблема: Разработчики тратят до 60% времени на рутинный код: boilerplate, тесты, рефакторинг, документацию. AI-агенты могут автономно писать, тестировать и исправлять код — но как эффективно с ними работать?
Решение: Твой неутомимый AI-напарник
Agentic coding выходит за рамки простой генерации кода — вместо того чтобы просить у модели один сниппет и вставлять его руками, ты отдаёшь цель автономному агенту, который планирует, пишет, запускает и исправляет код в цикле. Популярное название — «vibe coding»: ты описываешь намерение обычными словами, а агент сам решает, как это реализовать. Ключевой ингредиент — agent loop (цикл агента): модель вызывает инструменты (читает файлы, ищет по репозиторию, запускает тесты, выполняет shell-команду), видит реальный результат и подаёт его на вход следующему шагу. Именно эта обратная связь отличает агента от чат-бота: чат-бот угадывает за один проход, а агент опирается на то, что произошло на самом деле.
Как работает цикл
Типичная итерация выглядит так: агент читает нужные части твоей кодовой базы, чтобы собрать контекст, набрасывает план, пишет или правит код, а затем запускает тесты или линтер как вызов инструмента. Если тест падает, агент читает стектрейс, рассуждает о причине и патчит код — и так до зелёного прогона или условия остановки. Поскольку цикл опирается на конкретный вывод инструментов, а не на воображение модели, он восстанавливается после собственных ошибок куда лучше, чем промпт за один проход. Поэтому хороший контекст проекта важнее красивых формулировок: понятный CLAUDE.md, точные типы и быстрая команда тестов дают агенту сигналы, по которым он сам себя исправляет.
Когда использовать — и подвохи
Бери agentic coding для понятных, проверяемых задач: каркас нового модуля, миграция API, генерация тестов, механический рефакторинг, где правильность подтверждает набор тестов. Не отдавай ему размытые архитектурные решения с высокой ценой ошибки, которые нечем проверить. Главный подвох — галлюцинации(hallucination): агент выдаёт правдоподобный код, который импортирует несуществующие функции, зовёт устаревшие API или тихо открывает дыру в безопасности — и звучит при этом абсолютно уверенно. Разберём пример: ты просишь агента «добавь пагинацию в эндпоинт пользователей». Хороший прогон читает существующий роут, повторяет паттерн query-builder проекта, добавляет тест на границы страниц, запускает его, ловит ошибку на последней странице (off-by-one) и чинит арифметику limit/offset — полностью автономно. Твоя роль смещается от набора кода к написанию брифа и критическому ревью диффа.
Представьте это как неутомимого джуниор-разработчика:
- 1. Чётко описываем намерение: Что сделать, ограничения, стиль кода, требования к тестам — как брифинг новому сотруднику
- 2. Агент планирует подход: Читает кодовую базу, находит паттерны, предлагает план до написания кода
- 3. Агент пишет и тестирует: Пишет код, запускает тесты, читает ошибки, исправляет — автономный цикл plan-code-test-fix
- 4. Человек ревьюит и итерирует: Разработчик проверяет результат, даёт фидбек, итерирует — AI реализует, человек гарантирует качество
Где это используется?
- Быстрое прототипирование: От идеи до работающего MVP за часы, а не дни — агент создаёт каркас, связывает и тестирует всё
- Генерация тестов: AI пишет unit-, integration- и e2e-тесты на основе существующего кода и паттернов
- Рефакторинг: Агент рефакторит код по паттернам проекта, запуская тесты после каждого изменения
- Code review и документация: AI находит баги, предлагает улучшения и пишет документацию по коду
- Подвохи: слепые зоны: Агенты могут писать правдоподобный, но некорректный код: несуществующие импорты, устаревшие API, дыры в безопасности, over-engineering. Всегда ревьюьте вывод агента критически — он выглядит уверенно, даже когда ошибается
Интересный факт: По отраслевым отчётам, некоторые компании уже пишут более 50% кода с помощью AI-агентов. Андрей Карпатый ввёл термин "vibe coding" в 2025 — кодинг через описание намерения, когда AI занимается реализацией. Ключевой инсайт: качество CLAUDE.md и rules-файлов важнее качества отдельных промптов.
Попробуйте сами!
Используй интерактивную визуализацию ниже, чтобы изучить цикл agentic coding, сравнить качество промптов и увидеть, как слои контекста влияют на результат.
Ключевая идея
- 1. Agentic coding — это не "загадай и получи код." Это сотрудничество: чёткое намерение + автономность агента + ревью человеком.
- 2. CLAUDE.md и rules-файлы — ваша самая рентабельная инвестиция — они улучшают каждое будущее взаимодействие.
- 3. Агент пишет код быстро, но ревью обязательно. Незаметно неправильный код от уверенного агента опаснее, чем очевидно неправильный.
Частые вопросы
Чем agentic coding отличается от генерации кода?
Генерация кода создаёт код по одному промпту. Agentic coding использует автономный цикл: агент планирует, пишет код, запускает тесты, читает ошибки и исправляет их итеративно — аналогично тому, как работает разработчик, но автоматически.
Когда стоит использовать agentic coding, а когда писать код самому?
Agentic coding отлично подходит для boilerplate, тестов, рефакторинга и чётко определённых задач. Пишите код сами для новых архитектурных решений, security-критичной логики и креативных задач, где необходим человеческий опыт.
Как CLAUDE.md и rules-файлы улучшают результаты agentic coding?
CLAUDE.md и rules-файлы дают агенту постоянный контекст о проекте: соглашения по коду, архитектурные паттерны, ограничения. Они работают как онбординг-документация для AI-агента, значительно повышая качество и консистентность кода.
Попробуй сам
Интерактивное демо этой техники
Поручи AI-агенту создать API-эндпоинт для поиска пользователей с пагинацией и фильтрами
app.get("/users", (req, res) => { const users = db.query("SELECT * FROM users WHERE name LIKE '%" + req.query.q + "%'"); res.json(users); });
import { NextRequest, NextResponse } from "next/server";
import { z } from "zod";
import { prisma } from "@/lib/prisma";
import { rateLimit } from "@/lib/rate-limit";
const searchSchema = z.object({
q: z.string().max(100).optional().default(""),
role: z.enum(["admin", "user", "editor"]).optional(),
page: z.coerce.number().int().min(1).default(1),
limit: z.coerce.number().int().min(1).max(100).default(20),
});
export async function GET(req: NextRequest) {
const ip = req.headers.get("x-forwarded-for") ?? "unknown";
const limited = await rateLimit(ip, 30, 60);
if (limited) {
return NextResponse.json(
{ error: "Rate limit exceeded" },
{ status: 429 }
);
}
const parsed = searchSchema.safeParse(
Object.fromEntries(req.nextUrl.searchParams)
);
if (!parsed.success) {
return NextResponse.json(
{ error: parsed.error.flatten() },
{ status: 400 }
);
}
const { q, role, page, limit } = parsed.data;
const where = {
...(q && {
OR: [
{ name: { contains: q, mode: "insensitive" as const } },
{ email: { contains: q, mode: "insensitive" as const } },
],
}),
...(role && { role }),
};
const [data, total] = await Promise.all([
prisma.user.findMany({
where,
skip: (page - 1) * limit,
take: limit,
select: { id: true, name: true, email: true, role: true },
}),
prisma.user.count({ where }),
]);
return NextResponse.json({
data,
pagination: { page, limit, total, totalPages: Math.ceil(total / limit) },
});
}
Размытая инструкция даёт код с SQL-инъекцией и без пагинации. Детальный промпт со ссылкой на паттерн проекта, Zod-валидацией и списком тестов даёт production-ready эндпоинт, который соответствует архитектуре проекта.
Создайте бесплатный аккаунт для решения челленджей
3 челленджей с AI-проверкой для этого урока
Этот урок — часть структурированного курса по LLM.
Мой путь обучения