Открытый гайд · ИИ-офис

Claude Agent SDK:собираем своего агента

Claude Code в терминале — это удобно, но что если агент должен жить внутри твоей программы, бота или сервиса? Для этого есть Agent SDK: тот же движок, но в виде кода. Разберём, что это и как собрать первого агента.

@kir.player
~13 минут
июнь 2026

Этот гайд — для тех, кто уже освоился с Claude Code в терминале и хочет шаг дальше: встроить агента в собственный продукт. Telegram-бот, который сам чинит баги по тикету. Скрипт, который ночами разбирает входящие письма. Сервис, где агент — часть бэкенда. Всё это собирается через Claude Agent SDK — библиотеку, которая даёт движок Claude Code в виде кода. Тема техническая, поэтому термины разберём по дороге, но предполагается, что код ты хотя бы читаешь.

Что узнаешь из гайда

  • Что такое Agent SDK и зачем он, если есть терминал
  • Чем программный агент отличается от ручного Claude Code
  • Как выглядит первый агент на TypeScript и Python
  • Как дать агенту свои инструменты
  • Когда SDK оправдан, а когда хватит терминала

Часть 1 · Понятие

Что такое Agent SDK

Главное

Agent SDK — это движок Claude Code в виде библиотеки. Тот же агент, что в терминале, но вызывается из твоего кода функцией query(), а не руками в чате.

Разберём слова. SDK (software development kit) — это набор кода, который ты подключаешь к своей программе как библиотеку, чтобы пользоваться чужой функциональностью. Agent — сам Claude, который умеет читать файлы, запускать команды и править код. Сложив, получаем: Claude Agent SDK даёт тебе того же агента, что живёт в Claude Code, но управляешь ты им из кода — вызовом функции, а не набором в терминале.

SDK выходит в двух вариантах под популярные языки. Для TypeScript/JavaScript — пакет @anthropic-ai/claude-agent-sdk, ставится через npm. Для Python — пакет claude-agent-sdk, ставится через pip. API в обоих почти зеркальный, поэтому выбираешь язык, на котором уже пишешь свой продукт.

терминал · установка SDK
# TypeScript / JavaScript — через npm
npm install @anthropic-ai/claude-agent-sdk

# Python — через pip (в виртуальном окружении)
pip install claude-agent-sdk

Терминал — это ты за рулём. SDK — это твоя программа за рулём, агент внутри неё.


Часть 2 · Разница

SDK против терминала

Главное

В терминале диалог ведёшь ты. Через SDK диалог ведёт твоя программа: вызывает агента, читает его сообщения в цикле и встраивает результат в продукт. Человек за клавиатурой не нужен.

Когда ты работаешь в Claude Code из терминала, цикл простой: ты пишешь — агент отвечает — ты смотришь — пишешь снова. Через SDK этот цикл берёт на себя код. Твоя программа отправляет запрос, получает поток сообщений от агента и сама решает, что с ними делать: показать пользователю, записать в базу, дёрнуть следующий шаг.

Терминал и SDK — в чём отличие

КритерийТерминалAgent SDK
Кто ведёт диалогЧеловекТвоя программа
Где живёт агентВ терминалеВнутри твоего кода
Для чегоРучная работаПродукт, бот, сервис
Нужен ли человекДа, за рулёмНет, работает сам

Важно

Если тебе нужно просто запустить агента без чата в скрипте или CI — не обязательно лезть в SDK. Часто хватает headless-режима (флаг -p у самой команды claude). SDK берут, когда нужен не один запуск, а агент как полноценная часть программы — с обработкой каждого сообщения и своей логикой вокруг.


Часть 3 · Код

Первый агент за пять строк

Главное

Минимальный агент — это вызов query() с запросом и цикл по его сообщениям. Опции (системный промт, права, рабочая папка) задаются рядом.

Главная функция SDK — query(). Ты передаёшь ей запрос и опции, а она возвращает поток сообщений от агента, который ты обходишь циклом. Вот рабочий минимум на Python:

Python · минимальный агент
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions


async def main():
    # Опции: системный промт, режим прав, рабочая папка
    options = ClaudeAgentOptions(
        system_prompt="Ты аккуратный Python-разработчик",
        permission_mode="acceptEdits",   # сам принимает правки файлов
        cwd="/home/user/project",
    )

    # query() возвращает поток сообщений — обходим его в цикле
    async for message in query(prompt="Сделай простой веб-сервер", options=options):
        print(message)


asyncio.run(main())

Тот же агент на TypeScript выглядит почти так же — меняются только синтаксис и имена опций (в TS они в camelCase):

TypeScript · тот же агент
import { query } from "@anthropic-ai/claude-agent-sdk";

// Поток сообщений обходим через for await
for await (const message of query({
  prompt: "Сделай простой веб-сервер",
  options: {
    systemPrompt: "Ты аккуратный разработчик",
    permissionMode: "acceptEdits",
    cwd: "/home/user/project",
  },
})) {
  console.log(message);
}

