AI-инжиниринг

Как устроены AI coding assistants: Copilot, Cursor, Claude Code изнутри

Цели урока

  • Понять архитектуру Copilot: FIM, context gathering, ghost text pipeline
  • Разобрать подход Cursor: codebase indexing, semantic search, Apply Model
  • Изучить agentic loop Claude Code: tool use, self-correction, terminal integration
  • Освоить компоненты для создания собственного code assistant: LSP + embeddings + LLM
  • Оценить эволюцию AI pair programming и изменение роли разработчика

GitHub Copilot принят на работу в 2022 как "autocomplete на стероидах". В 2024 Cursor начал писать целые функции, делать refactoring, объяснять код. Разница в подходе: Copilot дополняет, Cursor агентит. И рынок это заметил - USD 400M ARR за 2 года. 92% разработчиков уже используют AI coding assistants (GitHub Survey). Но большинство - как чёрный ящик. Понимание архитектуры изнутри - разница между "AI иногда помогает" и "AI ускоряет в 5-10 раз".

  • GitHub Copilot - 1.8M платных подписчиков, RLHF на обратной связи разработчиков, FIM-модель Codex специально дообучена на GitHub-репозиториях
  • Cursor - 400M ARR за 2 года, fork VS Code с глубокой AI-интеграцией, vector index кодовой базы + Apply Model для multi-file edits
  • Claude Code - agentic assistant в терминале, agentic loop с self-correction через tsc/npm test, решает задачи уровня Junior-Mid разработчика автономно
  • Amazon CodeWhisperer, Tabnine, Codeium - альтернативные code assistants; DeepSeek Coder и StarCoder - open-source FIM-модели

От IntelliSense до агентов

**2001**: Microsoft IntelliSense в Visual Studio - первый умный автокомплит. **2018**: TabNine - первый ML-based completion, маленькая локальная модель. **2021**: GitHub Copilot в beta, Codex (GPT-3 fine-tuned на коде) - переломный момент. **2022**: Copilot GA, 1M пользователей за 2 месяца. **2023**: Cursor - fork VS Code с codebase indexing, multi-file editing; появление Apply Model концепции. **2024**: Claude Code, Devin - agentic loop; агенты начинают решать задачи уровня junior-разработчика автономно. **2025**: 92% разработчиков используют AI assistants, USD 400M ARR у Cursor за 2 года.

Предварительные знания

  • RAG: Retrieval-Augmented Generation from Theory to Implementation
  • AI Agents: ReAct, Planning, Memory, Observe-Think-Act Loop

GitHub Copilot: context gathering, FIM, ghost text

GitHub Copilot появился в 2022 как "autocomplete на стероидах" - и рынок отнёсся скептически. Автодополнение кода было и раньше: IntelliSense, TabNine. Но Copilot сделал ставку на **Fill-in-the-Middle (FIM)** - формат промпта, при котором модель видит код и до, и после курсора, и генерирует то, что должно быть посередине. Это не просто "следующая строка". Это предсказание с пониманием намерения.

Весь pipeline укладывается в 200-500 мс: собрать контекст из открытых вкладок, сформировать FIM-промпт, отправить в модель (Codex, потом GPT-4), отранжировать варианты, показать ghost text. Debounce на 50-100 мс после каждого нажатия клавиши - иначе API-запросы пойдут лавиной. Codex специально дообучался на GitHub-репозиториях с RLHF на обратной связи разработчиков - именно это сделало suggestions релевантными, а не случайными.

  • **Debounce** - ожидание 50-100мс после последнего нажатия, чтобы не спамить API
  • **Context gathering** - сбор prefix/suffix из текущего файла + snippets из открытых вкладок
  • **Prompt building** - формирование FIM-промпта с контекстом (до ~8K токенов)
  • **Model call** - запрос к модели с low temperature (0.0-0.2) для детерминированных предложений
  • **Ranking** - несколько вариантов ранжируются по вероятности и длине
  • **Ghost text** - лучший вариант показывается серым текстом. Tab - принять

**FIM-модели обучены специально** на формате prefix-suffix-middle. Обычная chat-модель не умеет эффективно "заполнять дыру" в коде. Codex, StarCoder, DeepSeek Coder - все поддерживают FIM.

Что такое Fill-in-the-Middle (FIM) в контексте code completion?

Cursor: codebase indexing, multi-file edits, apply model

В 2024 году Cursor начал делать то, что Copilot не мог в принципе: писать целые функции, проводить рефакторинг, объяснять чужой код. Разница в подходе принципиальная - Copilot **дополняет**, Cursor **агентит**. И рынок это заметил: USD 400M ARR за 2 года, fork VS Code, который используется в Google, Stripe, Shopify.

