VIBE CODINGБлок 01 · Основы1.4

УРОК 1.4

AI-агенты

Модель умеет только выдавать текст на базе входящего текста. По пути там еще идет преобразование в токены, но это

КАРТА УРОКА

МодельToolРезультат

Теория: AI-агенты

Модель умеет только выдавать текст на базе входящего текста. По пути там еще идет преобразование в токены, но это ничего принципиально не меняет. А как тогда работают действия (тулы)? Как модель ищет в интернете, работает с файлами и выполняет команды через API сервисов? Этим занимается агент. Он добавляет к модели обвязку (харнес) из разных инструментов, которые умеют делать что-то во внешней среде.

Агент — это обвязка вокруг модели, которая дает ей доступ к внешнему миру через набор инструментов (tools). Чтение файла, запуск команды в терминале, поиск по проекту, открытие страницы в браузере или обращение к внешним сервисам. Каждый такой инструмент — это маленькая программная функция, которую агент может вызвать, получить результат и передать его обратно модели.

Claude Code, Cursor, Codex, OpenCode, Copilot CLI — все это агенты. Внутри у них могут быть разные модели и разные наборы инструментов, но концептуально это одно и то же. Модель плюс tools плюс цикл, который их связывает.

Как агент работает без участия человека

Это самое интересное место. Представьте, что у вас появился очень исполнительный помощник, которому не надо стоять над душой. Вы говорите ему "сделай страницу с формой записи и выложи в интернет", и дальше он крутится сам. Открывает файлы, пишет код, запускает результат в браузере. Если что-то ломается, сам разбирается почему и чинит. И только когда все готово, говорит "посмотри, вот ссылка".

Эта самостоятельность работает за счет цикла. Агент держит задачу в памяти, смотрит на текущее состояние и оценивает, какой следующий шаг сделать. Берет инструмент, видит результат, делает следующий шаг. И так пока задача не закрыта или пока ему действительно не понадобится ваш совет.

ЦИКЛ РАБОТЫ АГЕНТА

Агент думает, действует и проверяет результат

Запрос пользователя
01

Модель думает

02

Нужен tool?

Да / Нет
03

Вызов tool

Читает файл, запускает команду

НетОтвет пользователю
РезультатВозвращается к модели для следующего шага

Работает это так: агент отправляет в LLM не только ваш вопрос, но и скрытый системный промпт, где указано, как LLM может запрашивать от агента выполнение различных действий, от открытия файлов и поиска до бронирования билетов.

Поэтому когда агенту задается вопрос, он сначала анализирует, что хочет LLM: узнать дополнительную информацию, выполнить какие-то действия или ответить пользователю.

Доступ и разрешения

Когда агент действует сам, появляется один важный вопрос. Что ему вообще можно делать без подтверждения? Записать файл в проект, скорее всего, можно. Удалить директорию уже хочется проверить вручную. Перевести деньги без согласия владельца вообще не обсуждается.

У Claude Code есть несколько уровней доверия. По умолчанию агент перед каждым потенциально опасным действием спрашивает разрешение в духе "хочу запустить такую команду, согласны?". Безопасные операции (чтение файла, поиск в проекте) выполняются без вопросов. Можно ослабить контроль и сказать "доверяю всему в этой папке", или включить максимальный авторежим, когда хочется, чтобы агент работал без остановок. Уровни переключаются на ходу.

Похожая логика и в коннекторах. Подключенный MCP-сервер видит и может изменять данные в вашем CRM или складе. Поэтому ставить стоит только проверенные серверы. Например, официальные коннекторы из каталога Claude или с понятным автором. Случайный MCP из интернета сродни расширению браузера от неизвестного разработчика.

Почему агенты делают вайбкодинг возможным

Без агентов работа с ИИ выглядела бы так. Открываете chat.openai.com или claude.ai, описываете задачу, получаете кусок кода, копируете в редактор, запускаете, ловите ошибку, возвращаетесь в чат, описываете ошибку, копируете новый кусок. Туда-сюда по двадцать раз на одну задачу. Так раньше и работали — до 2024 года это был основной режим.

