База от вайбкодера
Сейчас почти любой разработчик умеет открыть ChatGPT, Cursor или Claude и попросить написать код. Но если MCP, RAG, Agent, Rules и Skills для тебя просто набор слов из AI-твиттера, значит, инструментом ты пользуешься, а как он устроен — не понимаешь.
Для разработчика это слабая позиция.
———
LLM
GPT, Claude, Gemini, DeepSeek — это LLM.
Если сильно упростить, модель делает одну вещь: предсказывает следующий токен по тому, что уже есть в контексте.
Получила SELECT * FROM users WHERE — и пытается понять, что вероятнее всего пойдёт дальше. Потом следующий токен. Потом ещё один. Так и строится ответ.
Отсюда главное: LLM — не компилятор и не база данных с готовыми ответами. Она каждый раз генерирует продолжение.
Поэтому один и тот же запрос может дать разные результаты. Фраза «вчера она этот код написала правильно» примерно такая же полезная, как «вчера race condition не случился».
———
Токены и контекст
LLM работает не со словами, а с токенами — кусками текста.
В контекст помещается всё, что модель должна учитывать: запрос, история, код, документация, результаты инструментов.
Контекст можно воспринимать как рабочую память модели. Если у тебя монорепа на миллионы строк, модель не знает весь проект. Она знает только то, что ей дали.
И качество ответа часто упирается не в «слабую модель», а в плохой контекст.
———
Prompt
Промпт — это вход модели. Для разработчика проще воспринимать его как контракт.
Написал: Сделай авторизацию получил что-нибудь уровня:
func DoStuff(any interface{}) interface{}
Формально задача выполнена. Пользы мало.
Чем точнее задача, ограничения и ожидаемый результат, тем меньше пространства для фантазии.
Zero-shot, one-shot, few-shot — способы дать модели больше контекста.
———
Function Calling / Tool Use
Сама LLM не умеет сходить в PostgreSQL, запустить go test или открыть файл. Она генерирует текст.
Чтобы модель могла действовать во внешнем мире, ей дают инструменты.
Модель формирует вызов функции, обычный код выполняет его и возвращает результат обратно.
Если совсем приземлённо — это RPC, инициатором которого стала LLM.
———
AI Agent
Теперь добавим цикл:
понять задачу → поменять код → запустить тесты → увидеть ошибку → исправить → повторить
Получится агент.
То есть за словом «AI Agent» обычно нет отдельной магии. Там LLM, контекст, инструменты и управляющий цикл.
Раньше мы писали управляющую логику сами. Теперь часть решений принимает вероятностная модель.
И это уже совсем другой набор граблей.
———
MCP
Когда инструментов много, появляется знакомая проблема: у GitHub свой API, у базы свой, у файловой системы свой интерфейс.
MCP стандартизирует подключение таких инструментов к LLM-приложениям.
Аналогия с USB простая: один стандарт вместо пачки интеграций.
———
Rules и Skills
Rules — постоянные правила проекта: как писать код, что не трогать, какие тесты запускать.
По смыслу это .editorconfig для поведения модели.
Skills — инструкции под конкретные задачи: code review, деплой, миграции PostgreSQL.
Rules — конфиг. Skills — плагины.
———
RAG
Допустим, у тебя огромная кодовая база. Можно попытаться передать её модели целиком.
Но это примерно как лечить медленный запрос через SELECT *, а потом докинуть RAM.
RAG работает иначе:
поиск → контекст → генерация
Система находит релевантные данные, добавляет их в контекст, и только потом LLM строит ответ.
Вместо всей монорепы модель получает несколько файлов по задаче.
———
Если собрать всё вместе:
LLM генерирует текст. Контекст определяет, что она видит. Промпт задаёт задачу. Tools дают доступ к внешнему миру. MCP стандартизирует инструменты. Rules и Skills управляют поведением. RAG подтягивает данные. Agent связывает всё это в цикл.
После этого большая часть «AI-магии» исчезает.
Остаётся обычная программная система. Просто один из её компонентов принимает вероятностные решения.
И если ты этого не понимаешь, то вайбкодишь не ты.
Вайбкодят тебя.