Ключевая инновация - **codebase indexing**: при открытии проекта Cursor разбивает все файлы на chunks (~50-100 строк), делает embedding каждого через text-embedding-3-small (1536 dim), хранит локально. Когда разработчик пишет "добавь валидацию email в UserService" - Cursor делает semantic search по этому индексу и находит нужные файлы из тысяч, даже если они не открыты. Это RAG поверх кодовой базы, только реализованный прямо в IDE.

**Apply Model** - отдельная инновация Cursor. Основная LLM (Claude или GPT-4) генерирует описание изменений в формате diff, а маленькая fine-tuned модель применяет эти изменения к реальному файлу. Это решает точную проблему: большие модели плохо работают с line numbers и не хотят генерировать весь файл целиком - но отлично описывают *что* и *где* изменить.

АспектCopilotCursor
КонтекстОткрытые вкладки (~8K токенов)Весь проект через embeddings (~100K+ токенов)
Основная задачаInline completion (следующая строка)Multi-file editing (рефакторинг)
МодельCodex/GPT-4 (FIM)Claude/GPT-4 + Apply Model
ИндексацияНет (runtime context)Vector index всей кодовой базы
UXGhost text (Tab)Chat + inline diff + multi-file apply

Зачем Cursor индексирует кодовую базу в embeddings?

Claude Code: agentic loop, tool use, terminal integration

Claude Code - принципиально другой подход. Не IDE-плагин, а **автономный agent в терминале**. Получает задачу, сам исследует проект (Read, Grep, Glob), сам редактирует файлы (Edit, Write), сам запускает команды (Bash). Agentic loop: думает → действует → наблюдает результат → думает снова. Это не помощник - это junior-разработчик, который не устаёт.

Cursor нужен векторный индекс, потому что работает в IDE с фиксированным контекстом. Claude Code не нуждается в предварительном индексировании: агент исследует проект динамически - Glob → Read → Grep → понимание структуры. Как опытный разработчик, открывший незнакомый репозиторий. Ключевое - **self-correction**: после каждого изменения агент запускает `tsc --noEmit` или `npm test`, видит ошибки и исправляет их в следующей итерации. Без этого loop coding assistants были бы бесполезны.

Tool Claude CodeНазначениеАналог в работе разработчика
ReadЧтение файлаОткрыть файл в IDE
EditТочечная замена строк в файлеCtrl+H - найти и заменить
WriteСоздание нового файлаCtrl+N - новый файл
GlobПоиск файлов по паттернуCtrl+P - find file
GrepПоиск текста в файлахCtrl+Shift+F - search in project
BashВыполнение команд в терминалеTerminal - npm test, git commit

**Agentic подход масштабируется на сложные задачи.** Copilot дописывает строку. Cursor редактирует файл. Claude Code может выполнить задачу из 20 шагов: прочитать 10 файлов, создать 3 новых, отредактировать 5 существующих, запустить тесты и исправить ошибки - всё за один промпт.

В чём принципиальное отличие agentic подхода Claude Code от completion-подхода Copilot?

Архитектура собственного code assistant: LSP + embeddings + LLM

Понимание архитектуры Copilot, Cursor и Claude Code позволяет строить собственные code assistants для специфических задач: автокомплит для внутреннего фреймворка, code reviewer, генератор тестов. Основные компоненты: **LSP** для понимания кода, **embeddings** для retrieval, **LLM** для генерации.

LSP (Language Server Protocol) - это не просто "подсветка синтаксиса". Это полная семантика кода в реальном времени: типы, интерфейсы, импорты, ошибки компиляции - ещё до того, как файл сохранён. Embeddings находят *похожий* код по смыслу. LSP знает *точные* типы в текущем scope. Вместе - это контекст, от которого LLM генерирует корректный TypeScript, а не правдоподобный.

  • **LSP (Language Server Protocol)** - типы, symbols, go-to-definition, diagnostics. Бесплатная семантика кода
  • **Embedding Index** - векторная БД для semantic search по кодовой базе. ChromaDB, Qdrant или даже in-memory
  • **LLM API** - OpenAI, Anthropic или локальная модель (DeepSeek Coder, CodeLlama)
  • **Context Engine** - собирает данные из LSP + Index, формирует prompt с учётом token budget
  • **IDE Extension** - VS Code extension API для ghost text, inline completions, chat panel

**Token budget - главное ограничение.** Контекста всегда больше, чем влезает в context window. Приоритизация критична: текущий файл > импорты > LSP symbols > retrieved chunks. Каждый лишний фрагмент вытесняет что-то полезное.

Зачем code assistant использует LSP (Language Server Protocol) помимо embeddings?

Эволюция AI pair programming: что меняется для разработчиков

