Как устроен Claude изнутри

Не список фич, а объяснение архитектуры: что с чем связано, как данные текут через систему, куда обращается каждый компонент, и какие есть интересные детали под капотом.

01 — Главная идея

Один эндпоинт правит всем

Неважно где ты общаешься с Claude — в браузере на claude.ai, в терминале через Claude Code, в мобильном приложении или через свой код. Под капотом всё идёт в одно место:

// Вся магия происходит здесь:
POST https://api.anthropic.com/v1/messages

// Заголовки:
x-api-key: sk-ant-...         // твой ключ
anthropic-version: 2023-06-01   // версия API
Content-Type: application/json

claude.ai, Claude Code, Cowork, мобильные приложения, Agent SDK — это всё клиенты, которые формируют запрос и шлют его в этот один эндпоинт. Разница только в том, какие инструменты они подключают и как показывают ответ пользователю.

Почему это важно: Всё что ты можешь сделать в claude.ai — ты можешь сделать программно через API. И наоборот. Нет скрытых возможностей "только для сайта". Разница только в UI обёртке.
02 — Путь запроса

Что происходит когда ты отправляешь сообщение

Вот полный путь твоего сообщения от нажатия Enter до получения ответа. Каждый шаг — это отдельный этап обработки внутри Anthropic.

Шаг 1
Сборка контекста
Собирается всё что модель увидит
Что попадает в контекстное окно

Контекстное окно — это всё что модель видит за один запрос. Модель не помнит предыдущие разговоры — каждый раз ей показывают полную картину заново. В окно попадает:

1. System prompt — инструкции для модели. В claude.ai это огромный промпт от Anthropic (~10-15K токенов): правила поведения, стиль, безопасность, user preferences, memory. Если используешь API — пишешь свой.

2. История диалога — все сообщения user и assistant в текущем чате. Каждый новый запрос включает ВСЮ историю. Вот почему длинные чаты тормозят и стоят дороже — каждое сообщение перечитывается заново.

3. Tool definitions — JSON-схемы всех подключённых инструментов (имена, описания, параметры). В claude.ai подключено 30+ инструментов — web_search, web_fetch, визуализация, карты, спорт, погода, Canva, Figma, и все MCP-коннекторы. Это жрёт ~15-50K токенов просто на определения.

4. Файлы и картинки — PDF конвертируется в изображения постранично, картинки кодируются в base64. Всё это добавляется в контекст.

5. Memory — информация из прошлых чатов, сохранённая в userMemories. Вставляется в system prompt.

Размер окна: Opus 4.6 и Sonnet 4.6 — до 1 миллиона токенов (~750K слов, ~1500 страниц текста). Haiku 4.5 — 200K токенов. Всё что не поместилось — модель не увидит.
Шаг 2
Prompt caching
Повторяющийся префикс уже в памяти?
Как работает кэширование

System prompt + tool definitions — это тысячи токенов, которые одинаковые в каждом запросе одного чата. Перечитывать их каждый раз — дорого.

Prompt caching запоминает этот повторяющийся "префикс". Если следующий запрос начинается с тех же токенов — они не обрабатываются заново, а берутся из кэша.

Cache hit = 10% от стандартной цены input-токенов. То есть экономия 90%.

Cache miss = первый запрос платит полную цену + наценку за запись в кэш (1.25x для 5-минутного кэша, 2x для часового).

Когда окупается: Кэш на 5 минут окупается после 1 повторного запроса. Часовой кэш — после 2 запросов. В обычном чате ты делаешь 5-10+ запросов — экономия огромная.
Шаг 3
Инференс модели
Модель думает и генерирует токены
Что происходит внутри модели

Собранный контекст отправляется на GPU-кластер Anthropic. Параметр inference_geo определяет регион (US или EU, по умолчанию — глобальный роутинг).

Extended thinking

Если включено — модель сначала генерирует thinking-блок: внутренние рассуждения, которые пользователь не видит. Это как черновик в голове перед ответом. Улучшает качество на сложных задачах (математика, код, логика). Thinking-токены оплачиваются как output-токены.

Генерация ответа

Модель генерирует токены один за одним. Каждый следующий токен зависит от всех предыдущих + от всего контекстного окна. Если включён streaming — каждый токен отправляется клиенту через SSE (Server-Sent Events) по мере генерации. Вот почему ты видишь как текст "печатается".

Stop reason — как модель останавливается

Модель генерирует пока не произойдёт одно из трёх:

end_turn — модель решила что ответ готов. Финал.

tool_use — модель решила что ей нужен инструмент (погуглить, посчитать, открыть файл). Генерация останавливается, возвращается запрос на вызов инструмента.

max_tokens — упёрлись в лимит output-токенов. Ответ обрезан.

Шаг 4 — ключевой
Агентный цикл (tool_use loop)
Модель вызывает инструменты, получает результат, думает снова
Самый важный механизм в Claude

Это то, что делает Claude не просто чат-ботом, а агентом. Цикл выглядит так:

// Цикл повторяется пока модель не вернёт end_turn:

1. Модель получает контекст, думает
2. Модель решает: "мне нужно погуглить" → stop_reason: tool_use
3. Возвращает: { name: "web_search", input: { query: "..." } }
4. Инструмент исполняется, результат добавляется в контекст
5. Модель снова получает контекст (теперь с результатом поиска)
6. Модель решает: "нужно ещё что-то" → снова tool_use
   ...или "всё, могу ответить" → stop_reason: end_turn

В одном ответе claude.ai модель может сделать 5, 10, 20 таких циклов. Каждый раз весь контекст (с накопленными результатами) отправляется заново. Вот почему сложные запросы с поиском стоят дорого — это много последовательных вызовов API.

Ключевой инсайт: Модель сама решает, какой инструмент вызвать и когда остановиться. Никто не программирует "если вопрос про погоду → вызови weather". Модель читает описания инструментов из контекста и сама выбирает подходящий.
Шаг 5
Финальный ответ
Текст + цитаты + артефакты + файлы
Что возвращается пользователю

Финальный ответ может содержать:

Текст — обычный ответ. Стримится через SSE токен за токеном.

Citations — если был web_search, ответ содержит ссылки на конкретные предложения из источников. Каждая цитата указывает: документ #2, предложения 3-5.

Артефакты — в claude.ai модель может создавать файлы (HTML, React, SVG, Mermaid), которые рендерятся прямо в чате. Это не магия API — это функция фронтенда claude.ai.

Usage — каждый ответ содержит точный подсчёт: сколько input_tokens, output_tokens, cache_creation_tokens, cache_read_tokens было использовано.

03 — Инструменты

Server tools vs Client tools — кто запускает код

Главное разделение в архитектуре инструментов: где исполняется код. Это определяет всё — скорость, стоимость, безопасность, что можно и что нельзя.

Server tools — запускает Anthropic

Модель вызывает, Anthropic исполняет на своих серверах, результат сразу в потоке ответа. Ты вообще не участвуешь.

  • web_search — поиск, 10 результатов, $10/1000 поисков
  • web_fetch — загрузка веб-страницы, без доп. платы
  • code_execution — Python в песочнице
  • tool_search — поиск по каталогу тулов

Тебе не нужно писать код для обработки. Результат приходит автоматически.

Client tools — запускаешь ты

Модель возвращает tool_use блок с именем и аргументами. Ты запускаешь, отправляешь tool_result обратно.

  • bash — shell-команды
  • text_editor — файлы (view, str_replace, create)
  • computer_use — мышь, клавиатура, скриншот
  • Твои кастомные — любой JSON-schema

Ты пишешь код: получил tool_use → выполнил → отправил tool_result → модель продолжает.

Как это выглядит в claude.ai: Когда ты видишь "Searching the web..." — это server tool (web_search). Anthropic сам ищет, результат приходит моментально. А когда в Claude Code ты видишь "Running bash command..." — это client tool. Claude Code (на твоём компьютере) запускает команду и отправляет результат обратно.
04 — MCP

MCP — как Claude подключается к внешнему миру

Model Context Protocol — открытый стандарт, который позволяет подключить Claude к чему угодно: GitHub, Slack, Gmail, Notion, твоя база данных, твой внутренний API. Без написания кастомных инструментов.

Как это работает

MCP-сервер — это программа, которая "оборачивает" API какого-то сервиса в стандартный формат. Claude не знает как работает API GitHub напрямую. Но он знает протокол MCP. MCP-сервер GitHub говорит: "у меня есть инструменты: create_issue, list_repos, search_code" — и Claude может их вызывать.

Три способа подключения

1
STDIO — локальный процесс

Сервер запускается на твоём компьютере как процесс (node, python, npx). Общение через stdin/stdout. Работает только в Claude Code и Claude Desktop. Не требует интернета — можно подключить локальную БД, файлы, git.

Конфиг в ~/.claude.json или claude_desktop_config.json.

2
Remote HTTP/SSE — удалённый сервер

Сервер доступен по URL. Работает везде: claude.ai, Desktop, Cowork, мобильные. Сервер должен быть публично доступен — Anthropic подключается к нему со своих серверов, не с твоего компьютера.

Примеры: GitHub, Slack, Gmail, Notion, Figma, Canva, Supabase, Vercel, ClickUp, Sentry — все они предоставляют remote MCP-серверы.

3
MCP connector в API

Параметр mcp_servers[] прямо в запросе к Messages API. Anthropic сам подключается к серверу, получает список инструментов, и отдаёт их модели. Только HTTP-серверы, не STDIO.

"mcp_servers": [{
  "type": "url",
  "url": "https://mcp.github.com/sse",
  "name": "github",
  "authorization_token": "ghp_..."
}]
Важный нюанс: MCP connector НЕ покрывается Zero Data Retention. Данные, которые ходят через MCP-серверы, хранятся по стандартной политике Anthropic.
05 — Оптимизации

Tool search — как не засорить контекст

Проблема: каждый подключённый инструмент добавляет ~500-1500 токенов в контекст (имя, описание, параметры). 50 MCP-инструментов = ~77K токенов ещё до того как ты что-то написал. Это "context pollution" — инструменты жрут память, оставляя мало места для реальной работы.