Теперь это делает агент без нашего участия — он находится в той же среде, что и ваш код. Видит файлы, может запустить команду, прочитать вывод, понять ошибку и исправить ее. Когда вы пишете "сделай мне лендинг с формой записи", агент имеет доступ сразу ко всему необходимому, причем не только для написания кода, но и для проверки результата. Например, он может открыть форму в браузере и проверить, что форма работает. Если не работает, он ее поправит и дойдет до точки, когда остановится и доложит о результате.

Сами модели умели писать код еще в 2023 году. Что появилось позже — это надежный цикл "придумал, попробовал, проверил, поправил", которым агент управляет автономно.

Коннекторы (MCP)

Базовый набор инструментов агента закрывает файлы и терминал. В реальной работе этого мало. Хочется, чтобы агент посмотрел сделку в amoCRM, поднял остатки из МойСклад, обновил блок на лендинге Tilda, посмотрел задачи в Яндекс Трекере. Каждый такой сервис живет в интернете со своим API, и для каждого нужен отдельный мост к агенту.

КОННЕКТОРЫ MCP

Один общий протокол между агентом и сервисами

Агент
MCP · общий протокол

amoCRM

MCP-server

amocrm.ru
API

Я. Трекер

MCP-server

tracker API

МойСклад

MCP-server

moysklad.ru
API

Tilda

MCP-server

tilda.cc
API

Раньше эти мосты собирали под каждую пару "агент плюс сервис" вручную. Cursor дружил с одним списком сервисов, Claude Code с другим, Copilot с третьим. Авторы сервисов писали интеграцию под каждый агент отдельно и быстро уставали. В конце 2024 года Anthropic предложили стандарт MCP (Model Context Protocol). Это общий протокол, по которому агенты разговаривают с внешними сервисами. Сервис делает MCP-сервер один раз, и его подключают все совместимые агенты.

Каждый коннектор приносит свой набор команд. Подключили amoCRM, и появились "найти сделку по контакту", "обновить статус сделки", "поставить задачу менеджеру". Подключили МойСклад, и появились "найти товар по артикулу", "посмотреть

остатки на складе", "создать заказ покупателя". Агент видит эти команды в общем списке инструментов и вызывает их там, где они уместны.

Посмотрим, как это выглядит в разговоре. Вот что вы пишете Claude.

Забери новые заявки с лендинга курса в Tilda и доведи их до сделок в amoCRM. По каждой заявке поставь менеджеру задачу перезвонить сегодня.

Дальше агент действует сам.

1. Получить новые заявки с лендинга → MCP: tilda.GetLeads("course-LP") ← [ { name: "Анна Петрова", phone: "+7 999 ...", email: "anna@...", time: "сегодня 11:42" } ]

2. Проверить, есть ли контакт в CRM → MCP: amocrm.FindContact("anna@...") ← null (новый контакт)

3. Создать контакт и сделку → MCP: amocrm.CreateContact({ name, phone, email }) → MCP: amocrm.CreateDeal({ contact_id, pipeline: "Курс", stage: "Новый лид" }) ← deal_id: 18472

4. Поставить задачу менеджеру

→ MCP: amocrm.CreateTask(deal_id, "Перезвонить сегодня до 18:00")

5. Отметить в Я. Трекере → MCP: yandex-tracker.CreateComment("MARKETING-12", "Анна Петрова — лид с лендинга, сделка #18472")

Польза в том, что агент работает с реальными данными вашей компании. Модель ничего не достает из памяти и ничего не додумывает по названию. Описание тикета настоящее, сделка в amoCRM содержит всю историю переписки с клиентом, остатки в МойСклад показывают, что лежит на складе прямо сейчас.

Подключаются коннекторы в настройках агента. В Claude.ai это раздел Settings → Connectors. Часть коннекторов встроена сразу, остальные ставятся одной строкой по инструкции автора.

Принцип работы с коннекторами такой. Если у вас есть какой-то сервис, с которым вы хотите взаимодействовать, сначала посмотрите, есть ли официальный коннектор в списке Claude. Если его нет, то поищите в документации вашего сервиса доступ по MCP. Это оно и есть — дальше его можно подключить, следуя инструкции сервиса. Там же в инструкции, как правило, написано, какие возможности дает этот MCP.

Самостоятельная работа

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

Агент в браузере

