Claude Agent SDK: Полное досье на систему
Введение
Claude Agent SDK (ранее известный как Claude Code SDK, переименован в сентябре 2025) — это официальная библиотека от Anthropic для построения производственных AI-агентов. Это не просто обёртка над API: это полнофункциональная система для создания автономных агентов, которые могут читать файлы, выполнять команды, искать в веб, редактировать код и взаимодействовать с внешними системами через Model Context Protocol (MCP). SDK доступен на Python (3.10+) и TypeScript/Node.js (18+).
По словам разработчиков, SDK представляет собой "инфраструктурный слой Claude Code, выставленный как библиотека, которую можно применить к любой проблеме". За ним стоит полгода внутреннего развития в Anthropic, где были решены сложные проблемы управления памятью, разрешениями и координацией многоагентных систем.
Что это: определение и назначение
Claude Agent SDK — это программная библиотека, которая даёт вам доступ к мощи Claude как к инфраструктуре для автономных агентов. Вместо того чтобы самостоятельно реализовывать цикл обработки инструментов (tool loop), управлять контекстом и отслеживать состояние сессии, вы передаёте промпт функции query(), а SDK обрабатывает всю остальную логику.
Ключевое различие от Client SDK: - Client SDK (стандартный Anthropic SDK) — это прямой доступ к API. Вы отправляете промпты, получаете ответы и сами реализуете tool loop. - Agent SDK — это готовое решение, где Claude автономно выполняет инструменты, управляет контекстом и ведёт переговоры с окружающей средой.
# Agent SDK — вы передаёте задачу, SDK обрабатывает всё остальное
async for message in query(prompt="Найди и исправь ошибку в auth.py"):
print(message)
Архитектура и ключевые концепции
Базовая архитектура
Архитектура SDK опирается на модель subprocess. Когда вы вызываете query(), SDK:
- Запускает отдельный процесс
claudeCLI - Общается с ним по stdin/stdout
- Этот процесс владеет оболочкой, рабочей директорией и файлами сессии (JSONL) на диске
- Процесс вызывает
api.anthropic.comдля вызовов модели
Одна сессия агента = один subprocess. Несколько одновременных сессий = несколько subprocesses.
Встроенные инструменты (14+)
SDK предоставляет встроенные инструменты, доступные через строковые ссылки, без необходимости вручную определять JSON-схемы:
| Инструмент | Назначение |
|---|---|
| Read | Читать любой файл в рабочей директории |
| Write | Создавать новые файлы |
| Edit | Делать точечные правки существующих файлов |
| Bash | Выполнять команды терминала, скрипты, операции git |
| Monitor | Следить за фоновым скриптом и реагировать на каждую строку вывода как на событие |
| Glob | Находить файлы по паттерну (**/*.ts, src/**/*.py) |
| Grep | Искать в содержимом файлов по regex |
| WebSearch | Искать в веб текущую информацию |
| WebFetch | Загружать и парсить содержимое веб-страниц |
| AskUserQuestion | Задавать уточняющие вопросы пользователю |
| Agent | Вызывать субагентов |
| Workflow | Запускать динамические workflows (TypeScript SDK v0.3.149+) |
Hooks (ловушки жизненного цикла)
Hooks позволяют вам запускать пользовательский код в ключевых точках жизненного цикла агента:
- PreToolUse — перед использованием инструмента
- PostToolUse — после использования инструмента
- Stop — когда агент останавливается
- SessionStart — начало сессии
- SessionEnd — конец сессии
- UserPromptSubmit — отправка промпта пользователя
Используйте hooks для валидации, логирования, блокировки опасных операций или преобразования поведения агента.
Субагенты и оркестрация многоагентных систем
Это центральная особенность SDK. Вы определяете специализированных агентов с фокусированными задачами, а главный агент делегирует им работу:
options = ClaudeAgentOptions(
allowed_tools=["Read", "Grep", "Glob", "Agent"],
agents={
"code-reviewer": AgentDefinition(
description="Специалист по проверке кода для обзоров безопасности и качества",
prompt="Вы эксперт по проверке кода. Выявляйте уязвимости и предлагайте улучшения.",
tools=["Read", "Grep", "Glob"], # Только чтение!
),
"test-runner": AgentDefinition(
description="Запускает и анализирует test-suite",
prompt="Вы специалист по выполнению тестов...",
tools=["Bash", "Read", "Grep"],
),
}
)
Ключевая особенность: каждый субагент работает в изолированном контексте. Промежуточные вызовы инструментов и результаты остаются внутри субагента; только финальное сообщение возвращается родителю. Это означает, что большие объёмы работы (например, обход сотен файлов) не загромождают главный контекст.
Паттерны оркестрации
-
Контекстная изоляция: Многословная работа (тесты, сканирование документации) исполняется в субагентах, только результат возвращается в главное окно.
-
Параллельный fan-out: Несколько независимых расследований выполняются одновременно. Каждый субагент возвращает свой результат, родитель синтезирует выводы.
-
Pipeline/цепочка: Последовательные workflows выполняют субагентов по очереди, каждый потребляет результат предыдущего.
-
Role Panels: Разные специализированные агенты рецензируют один артефакт с разных углов одновременно (например, scanner безопасности, проверка стиля, анализ покрытия тестами).
Данные наследуются субагентом только через prompt в инструменте Agent — единственный входной канал.
MCP (Model Context Protocol)
SDK имеет встроенную поддержку MCP, позволяя подключать внешние системы:
options = ClaudeAgentOptions(
mcp_servers={
"playwright": {"command": "npx", "args": ["@playwright/mcp@latest"]}
}
)
Это даёт агенту доступ к браузер-автоматизации, базам данных, API и сотням других интеграций без необходимости управлять отдельными процессами MCP-серверов.
Сессии и управление состоянием
Сессии позволяют вам:
- Resume — продолжить с полным контекстом, где вы остановились
- Fork — исследовать альтернативные подходы
- Persist — сохранять трансценденты через перезагрузки контейнера
Сессии хранятся как JSONL-файлы на диске по умолчанию в ~/.claude/projects/. Они включают полную историю разговора, прочитанные файлы, выполненные команды и логику рассуждений.
Управление разрешениями
Строгая система управления разрешениями позволяет контролировать, какие инструменты может использовать агент:
options = ClaudeAgentOptions(
allowed_tools=["Read", "Glob", "Grep"], # Pre-approve эти инструменты
permission_mode="acceptEdits", # Автоматически одобрять редактирование
)
Порядок оценки: hooks → deny rules → ask rules → permission_mode → allow rules → callbacks.
Память и контекст проекта
SDK поддерживает несколько уровней памяти:
- CLAUDE.md — файл памяти проекта в корне репозитория. Содержит инструкции, которые загружаются в system prompt.
- Auto-memory — автоматическое управление памятью в
~/.claude/projects/<project>/memory/ - Session-level — контекст, сохранённый в текущей сессии
Как работают субагенты и оркестрация
Жизненный цикл субагента
- Главный агент получает промпт от пользователя
- Claude решает, нужен ли субагент, на основе:
- Описания (
description) каждого субагента - Явного упоминания в промпте (например, "Use the code-reviewer agent")
- Главный агент вызывает инструмент
Agent, передавая промпт делегирования - SDK запускает новый subprocess для субагента
- Субагент выполняется в своём контексте с собственной system prompt и набором инструментов
- Только финальное сообщение субагента возвращается родителю
- Главный агент включает результат в свой ответ
Что наследует субагент
| Наследуется | Не наследуется |
|---|---|
| Собственная system prompt | История разговора родителя |
| CLAUDE.md проекта | Результаты инструментов родителя |
| Определения инструментов | Преддефинированный контент навыков |
| Конфигурация MCP | System prompt родителя |
Параллелизм
Несколько субагентов выполняются одновременно. Время завершения = время самого медленного субагента, а не сумма всех времён.
Ограничения
- Субагенты не могут запрашивать одобрение во время выполнения (делегирование только для исследования)
- Максимальная глубина вложенности: 5 уровней, на пятом уровне нельзя создавать дальнейшие субагенты
- Субагенты работают в фоне по умолчанию (установлено в v2.1.198)
Развёртывание на своём сервере
Модель subprocess
Так как SDK работает через subprocess, хостинг не похож на хостинг stateless API:
- Каждый запущенный агент — долгоживущий процесс, привязанный к локальному состоянию
- Один процесс claude на каждую сессию
- Сессии хранятся на диске контейнера
Паттерны сессий
-
Ephemeral sessions — контейнер на одну задачу, затем уничтожается. Лучше для: проверка ошибок, извлечение данных, трансформация.
-
Long-running sessions — постоянные инстансы контейнеров, обслуживающие множество SDK-процессов. Лучше для: email-агенты, chat-боты, непрерывная обработка.
-
Hybrid sessions — ephemeral контейнеры, которые гидратируют из SessionStore при старте. Лучше для: intermittent work, deep research, customer support.
-
Multi-agent container — несколько SDK-процессов в одном контейнере для близкого взаимодействия.
Требования к контейнеру
- Python: 3.10+
- Node.js: 18+
- RAM: 1 GiB на агента (стартовая точка)
- Disk: 5 GiB
- CPU: 1 на агента
SDK содержит родной бинарь Claude Code для вашей платформы, поэтому отдельного установления не требуется.
Провайдеры песочниц
Популярные варианты для развёртывания с изоляцией:
- Modal Sandbox (sub-second cold starts, per-second pricing)
- Cloudflare Sandboxes
- E2B (специализирован на AI)
- Fly Machines
- Vercel Sandbox
- Daytona
- Docker + gVisor / Firecracker (self-hosted)
Персистентность состояния
По умолчанию состояние на диске теряется при перезагрузке контейнера. Для production:
- SessionStore adapter — зеркалирование трансценде в S3, Redis или Postgres
- Mounted volumes — для CLAUDE.md и артефактов рабочей директории
- Sync to object storage — периодическое сохранение
Мультитенантная изоляция
Для общего контейнера, обслуживающего нескольких tenants:
options = ClaudeAgentOptions(
cwd=tenant_dir,
setting_sources=[], # Не загружать filesystem settings
env={
"CLAUDE_CONFIG_DIR": config_dir,
"CLAUDE_CODE_DISABLE_AUTO_MEMORY": "1", # Отключить auto-memory
},
)
Наблюдаемость (Observability)
SDK экспортирует OpenTelemetry сигналы:
export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_TRACES_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_ENDPOINT=http://collector.example.com:4318
Отслеживайте: какие инструменты выполнялись, сколько они заняли времени, где застопорилась сессия.
Масштабирование
агентов на хост = (RAM хоста - overhead) / (потолок RAM на сессию)
Для долгоживущих сессий используйте consistent hashing по sessionId для pin session на одном контейнере.
Управление памятью и сессиями
Уровни памяти
- Project-level: CLAUDE.md в корне проекта. Загружается в system prompt.
- Auto-memory: Автоматическое управление в
~/.claude/projects/<project>/memory/ - Session-level: Временная память текущей сессии
Persistence
- Без SessionStore: трансценде хранятся на диске, теряются при перезагрузке
- С SessionStore: трансценде зеркалируются в дурабельное хранилище (S3, Redis, Postgres)
Поведение
- Чтение/запись локально сначала: subprocess пишет на диск в первую очередь
- Зеркалирование асинхронно: SessionStore получает копию
- Retry-logic: неудачные batch переправляются до 3 раз, затем пропускаются с
mirror_error
Цена и экономика
Модель стоимости
- Основные расходы — tokens (доминирует в cost):
- Входные токены: стандартная цена
- Выходные токены: стандартная цена
- Cache read tokens: скидка (примерно 90% от input)
-
Cache creation tokens: надбавка (примерно 125% от input)
-
Инфраструктура — хостинг контейнера:
- Минимально провизионированный: ~$0.05/hour
- Но tokens обычно доминируют на порядок!
Отслеживание costs
async for message in query(prompt="..."):
if isinstance(message, ResultMessage):
print(f"Cost: ${message.total_cost_usd}")
print(f"Input: {message.usage.get('input_tokens')}")
print(f"Output: {message.usage.get('output_tokens')}")
print(f"Cache read: {message.usage.get('cache_read_input_tokens')}")
Важно
total_cost_usdиcostUSD— это локальные оценки, не авторитетные биллинг-данные- Используйте Usage and Cost API или Claude Console для авторитетного биллинга
- Caching 5-min TTL по умолчанию; установите
ENABLE_PROMPT_CACHING_1Hдля 1-hour TTL (выше стоимость writes, но больше читаний из cache)
Сильные стороны
- Встроенные инструменты — 14+ готовых tools, не нужно писать JSON-schema вручную
- Субагенты и оркестрация — clean task delegation с контекстной изоляцией
- Session persistence — разделение фаз read/write, контрольные точки перед дачей прав
- MCP native — встроенная поддержка Model Context Protocol без отдельных процессов
- Production-ready — 6 месяцев внутреннего развития в Anthropic, решены hard problems
- Полный контроль — hooks, permissions, resource limits на уровне библиотеки
- Prompt caching — автоматическое использование для снижения costs
- Cost tracking — подробные per-step, per-model, per-session метрики
Слабые стороны
- Claude-only — нет альтернативных провайдеров (GPT, Gemini и т.д.)
- Deployment complexity — subprocess model требует особого подхода к хостингу, не классический stateless API
- Cost concerns — agentic сессии могут быстро стать дорогими без budget safeguards
- API instability — API всё ещё развивается, V2 interfaces рядом с существующими паттернами
- Memory overhead — долгие сессии растут в памяти, нужна переработка
- Windows limitation — очень длинные промпты на Windows могут fail из-за 8191-char CLI limit
- No per-subagent wall-clock deadline — только maxTurns, no total timeout для каждого субагента
Для кого это предназначено
Идеально для
- Teams уже using Claude — естественный выбор
- Multi-agent architectures — контекстная изоляция, параллелизм
- MCP-native systems — встроенная поддержка
- Code-intensive workflows — bug fixing, refactoring, security reviews
- Production automation — CI/CD pipelines, scheduled jobs
- Tight iteration loops — local prototyping перед production migration
Не подходит для
- Multi-model flexibility — нужна LangGraph или crewAI
- Sub-500ms latency — agent loops долгие
- Strict cost predictability — token consumption трудно предсказать
- Standalone API requirements — нужен Managed Agents
- Complex stateful logic — рассмотрите LangGraph
Состояние проекта в 2026 году: жив ли он?
Активное развитие
- September 2025: SDK официально запущен как Claude Code SDK
- September 2025: Переименован в Claude Agent SDK (люди перестали предполагать, что это только для кода)
- Q1 2026: Добавлены workflows, улучшена оркестрация
- Q2 2026: Расширена поддержка MCP, production patterns guide
- Current (July 2026): Активно используется в production, regular updates
GitHub활동
- TypeScript SDK — активные commits, CHANGELOG обновляется
- Python SDK — регулярные релизы, патчи
- Example agents — растущий набор примеров
Поддержка
- Официальная документация на code.claude.com
- Активный issue tracker
- Интеграции с Modal, E2B, других облачных провайдеров
- Растущий ecosystem третьих сторон (Totalum, inference.net, hatchworks)
Вывод: Проект активно развивается, поддерживается Anthropic, используется в production системах. Это не экспериментальная технология.
Примеры реальных систем
Пример 1: Salon Booking Application (Totalum)
Агент может построить полное приложение salon-booking с использованием MCP-endpoints:
- Создание проекта через
claude-scaffoldMCP - Генерация схемы базы данных для расписания
- Настройка Stripe для платежей
- Развёртывание Next.js приложения в продакшене
Всё это происходит автономно, без ручного написания Next.js кода.
Пример 2: Email Assistant
# Long-running container
async for message in query(
prompt="Process incoming emails and respond",
options=ClaudeAgentOptions(
allowed_tools=["Read", "WebFetch", "WebSearch", "Agent"],
agents={
"email-classifier": AgentDefinition(...),
"response-drafter": AgentDefinition(...),
}
)
):
# Обработка сообщений как events
# Продолжает работать, обслуживая входящие письма
Пример 3: Code Security Review Pipeline
Три субагента параллельно: - security-scanner — проверка уязвимостей - style-checker — соответствие style guide - test-coverage — анализ покрытия тестами
Главный агент синтезирует выводы в единый отчёт.
Пример 4: Research Agent
Агент самостоятельно исследует тему: 1. Поиск в веб (WebSearch) 2. Загрузка и парсинг статей (WebFetch) 3. Структурирование findings 4. Резюме с источниками
Это используется в production для автоматизированной research.
Сравнение с альтернативами
Claude Agent SDK vs Anthropic Managed Agents
| Аспект | Agent SDK | Managed Agents |
|---|---|---|
| Где работает | В вашем процессе | Anthropic-инфраструктура |
| Interface | Python/TS библиотека | REST API |
| Где работает агент | Ваши файлы и services | Managed sandbox |
| Состояние сессии | JSONL на диске | Anthropic event log |
| Custom tools | Python/TS функции | MCP серверы |
| Лучше для | Local prototyping, CI/CD | Production async, multi-tenant |
Рекомендуемый путь: Prototype с Agent SDK локально, потом migrate на Managed Agents для production.
Claude Agent SDK vs LangGraph
| Аспект | Agent SDK | LangGraph |
|---|---|---|
| Models | Claude only | Multi-model |
| State | Subprocess JSONL | In-process dict |
| Complexity | Simplified agent loop | Full control |
| Production | Works great | Also excellent |
| Learning curve | Lower (fewer concepts) | Steeper (state graphs) |
Выбирайте Agent SDK, если: - Вы используете Claude - Вам нужны built-in tools и простота - MCP-integration важна
Выбирайте LangGraph, если: - Вам нужна multi-model flexibility - Требуется сложная stateful логика - Нужен полный контроль над agent loop
Ключевые выводы
-
Claude Agent SDK — это производственная система, не вспомогательная библиотека. Она решает hard problems вокруг agent lifecycle, permission management, session persistence.
-
Субагенты — это differentiator. Контекстная изоляция позволяет масштабировать сложные workflows без загромождения главного контекста.
-
Deployment is sophisticated. Subprocess model требует особого подхода: SessionStore для persistence, multi-tenant isolation, observability через OTEL.
-
Costs доминируются tokens, не инфраструктурой. Budget safeguards обязательны для automation.
-
In 2026, это активный проект с растущим production adoption. Anthropic инвестирует в развитие, экосистема растёт.
-
Model lock-in — реальное ограничение. Если вам нужна multi-model flexibility, это critical consideration.
-
Recommeneded path — начните с Agent SDK для prototyping, затем либо останьтесь (если Claude perfect fit), либо migrate на LangGraph (multi-model) или Managed Agents (fully hosted).
Источники
- Agent SDK overview - Claude Code Docs
- Subagents in the SDK - Claude Code Docs
- Hosting the Agent SDK - Claude Code Docs
- Track cost and usage - Claude Code Docs
- Claude Agent SDK in 2026: What It Is, When To Use It - Totalum Blog
- Claude Code Subagents and Multi-Agent Orchestration Guide
- Claude Agent SDK: Subagents, Sessions and Why It's Worth It
- Claude Agent SDK and Managed Agents: Where to Run Production Agents
- Claude Agent SDK: The Production Guide to Tracing, Subagents, and Evaluation
- GitHub - anthropics/claude-agent-sdk-python
- GitHub - anthropics/claude-agent-sdk-typescript
- Claude Agent SDK: Capabilities, Comparison, and Ecosystem Guide
- AI Agent Frameworks (2026 Update): 8 SDKs Compared