Один нюанс про системный промт

По умолчанию SDK даёт агенту минимальный системный промт, а не тот развёрнутый, что у Claude Code в терминале. Если хочешь поведение «как у Claude Code», задай пресет явно: systemPrompt: { type: "preset", preset: "claude_code" }. Иначе агент будет проще — это сделано, чтобы ты сам управлял его характером.


Часть 4 · Инструменты

Свои инструменты для агента

Главное

Агенту можно дать свои функции — посчитать, сходить в базу, дёрнуть сервис. В Python это декоратор tool плюс create_sdk_mcp_server; агент вызывает их сам по необходимости.

Настоящая сила SDK — когда агент умеет не только править код, но и выполнять твои действия. Это делается через инструменты (tools): обычные функции, которые ты помечаешь как доступные агенту. Он сам решает, когда их вызвать. Вот инструмент-калькулятор на Python:

Python · свой инструмент для агента
from claude_agent_sdk import tool, create_sdk_mcp_server


# Помечаем функцию как инструмент: имя, описание, какие принимает аргументы
@tool("calculate", "Считает математическое выражение", {"expression": str})
async def calculate(args):
    result = eval(args["expression"], {"__builtins__": {}})
    return {"content": [{"type": "text", "text": f"Результат: {result}"}]}


# Собираем инструменты в локальный MCP-сервер — отдаём его агенту
my_server = create_sdk_mcp_server(name="utils", version="1.0.0", tools=[calculate])

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

Коротко

  • Инструмент — обычная функция, помеченная как доступная агенту.
  • В Python: @tool + create_sdk_mcp_server; агент зовёт их сам.
  • Разрешай только нужные инструменты — это граница безопасности.

Часть 5 · Граница

Когда SDK оправдан

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

  • Агент — часть продукта. Бот, сервис, веб-приложение, где Claude работает внутри без человека за клавиатурой.
  • Нужна своя логика вокруг агента. Обработка каждого сообщения, ветвления, запись в базу, свои инструменты.
  • Массовый поток задач. Сотни тикетов, писем, заявок, которые агент разбирает по расписанию.

Когда SDK не нужен

Если ты просто работаешь над своим проектом руками — хватит терминала, SDK тут лишний. Для разового запуска без чата в скрипте бери headless-режим, а не библиотеку. А если хочется «ИИ-команду» из нескольких агентов на каждый день без программирования — это субагенты, они настраиваются файлами, а не кодом.

Коротко

  • Agent SDK — движок Claude Code в коде, query() + цикл по сообщениям.
  • Языки — TypeScript и Python, можно давать свои инструменты.
  • Бери его под продукт и автоматизацию, а не ради ручной работы.

Вопросы

Частые вопросы

Что такое Claude Agent SDK?

Claude Agent SDK — это программная библиотека, которая даёт тот же движок, что и Claude Code в терминале, но в виде кода для встраивания в свои программы. Вместо того чтобы общаться с агентом руками в чате, ты вызываешь функцию query() из своего скрипта и получаешь ответы и действия агента программно. Есть версии для TypeScript (пакет @anthropic-ai/claude-agent-sdk) и для Python (пакет claude-agent-sdk).

Чем Agent SDK отличается от обычного Claude Code?

Обычный Claude Code — это интерактивный агент в терминале, которым ты управляешь руками; Agent SDK — тот же агент, встроенный в твой код как библиотека. Разница в способе запуска: в терминале ты ведёшь диалог сам, а через SDK твоя программа вызывает агента в цикле, обрабатывает его сообщения и встраивает в свой продукт. SDK нужен, когда агент должен работать внутри сервиса, бота или скрипта без человека за клавиатурой.

На каких языках можно писать агентов через SDK?

Claude Agent SDK официально поддерживает TypeScript/JavaScript и Python. Для TypeScript ставится пакет @anthropic-ai/claude-agent-sdk через npm, для Python — пакет claude-agent-sdk через pip. API в обоих почти зеркальный: главная функция query() принимает запрос и опции и возвращает поток сообщений агента, который ты обходишь в цикле.

Можно ли давать агенту из SDK свои инструменты?

Да, через Agent SDK агенту можно дать собственные инструменты — функции, которые он вызывает по необходимости. В Python они объявляются декоратором tool и собираются в локальный MCP-сервер функцией create_sdk_mcp_server, в TypeScript логика аналогичная. Так агент получает доступ к твоим действиям — посчитать, сходить в твою базу или дёрнуть внешний сервис — оставаясь под контролем разрешённых инструментов.

Читать дальше

Соседние гайды

Telegram про вайбкодинг и ИИ

Прикладной материал, разборы и рабочие приёмы — то, чем пользуюсь сам, без воды. Залетай, там самое полезное.

Зайти в Telegram