Установите Claude Chrome Extension (https://www.claude.com/chrome) и войдите в свой аккаунт Claude. Откройте Хабр Карьеру (https://career.habr.com), в поиске введите свою специальность и город, например "маркетолог Москва". Дайте агенту такую задачу.

Собери первые 10 вакансий с этой страницы в таблицу с колонками название, компания, зарплата (если указана), ссылка на вакансию. Дальше зайди в каждую вакансию и добавь колонку "ключевые требования" из трех-четырех пунктов описания.

Не вмешивайтесь, пусть агент сам пролистает страницы и зайдет в карточки.

Агент с подключенным инструментом (Connector / MCP)

В качестве примера возьмем shadcn/ui. Это набор готовых элементов интерфейса (кнопки, формы, таблицы, диалоги, навигация), из которых собирают современные веб-приложения. Без коннектора Claude знает о shadcn только по своей памяти и легко промахивается. Путает названия элементов, использует устаревшие версии или

выдумывает то, чего нет. MCP-коннектор дает Claude актуальный каталог компонентов прямо в момент работы, и интерфейс получается аккуратно и единообразно, без отсебятины.

Откройте Claude Desktop. В разделе Customize → Connectors (https://claude.ai/customize/connectors) найдите shadcn в каталоге встроенных коннекторов и подключите. После этого попросите Claude собрать интерфейс.

Сгенерируй интерфейс калькулятора стоимости услуги. Три поля ввода (количество часов, ставка, скидка %), кнопка "Рассчитать", блок с итоговой суммой. Используй shadcn/ui.

На Linux официального десктоп-клиента нет, выполните задание на компьютере с macOS или Windows.

Кастомный коннектор (GitHub MCP)

Встроенного каталога на все не хватает. У многих сервисов есть свой MCP-сервер, который подключают вручную по URL. Покажем это на GitHub. В каталоге Claude есть плитка «GitHub», но она читать содержимое репозитория не умеет — это про другое. Чтобы агент реально ходил в issues и обсуждения, нужен кастомный GitHub MCP- сервер.

Откройте Claude Desktop, раздел Connectors. Нажмите «Добавить свой коннектор» (Add custom connector), укажите имя GitHub и URL сервера https://api.githubcopilot.com/mcp/ , подтвердите и авторизуйтесь в GitHub в открывшемся окне браузера. Пошаговая инструкция по кастомным коннекторам. После подключения коннектор появится в списке активных. В этом примере считаем, что репозиторий hexlet-vibecoding — это код вашего персонального ассистента, а через issues вы записываете сами себе задачи, которые планируете в нем сделать. Заводить их будем через MCP, чтобы потренироваться управлять внешним сервисом через агента. Дайте агенту такую задачу.

Через подключенный GitHub MCP создайте в репозитории <логин>/hexlet-vibecoding четыре issue с задачами для персонального ассистента. Вот задачи: утренняя сводка с погодой и делами на день; напоминания о днях рождения

близких; быстрые заметки в одну строку; поиск по сохраненным заметкам. Для каждой задачи придумайте понятный заголовок и в описании парой предложений поясните, что нужно сделать. В конце пришлите список созданных issue со ссылками.

На выходе агент через MCP заведет четыре issue прямо в вашем репозитории и пришлет их список со ссылками. Чтобы проверить, откройте в репозитории вкладку Issues: там должны появиться эти четыре задачи и совпадать со списком из чата. Так вы убедитесь, что агент реально работает с внешним сервисом, а не выдумывает результат.

Показать пример списка issue

Агент в режиме Research

В claude.ai в панели инструментов чата (за плюсиком рядом с полем ввода) включите режим Research. В этом режиме агент сам идет по большому числу источников, читает их и собирает развернутый ответ со ссылками. Без явного включения режима обычный чат ограничится одним-двумя поисковыми запросами.

Дайте задачу.

Сравни три популярных российских CRM для малого бизнеса (amoCRM, Bitrix24, RetailCRM) по тарифам, ключевым возможностям, к чему подключаются нативно, на что чаще жалуются пользователи. Сделай итоговую таблицу и короткий вывод, что выбирать под интернет-магазин и что под сервисный бизнес.

Дайте агенту поработать несколько минут, потом проверьте, на какие источники он ссылается и насколько ответ применим к вашему случаю.

Дополнительные материалы

ИИ и нейросети для начинающих

VIBE CODINGБлок 01Урок 1.4