Решение: deferred loading

Tool search загружает в контекст только индекс инструментов (имена и короткие описания). Когда модели нужен конкретный инструмент — она ищет по индексу, и только тогда полное определение подгружается.

Без tool searchС tool search
~77K токенов на 50+ инструментов~8.7K токенов (индекс + ~500 токенов overhead)
Модель видит все инструменты сразуМодель ищет нужные по ключевым словам
Качество выбора падает при 30+ инструментахГрузит 3-5 самых релевантных
Экономия 85%+ контекста. В Claude Code tool search включён по умолчанию когда инструменты занимают больше 10% контекстного окна.
06 — Клиенты

Чем отличаются все эти Claude'ы друг от друга

Все используют один API, но каждый клиент добавляет свой слой сверху.

W
claude.ai

Что добавляет поверх API: веб-интерфейс чата, артефакты (рендеринг HTML/React/SVG прямо в чате), проекты (группы чатов с общим контекстом), memory (запоминает между чатами), user preferences (настройки стиля), deep research (длинные исследования с десятками поисков), remote MCP-коннекторы через UI.

Под капотом: Огромный system prompt (~10-15K токенов) с правилами поведения, безопасности, форматирования. 30+ инструментов подключены из коробки. Артефакты — это функция фронтенда, не API.

C
Claude Code

Что добавляет поверх API: терминальный интерфейс, agent loop (автоматический цикл tool_use), встроенные инструменты (bash, text_editor, computer_use), субагенты (параллельные агенты на подзадачи), CLAUDE.md (конфиг проекта), hooks (shell-команды до/после действий), plugins, локальные MCP-серверы через STDIO.

Под капотом: Свой system prompt, заточенный под кодинг. Compaction — автоматическое сжатие контекста при длинных сессиях. Tool search для управления большим количеством MCP-серверов. Auto-memory — сохраняет выученные паттерны между сессиями.

S
Agent SDK

Суть: Тот же движок, который работает внутри Claude Code, но доступный как библиотека для Python и TypeScript. Позволяет строить своих агентов с теми же возможностями: agent loop, встроенные инструменты, MCP, субагенты, hooks.

Ключевое отличие от прямого API: Agent SDK сам управляет циклом tool_use. С прямым API ты сам пишешь цикл "получил tool_use → выполнил → отправил tool_result". Agent SDK делает это автоматически.

D
Claude Desktop

Нативное десктоп-приложение. Главная фишка — поддержка локальных MCP-серверов через STDIO. Можно подключить файловую систему, локальную базу данных, git — всё без интернета. Конфигурируется через claude_desktop_config.json.

07 — Модели

Три модели — три уровня

Opus 4.6 Sonnet 4.6 Haiku 4.5
Роль Самая умная. Сложные задачи, агенты, кодинг Баланс. Большинство рабочих задач Быстрая и дешёвая. Классификация, роутинг
API ID claude-opus-4-6 claude-sonnet-4-6 claude-haiku-4-5
Контекст 1M токенов 1M токенов 200K токенов
Max output 32K (sync), 300K (batch) 64K (sync), 300K (batch) 8K
Input / 1M $5 $3 $1
Output / 1M $25 $15 $5
Output = 5x от input. Длина ответа — самый большой рычаг стоимости. Один длинный ответ может стоить больше чем весь входной контекст. Вот почему "будь краток" экономит деньги.

Модификаторы стоимости

Batch API — асинхронная обработка, -50% на всё. До 100K запросов, результат в течение 24ч.

Prompt caching (cache hit) — -90% на закэшированные input-токены.

Data residency (US-only) — +10% на все токены.

Extended thinking — thinking-токены = output rate, без наценки.

web_search — $10 за 1000 поисков + стандартные токены.

08 — Интересные детали

Что ещё стоит знать

!
Модель не помнит предыдущие чаты

Каждый запрос к API — это чистый лист. Модель не имеет долгосрочной памяти. То что в claude.ai выглядит как "memory" — это текстовые заметки, которые вставляются в system prompt при каждом запросе. Если убрать их из промпта — модель забудет всё.

!
Anthropic не делает embeddings и fine-tuning

В отличие от OpenAI, Anthropic не предоставляет собственную модель эмбеддингов и не поддерживает дообучение (fine-tuning). Для эмбеддингов рекомендуют Voyage AI. Для "кастомизации" — prompt engineering и Agent Skills.

!
Compaction — автосжатие для длинных сессий

Когда контекстное окно заполняется (в Claude Code или Agent SDK), включается compaction: модель резюмирует историю, сохраняя суть и убирая детали. Это позволяет работать часами без потери контекста — но детали старых сообщений теряются.

!
Parallel tool use

Модель может вызвать несколько инструментов за один ход — несколько tool_use блоков в одном ответе. Клиент исполняет все параллельно и отправляет все tool_result разом. Экономит время на последовательных запросах.

!
Сторонние платформы — Bedrock, Vertex, Foundry

Те же модели Claude, но оплата через облачного провайдера (AWS, GCP, Azure). Есть ограничения: MCP connector в API не работает на Bedrock и Vertex. Региональные эндпоинты = +10% наценка.