За 3 года (2022-2025) AI coding assistants прошли путь от автокомплита до автономных агентов. Gen 1 - Copilot, дописывает строку. Gen 2 - Cursor, редактирует файлы по описанию. Gen 3 - Claude Code, Devin - автономно исследуют проект, пишут тесты, исправляют ошибки. Каждый этап смещает роль разработчика: от "пишу каждую строку" к "описываю намерение и проверяю результат".

ПоколениеПродуктВозможностиРоль разработчика
Gen 1 (2022)CopilotInline completion, одна строка/функцияПишу код, AI дописывает
Gen 2 (2023)Cursor, CodyMulti-file edit, codebase-aware chatОписываю задачу, AI редактирует файлы
Gen 3 (2024-25)Claude Code, DevinAgentic: исследование, планирование, self-correctionЗадаю направление, AI решает задачу
Gen 4 (2025+)?Полный цикл: от issue до deployed PRРевьюю, архитектурю, приоритизирую

**Что становится важнее:** навыки чтения и review кода (проверять AI-output), архитектурное мышление (AI хорош в тактике, плох в стратегии), промпт-инженерия (точное описание задачи), системный дизайн (разбиение на компоненты для AI).

  • **Code review** - проверка AI-generated кода становится основной задачей. Нужно видеть edge cases, security issues, performance problems
  • **Архитектура** - AI отлично пишет код по описанию, но не принимает архитектурных решений. Проектирование системы - зона разработчика
  • **Промпт-инженерия для кода** - умение точно сформулировать задачу даёт 10x разницу в качестве AI-output
  • **Debugging** - AI ускоряет написание, но сложные баги по-прежнему требуют глубокого понимания системы
  • **Domain knowledge** - AI знает общие паттерны, но не знает бизнес-логику конкретного продукта

**AI не заменяет 10x-разработчика, AI делает обычного разработчика ближе к 10x.** Но только при условии, что разработчик понимает что AI генерирует, и может оценить качество результата. "Vibe coding" без понимания - путь к техническому долгу.

Какой навык становится НАИБОЛЕЕ критичным с ростом AI coding assistants?

AI coding assistant = автозамена разработчика

AI assistant - инструмент умножения продуктивности. 55% принятых suggestions требуют правки; архитектурные решения по-прежнему остаются за человеком

GitHub исследование 2024: разработчики принимают ~30% suggestions без изменений, ~55% принимают с правками, ~15% отклоняют. AI генерирует синтаксически корректный код, но не знает контекст бизнес-логики, не видит security edge cases, не принимает архитектурных решений. "Vibe coding" без code review - прямой путь к техническому долгу. Правильная аналогия: умный junior на каждое нажатие Tab, которого всё равно нужно проверять.

Итоги

  • Copilot: FIM (Fill-in-the-Middle) + context из открытых вкладок + RLHF на feedback разработчиков → inline ghost text за 200-500мс
  • Cursor: codebase indexing в embeddings (text-embedding-3-small, 1536 dim) + semantic retrieval + Apply Model для multi-file edits
  • Claude Code: agentic loop (think → act → observe → correct) с tools: Read, Edit, Grep, Bash; self-correction через tsc/tests
  • Собственный assistant: LSP (точные типы, символы) + Embedding Index (semantic retrieval) + LLM + Context Engine
  • Роль разработчика эволюционирует от "пишу код" к "задаю направление, ревьюю, архитектурю"
  • 55% принятых suggestions требуют правки - AI умножает продуктивность, не заменяет понимание

Вопросы для размышления

  • Почему Cursor использует Apply Model отдельно от основной LLM? Что конкретно эта архитектура решает?
  • В чём разница между codebase indexing у Cursor и динамическим исследованием у Claude Code? Когда каждый подход работает лучше?
  • Если 55% принятых suggestions требуют правок - означает ли это, что AI assistants неэффективны, или это нормально для инструмента умножения?

Что дальше

AI coding assistants - полуавтономные. Следующий шаг - полностью автономные агенты (Devin, SWE-Agent), которые решают задачи от issue до PR без участия разработчика.

  • Autonomous Agents — Devin, SWE-Agent, OpenHands - AI, который пишет код от задачи до pull request автономно
  • MCP (Model Context Protocol) — Стандартный протокол, через который AI assistants подключаются к инструментам

Связанные уроки

  • aie-12-rag-fundamentals — Ассистенты достают код-контекст через RAG
  • aie-17-agent-fundamentals — Coding-ассистенты - агенты, использующие инструменты
  • aie-45-mcp-protocol — Ассистенты подключают инструменты через MCP
  • ml-52-search-ranking — Ранжируем релевантные сниппеты для окна контекста
  • aie-47-autonomous-agents — Ассистенты эволюционируют к автономному кодингу
  • ml-01
Как устроены AI coding assistants: Copilot, Cursor, Claude Code изнутри

0

1

Войти