Установка
SDK поставляется с нативным бинарным файлом Claude Code для вашей платформы в качестве опциональной зависимости, такой как
@anthropic-ai/claude-agent-sdk-darwin-arm64. Вам не нужно устанавливать Claude Code отдельно. Если ваш менеджер пакетов пропускает опциональные зависимости, SDK выбросит ошибку Native CLI binary for <platform> not found; установите pathToClaudeCodeExecutable на отдельно установленный бинарный файл claude вместо этого.Компиляция в единый исполняемый файл
Когда вы компилируете приложение в единый исполняемый файл с помощьюbun build --compile, SDK не может разрешить упакованный бинарный файл CLI во время выполнения. require.resolve не работает внутри виртуальной файловой системы $bunfs скомпилированного исполняемого файла, поэтому SDK выбросит ошибку Native CLI binary for <platform> not found.
Чтобы обойти это, встройте бинарный файл платформы как файловый ресурс, извлеките его на реальный путь при запуске с помощью extractFromBunfs() и передайте этот путь в pathToClaudeCodeExecutable.
Вспомогательная функция extractFromBunfs() требует @anthropic-ai/claude-agent-sdk версии 0.3.144 или позже. Пример ниже выполняет сборку для macOS на Apple Silicon:
extractFromBunfs() копирует встроенный бинарный файл из виртуальной файловой системы скомпилированного исполняемого файла в каталог временных файлов для каждого пользователя и возвращает реальный путь. Вне скомпилированного исполняемого файла он возвращает входной путь без изменений, поэтому тот же код работает в разработке без модификации.
Каждый скомпилированный исполняемый файл содержит бинарный файл одной платформы. Совместите пакет платформы в импорте с вашим --target:
- Для кросс-компиляции установите пакет несовпадающей платформы, например
npm install @anthropic-ai/claude-agent-sdk-linux-x64 --force. - На Windows подпуть бинарного файла — это
claude.exe, например@anthropic-ai/claude-agent-sdk-win32-x64/claude.exe.
Функции
query()
Основная функция для взаимодействия с Claude Code. Создаёт асинхронный генератор, который потоком передаёт сообщения по мере их поступления.
Параметры
| Параметр | Тип | Описание |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | Входной запрос в виде строки или асинхронного итерируемого объекта для режима потока |
options | Options | Опциональный объект конфигурации (см. тип Options ниже) |
Возвращаемое значение
Возвращает объектQuery, который расширяет AsyncGenerator<SDKMessage, void> дополнительными методами.
startup()
Предварительно разогревает подпроцесс CLI, запуская его и завершая инициализационное рукопожатие до того, как запрос будет доступен. Возвращённый дескриптор WarmQuery принимает запрос позже и записывает его в уже готовый процесс, поэтому первый вызов query() разрешается без затрат на запуск подпроцесса и инициализацию в строке.
Параметры
| Параметр | Тип | Описание |
|---|---|---|
options | Options | Опциональный объект конфигурации. Аналогичен параметру options функции query() |
initializeTimeoutMs | number | Максимальное время в миллисекундах для ожидания инициализации подпроцесса. По умолчанию 60000. Если инициализация не завершится вовремя, промис отклонится с ошибкой timeout |
Возвращаемое значение
ВозвращаетPromise<WarmQuery>, который разрешается после того, как подпроцесс запущен и завершил инициализационное рукопожатие.
Пример
Вызовитеstartup() рано, например при загрузке приложения, затем вызовите .query() на возвращённом дескрипторе, когда запрос будет готов. Это перемещает запуск подпроцесса и инициализацию из критического пути.
tool()
Создаёт определение типобезопасного MCP tool для использования с SDK MCP серверами.
Параметры
| Параметр | Тип | Описание |
|---|---|---|
name | string | Имя tool |
description | string | Описание того, что делает tool |
inputSchema | Schema extends AnyZodRawShape | Zod схема, определяющая входные параметры tool (поддерживает Zod 3 и Zod 4) |
handler | (args, extra) => Promise<CallToolResult> | Асинхронная функция, которая выполняет логику tool |
extras | { annotations?: ToolAnnotations } | Опциональные аннотации MCP tool, предоставляющие поведенческие подсказки клиентам |
ToolAnnotations
Переэкспортировано из @modelcontextprotocol/sdk/types.js. Все поля являются опциональными подсказками; клиенты не должны полагаться на них для решений безопасности.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
title | string | undefined | Удобочитаемое название для tool |
readOnlyHint | boolean | false | Если true, tool не изменяет свою среду |
destructiveHint | boolean | true | Если true, tool может выполнять деструктивные обновления (имеет смысл только когда readOnlyHint равен false) |
idempotentHint | boolean | false | Если true, повторные вызовы с одинаковыми аргументами не имеют дополнительного эффекта (имеет смысл только когда readOnlyHint равен false) |
openWorldHint | boolean | true | Если true, tool взаимодействует с внешними сущностями (например, веб-поиск). Если false, область tool закрыта (например, tool памяти) |
createSdkMcpServer()
Создаёт экземпляр MCP сервера, который работает в том же процессе, что и ваше приложение.
Параметры
| Параметр | Тип | Описание |
|---|---|---|
options.name | string | Имя MCP сервера |
options.version | string | Опциональная строка версии |
options.tools | Array<SdkMcpToolDefinition> | Массив определений tool, созданных с помощью tool() |
listSessions()
Обнаруживает и перечисляет прошлые сессии с лёгкими метаданными. Фильтруйте по директории проекта или перечисляйте сессии во всех проектах.
Параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
options.dir | string | undefined | Директория для перечисления сессий. Если опущено, возвращает сессии во всех проектах |
options.limit | number | undefined | Максимальное количество сессий для возврата |
options.includeWorktrees | boolean | true | Когда dir находится внутри git репозитория, включайте сессии из всех путей worktree |
Тип возврата: SDKSessionInfo
| Свойство | Тип | Описание |
|---|---|---|
sessionId | string | Уникальный идентификатор сессии (UUID) |
summary | string | Отображаемое название: пользовательское название, автоматически сгенерированное резюме или первый запрос |
lastModified | number | Время последнего изменения в миллисекундах с эпохи |
fileSize | number | undefined | Размер файла сессии в байтах. Заполняется только для локального хранилища JSONL |
customTitle | string | undefined | Пользовательское название сессии (через /rename) |
firstPrompt | string | undefined | Первый значимый пользовательский запрос в сессии |
gitBranch | string | undefined | Git ветка в конце сессии |
cwd | string | undefined | Рабочая директория для сессии |
tag | string | undefined | Пользовательский тег сессии (см. tagSession()) |
createdAt | number | undefined | Время создания в миллисекундах с эпохи, из временной метки первой записи |
Пример
Выведите 10 самых последних сессий для проекта. Результаты отсортированы поlastModified в убывающем порядке, поэтому первый элемент является самым новым. Опустите dir для поиска во всех проектах.
getSessionMessages()
Читает сообщения пользователя и ассистента из прошлой сессии.
Параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
sessionId | string | обязательно | UUID сессии для чтения (см. listSessions()) |
options.dir | string | undefined | Директория проекта для поиска сессии. Если опущено, ищет во всех проектах |
options.limit | number | undefined | Максимальное количество сообщений для возврата |
options.offset | number | undefined | Количество сообщений для пропуска с начала |
Тип возврата: SessionMessage
| Свойство | Тип | Описание |
|---|---|---|
type | "user" | "assistant" | Роль сообщения |
uuid | string | Уникальный идентификатор сообщения |
session_id | string | Сессия, к которой принадлежит это сообщение |
message | unknown | Необработанная полезная нагрузка сообщения из транскрипта |
parent_tool_use_id | string | null | Для сообщений подагента, tool_use_id вызова tool Agent, который его запустил. null для сообщений основной сессии и более старых сессий |
Пример
getSessionInfo()
Читает метаданные для одной сессии по ID без сканирования полной директории проекта.
Параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
sessionId | string | обязательно | UUID сессии для поиска |
options.dir | string | undefined | Путь директории проекта. Если опущено, ищет во всех директориях проектов |
SDKSessionInfo или undefined, если сессия не найдена.
renameSession()
Переименовывает сессию, добавляя запись пользовательского названия. Повторные вызовы безопасны; побеждает самое последнее название.
Параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
sessionId | string | обязательно | UUID сессии для переименования |
title | string | обязательно | Новое название. Должно быть непустым после удаления пробелов |
options.dir | string | undefined | Путь директории проекта. Если опущено, ищет во всех директориях проектов |
tagSession()
Помечает сессию. Передайте null для очистки тега. Повторные вызовы безопасны; побеждает самый последний тег.
Параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
sessionId | string | обязательно | UUID сессии для пометки |
tag | string | null | обязательно | Строка тега или null для очистки |
options.dir | string | undefined | Путь директории проекта. Если опущено, ищет во всех директориях проектов |
resolveSettings()
Разрешает эффективные параметры Claude Code для заданной директории, используя тот же механизм слияния, что и CLI, без запуска Claude CLI. Используйте его для проверки того, какую конфигурацию увидит вызов query() перед его вызовом.
Эта функция находится в альфа-версии и её API может измениться перед стабилизацией. Она читает источники MDM, включая macOS plist и Windows HKLM/HKCU, для паритета с запуском CLI, но не выполняет настроенный администратором подпроцесс
policyHelper. Поле permissions.defaultMode возвращается как есть из всех уровней, включая параметры проекта. Фильтр доверия, который CLI применяет перед соблюдением режимов повышенных разрешений, не применяется.Параметры
resolveSettings() принимает один объект параметров. Все поля опциональны.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
options.cwd | string | process.cwd() | Директория для разрешения параметров проекта и локальных параметров относительно |
options.settingSources | SettingSource[] | Все источники | Какие источники файловой системы загружать. Передайте [] для пропуска пользовательских, проектных и локальных параметров. Параметры управляемой политики загружаются во всех случаях |
options.managedSettings | Settings | undefined | Ограничивающие параметры уровня политики, предоставленные хостом встраивания. Отбрасываются по умолчанию, когда присутствует развёрнутый администратором управляемый уровень; объединяются под этим уровнем, когда parentSettingsBehavior равен "merge". Неограничивающие ключи, такие как model, молча отбрасываются, поэтому этот параметр может усилить управляемую политику, но не ослабить её |
options.serverManagedSettings | Settings | undefined | Полезная нагрузка параметров, управляемых сервером, из /api/claude_code/settings. Неограничивающие ключи проходят без фильтрации |
Тип возврата: ResolvedSettings
resolveSettings() возвращает объект, описывающий объединённые параметры и источник, который внёс каждый ключ.
| Свойство | Тип | Описание |
|---|---|---|
effective | Settings | Объединённые параметры после применения всех включённых источников в порядке приоритета |
provenance | Partial<Record<keyof Settings, ProvenanceEntry>> | Для каждого ключа верхнего уровня в effective, какой источник предоставил значение |
sources | Array<{ source, settings, path?, policyOrigin? }> | Необработанные параметры для каждого источника, упорядоченные от самого низкого к самому высокому приоритету |
Пример
Пример ниже разрешает параметры для директории проекта и выводит источник, который контролирует период очистки.Типы
Options
Объект конфигурации для функции query().
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
abortController | AbortController | new AbortController() | Контроллер для отмены операций |
additionalDirectories | string[] | [] | Дополнительные директории, к которым Claude может получить доступ |
agent | string | undefined | Имя агента для основного потока. Агент должен быть определён в опции agents или в настройках |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | Программно определите подагентов |
agentProgressSummaries | boolean | false | Когда true, генерируйте однострочные сводки прогресса для подагентов и пересылайте их на события task_progress через поле summary. Применяется к подагентам переднего плана и фонового режима |
allowDangerouslySkipPermissions | boolean | false | Включите обход разрешений. Требуется при использовании permissionMode: 'bypassPermissions' |
allowedTools | string[] | [] | Инструменты для автоматического одобрения без запроса. Это не ограничивает Claude только этими инструментами; неперечисленные инструменты переходят к permissionMode и canUseTool. Используйте disallowedTools для блокировки инструментов. См. Разрешения |
betas | SdkBeta[] | [] | Включите бета-функции |
canUseTool | CanUseTool | undefined | Пользовательская функция разрешения для использования инструмента |
continue | boolean | false | Продолжите самый последний диалог |
cwd | string | process.cwd() | Текущая рабочая директория |
debug | boolean | false | Включите режим отладки для процесса Claude Code |
debugFile | string | undefined | Запишите журналы отладки в определённый путь файла. Неявно включает режим отладки |
disallowedTools | string[] | [] | Инструменты для отклонения. Простое имя, такое как "Bash", удаляет инструмент из контекста Claude. Правило с областью видимости, такое как "Bash(rm *)", оставляет инструмент доступным и отклоняет совпадающие вызовы в каждом режиме разрешения, включая bypassPermissions. См. Разрешения |
effort | 'low' | 'medium' | 'high' | 'xhigh' | 'max' | 'high' | Контролирует, сколько усилий Claude вкладывает в свой ответ. Работает с адаптивным мышлением для направления глубины мышления |
enableFileCheckpointing | boolean | false | Включите отслеживание изменений файлов для перемотки. См. File checkpointing |
env | Record<string, string | undefined> | process.env | Переменные окружения. Когда установлено, это заменяет окружение подпроцесса вместо объединения с process.env, поэтому передайте { ...process.env, YOUR_VAR: 'value' } для сохранения унаследованных переменных, таких как PATH. См. Обработка медленных или зависших ответов API для примера этого паттерна и Переменные окружения для переменных, которые читает базовый CLI. Установите CLAUDE_AGENT_SDK_CLIENT_APP для идентификации вашего приложения в заголовке User-Agent |
executable | 'bun' | 'deno' | 'node' | Автоопределение | Среда выполнения JavaScript для использования |
executableArgs | string[] | [] | Аргументы для передачи исполняемому файлу |
extraArgs | Record<string, string | null> | {} | Дополнительные аргументы |
fallbackModel | string | undefined | Модель для использования, если основная не работает |
forkSession | boolean | false | При возобновлении с resume разветвитесь на новый ID сессии вместо продолжения исходной сессии |
forwardSubagentText | boolean | false | Пересылайте текст подагента и блоки мышления как сообщения ассистента и пользователя с установленным parent_tool_use_id, чтобы потребители могли отобразить вложенный транскрипт. По умолчанию только блоки tool_use и tool_result от подагентов выдаются |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | Обратные вызовы hooks для событий |
includeHookEvents | boolean | false | Включите события жизненного цикла hooks в поток сообщений как SDKHookStartedMessage, SDKHookProgressMessage и SDKHookResponseMessage |
includePartialMessages | boolean | false | Включите события частичных сообщений |
loadTimeoutMs | number | 60000 | Alpha. Timeout в миллисекундах для каждого вызова sessionStore.load() и sessionStore.listSubkeys() во время материализации возобновления. Если адаптер не завершится в этом окне, запрос не удаётся вместо зависания. Игнорируется, когда sessionStore не установлен |
managedSettings | Settings | undefined | Настройки уровня политики, предоставленные порождающим родительским процессом. Отбрасываются, когда уровень управляемых настроек, контролируемый IT, уже существует на машине, если только этот администратор не согласится с parentSettingsBehavior: 'merge'. Отфильтрованы только для ключей, ограничивающих доступ, независимо |
maxBudgetUsd | number | undefined | Остановите запрос, когда оценка стоимости на стороне клиента достигнет этого значения USD. Сравнивается с той же оценкой, что и total_cost_usd; см. Отслеживание стоимости и использования для предостережений точности |
maxThinkingTokens | number | undefined | Устарело: Используйте вместо этого thinking. Максимальные токены для процесса мышления |
maxTurns | number | undefined | Максимальное количество агентских ходов (раунды использования инструмента) |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | Конфигурации MCP серверов |
model | string | По умолчанию из CLI | Модель Claude для использования |
onElicitation | (request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult> | undefined | Обратный вызов для обработки запросов MCP elicitation. Вызывается, когда MCP сервер запрашивает ввод пользователя и ни один hook не обрабатывает его первым. Если не предоставлено, необработанные запросы elicitation автоматически отклоняются |
outputFormat | { type: 'json_schema', schema: JSONSchema } | undefined | Определите формат вывода для результатов агента. См. Structured outputs для деталей |
outputStyle | string | undefined | Не поле Options. Установите outputStyle во встроенном объекте settings или файле настроек вместо этого. См. Activate an output style |
pathToClaudeCodeExecutable | string | Автоопределение из встроенного нативного бинарного файла | Путь к исполняемому файлу Claude Code. Требуется только если опциональные зависимости были пропущены при установке или ваша платформа не в поддерживаемом наборе |
permissionMode | PermissionMode | 'default' | Режим разрешения для сессии |
permissionPromptToolName | string | undefined | Имя MCP инструмента для запросов разрешения |
persistSession | boolean | true | Когда false, отключает сохранение сессии на диск. Сессии не могут быть возобновлены позже |
planModeInstructions | string | undefined | Пользовательские инструкции рабочего процесса для Plan Mode. Когда permissionMode это 'plan', эта строка заменяет тело рабочего процесса режима плана по умолчанию. CLI по-прежнему оборачивает его с преамбулой принудительного соблюдения только для чтения и нижним колонтитулом протокола ExitPlanMode |
plugins | SdkPluginConfig[] | [] | Загружайте пользовательские plugins из локальных путей. См. Plugins для деталей |
promptSuggestions | boolean | false | Включите предложения запросов. Выдаёт сообщение prompt_suggestion после каждого хода с предсказанным следующим пользовательским запросом |
resume | string | undefined | ID сессии для возобновления |
resumeSessionAt | string | undefined | Возобновите сессию в определённом UUID сообщения |
sandbox | SandboxSettings | undefined | Программно настройте поведение sandbox. См. Sandbox settings для деталей |
sessionId | string | Автогенерируемый | Используйте определённый UUID для сессии вместо автогенерирования |
sessionStore | SessionStore | undefined | Зеркалируйте транскрипты сессий на внешний бэкенд, чтобы любой хост мог их возобновить. См. Persist sessions to external storage |
sessionStoreFlush | 'batched' | 'eager' | 'batched' | Alpha. Режим flush для sessionStore. Игнорируется, когда sessionStore не установлен |
settings | string | Settings | undefined | Встроенный объект settings или путь к файлу настроек. Заполняет слой flag-settings в порядке приоритета. Измените во время выполнения с помощью applyFlagSettings() |
settingSources | SettingSource[] | Значения по умолчанию CLI (все источники) | Контролируйте, какие настройки файловой системы загружать. Передайте [] для отключения пользовательских, проектных и локальных настроек. Управляемые политикой настройки загружаются независимо. См. Use Claude Code features |
skills | string[] | 'all' | undefined | Skills доступные для сессии. Передайте 'all' для включения каждого обнаруженного skill, или список имён skills. Когда установлено, SDK автоматически добавляет инструмент Skill в allowedTools. Если вы также передаёте tools, включите 'Skill' в этот список. См. Skills |
spawnClaudeCodeProcess | (options: SpawnOptions) => SpawnedProcess | undefined | Пользовательская функция для запуска процесса Claude Code. Используйте для запуска Claude Code на ВМ, контейнерах или удалённых окружениях |
stderr | (data: string) => void | undefined | Обратный вызов для вывода stderr |
strictMcpConfig | boolean | false | Используйте только серверы, переданные в mcpServers, и игнорируйте проект .mcp.json, пользовательские настройки, MCP серверы, предоставленные plugins, и claude.ai connectors |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean } | undefined (минимальный запрос) | Конфигурация системного запроса. Передайте строку для пользовательского запроса или { type: 'preset', preset: 'claude_code' } для использования системного запроса Claude Code. При использовании формы объекта preset добавьте append для расширения его дополнительными инструкциями и установите excludeDynamicSections: true для перемещения контекста для каждой сессии в первое пользовательское сообщение для лучшего переиспользования prompt caching на разных машинах |
taskBudget | { total: number } | undefined | Alpha. Бюджет задачи на стороне API в токенах. Когда установлено, модели сообщается её оставшийся бюджет токенов, чтобы она могла регулировать использование инструмента и завершить работу до лимита |
thinking | ThinkingConfig | { type: 'adaptive' } для поддерживаемых моделей | Контролирует поведение мышления/рассуждения Claude. См. ThinkingConfig для опций |
title | string | undefined | Отображаемое название для сессии. При возобновлении через resume или continue, сохранённое название возобновляемой сессии имеет приоритет; используйте renameSession() для переименования существующей сессии |
toolAliases | Record<string, string> | undefined | Отображайте встроенные имена инструментов на имена MCP инструментов, чтобы Claude вызывал вашу реализацию MCP вместо встроенной. Например, { Bash: 'mcp__workspace__bash' } |
toolConfig | ToolConfig | undefined | Конфигурация для встроенного поведения инструмента. См. ToolConfig для деталей |
tools | string[] | { type: 'preset'; preset: 'claude_code' } | undefined | Конфигурация инструмента. Передайте массив имён инструментов или используйте preset для получения встроенных инструментов Claude Code |
Обработка медленных или зависших ответов API
Подпроцесс CLI читает несколько переменных окружения, которые контролируют timeout API и обнаружение зависания. Передайте их через опциюenv:
API_TIMEOUT_MS: timeout для каждого запроса на клиенте Anthropic, в миллисекундах. По умолчанию600000. Применяется к основному циклу и всем подагентам.CLAUDE_CODE_MAX_RETRIES: максимальное количество повторных попыток API. По умолчанию10. Каждая повторная попытка получает своё собственное окноAPI_TIMEOUT_MS, поэтому наихудший случай wall time примерноAPI_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)плюс backoff.CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: watchdog зависания для подагентов, запущенных сrun_in_background. По умолчанию600000. Сбрасывается при каждом событии потока; при зависании прерывает подагента, отмечает задачу как неудачную и выводит ошибку родителю с любым частичным результатом. Не применяется к синхронным подагентам.CLAUDE_ENABLE_STREAM_WATCHDOG=1сCLAUDE_STREAM_IDLE_TIMEOUT_MS: прерывает запрос, когда заголовки получены, но тело ответа перестаёт потоком передаваться. По умолчанию отключено.CLAUDE_STREAM_IDLE_TIMEOUT_MSпо умолчанию300000и зажимается до этого минимума. Прерванный запрос проходит через обычный путь повторной попытки.
Query объект
Интерфейс, возвращаемый функцией query().
Методы
| Метод | Описание |
|---|---|
interrupt() | Прерывает запрос (доступно только в режиме потока входных данных) |
rewindFiles(userMessageId, options?) | Восстанавливает файлы в их состояние в указанном пользовательском сообщении. Передайте { dryRun: true } для предпросмотра изменений. Требует enableFileCheckpointing: true. См. File checkpointing |
setPermissionMode() | Изменяет режим разрешения (доступно только в режиме потока входных данных) |
setModel() | Изменяет модель (доступно только в режиме потока входных данных) |
setMaxThinkingTokens() | Устарело: Используйте вместо этого опцию thinking. Изменяет максимальные токены мышления |
applyFlagSettings(settings) | Объединяет настройки в слой flag settings сессии во время выполнения (доступно только в режиме потока входных данных). См. applyFlagSettings() |
initializationResult() | Возвращает полный результат инициализации, включая поддерживаемые команды, модели, информацию об учётной записи и конфигурацию стиля вывода |
supportedCommands() | Возвращает доступные slash commands |
supportedModels() | Возвращает доступные модели с информацией отображения |
supportedAgents() | Возвращает доступные подагентов как AgentInfo[] |
mcpServerStatus() | Возвращает статус подключённых MCP серверов |
accountInfo() | Возвращает информацию об учётной записи |
reconnectMcpServer(serverName) | Переподключитесь к MCP серверу по имени |
toggleMcpServer(serverName, enabled) | Включите или отключите MCP сервер по имени |
setMcpServers(servers) | Динамически замените набор MCP серверов для этой сессии. Возвращает информацию о том, какие серверы были добавлены, удалены и какие ошибки |
streamInput(stream) | Потоком передавайте входные сообщения к запросу для многооборотных диалогов |
stopTask(taskId) | Остановите выполняющуюся фоновую задачу по ID |
close() | Закройте запрос и завершите базовый процесс. Принудительно завершает запрос и очищает все ресурсы |
applyFlagSettings()
Изменяет любую настройку на работающей сессии без перезагрузки запроса. Используйте её, когда настройка, у которой нет выделенного setter, должна измениться в середине сессии, например, ужесточение permissions после того, как агент прочитает ненадёжный ввод. setModel() и setPermissionMode() являются выделенными setters для этих двух ключей; applyFlagSettings() является общей формой, которая принимает любое подмножество ключей настроек, и передача model здесь ведёт себя так же, как setModel().
Только некоторые ключи вступают в силу в середине сессии:
- Применяется на следующем ходу:
model,effortLevel,ultracode,permissions,hooks,skillOverrides,fastMode,awaySummaryEnabled,agent. Переключениеagentтакже применяет переопределение модели этого агента, hooks и системный запрос на следующем ходу. - Нет эффекта в середине сессии: опции системного запроса. Они разрешаются один раз при запуске, поэтому работающая сессия сохраняет исходное значение, даже если вызов успешен. Чтобы их изменить, запустите новую сессию.
settings функции query() заполняет при запуске. Flag settings находятся рядом с верхней частью порядка приоритета настроек: они переопределяют пользовательские, проектные и локальные настройки, и только управляемые политикой настройки могут их переопределить. Это тот же уровень, который раздел приоритета на странице называет программными опциями.
Последовательные вызовы выполняют shallow-merge ключей верхнего уровня. Второй вызов с { permissions: {...} } заменяет весь объект permissions из предыдущего вызова, а не выполняет deep-merge в него. Чтобы очистить ключ из слоя flag и вернуться к источникам с более низким приоритетом, передайте null для этого ключа. Передача undefined не имеет эффекта, потому что сериализация JSON её отбрасывает.
Доступно только в режиме потока входных данных, то же ограничение, что и setModel() и setPermissionMode().
Пример ниже переключает активную модель в середине сессии, а затем очищает переопределение, чтобы модель вернулась к тому, что указывают пользовательские или проектные настройки.
applyFlagSettings() только для TypeScript. Python SDK не предоставляет эквивалентный метод.WarmQuery
Дескриптор, возвращаемый startup(). Подпроцесс уже запущен и инициализирован, поэтому вызов query() на этом дескрипторе записывает запрос непосредственно в готовый процесс без задержки запуска.
Методы
| Метод | Описание |
|---|---|
query(prompt) | Отправьте запрос к предварительно разогретому подпроцессу и верните Query. Может быть вызван только один раз на WarmQuery |
close() | Закройте подпроцесс без отправки запроса. Используйте это для отказа от тёплого запроса, который больше не нужен |
WarmQuery реализует AsyncDisposable, поэтому его можно использовать с await using для автоматической очистки.
SDKControlInitializeResponse
Тип возврата initializationResult(). Содержит данные инициализации сессии.
initialize сессии, которая уже работает, обёртка control-response также содержит опциональный массив pending_permission_requests. Поле находится на самой обёртке response, а не в полезной нагрузке SDKControlInitializeResponse выше. Каждая запись является полным сообщением control_request с той же формой { type: "control_request", request_id, request }, которую сессия потоком передаёт для запросов разрешения во время работы.
Это запросы, которые были выданы до подключения клиента и всё ещё ожидают ответа, поэтому прочитайте этот массив для немедленного отображения в полёте разрешений; они не будут переотправлены.
AgentDefinition
Конфигурация для подагента, определённого программно.
| Поле | Обязательно | Описание |
|---|---|---|
description | Да | Описание на естественном языке, когда использовать этого агента |
tools | Нет | Массив разрешённых имён инструментов. Если опущено, наследует все инструменты от родителя. Для предварительной загрузки Skills в контекст агента используйте поле skills вместо указания 'Skill' здесь |
disallowedTools | Нет | Массив имён инструментов для явного запрещения для этого агента |
prompt | Да | Системный запрос агента |
model | Нет | Переопределение модели для этого агента. Принимает псевдоним, такой как 'sonnet', 'opus', 'haiku', 'inherit', или полный ID модели. Если опущено или 'inherit', использует основную модель |
mcpServers | Нет | Спецификации MCP серверов для этого агента |
skills | Нет | Массив имён skills для предварительной загрузки в контекст агента |
initialPrompt | Нет | Автоматически отправляется как первый пользовательский ход, когда этот агент работает как агент основного потока |
maxTurns | Нет | Максимальное количество агентских ходов (раунды API) перед остановкой |
background | Нет | Запустите этого агента как неблокирующую фоновую задачу при вызове |
memory | Нет | Источник памяти для этого агента: 'user', 'project' или 'local' |
effort | Нет | Уровень усилий рассуждения для этого агента. Принимает именованный уровень или целое число |
permissionMode | Нет | Режим разрешения для выполнения инструмента в этом агенте. См. PermissionMode |
criticalSystemReminder_EXPERIMENTAL | Нет | Экспериментально: Критическое напоминание, добавленное в системный запрос |
AgentMcpServerSpec
Указывает MCP серверы, доступные подагенту. Может быть именем сервера (строка, ссылающаяся на сервер из конфигурации mcpServers родителя) или встроенной конфигурацией сервера, записью, отображающей имена серверов на конфигурации.
McpServerConfigForProcessTransport это McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.
SettingSource
Контролирует, какие источники конфигурации на основе файловой системы SDK загружает настройки из.
| Значение | Описание | Местоположение |
|---|---|---|
'user' | Глобальные пользовательские настройки | ~/.claude/settings.json |
'project' | Общие настройки проекта (контролируемые версией) | .claude/settings.json |
'local' | Локальные настройки проекта (gitignored) | .claude/settings.local.json |
Поведение по умолчанию
КогдаsettingSources опущено или undefined, query() загружает те же настройки файловой системы, что и CLI Claude Code: пользовательские, проектные и локальные. Управляемые политикой настройки загружаются во всех случаях. См. What settingSources does not control для входных данных, которые читаются независимо от этой опции, и как их отключить.
Почему использовать settingSources
Отключите настройки файловой системы:Приоритет настроек
Когда загружаются несколько источников, настройки объединяются с этим приоритетом (от высшего к низшему):- Локальные настройки (
.claude/settings.local.json) - Настройки проекта (
.claude/settings.json) - Пользовательские настройки (
~/.claude/settings.json)
agents, allowedTools и settings, переопределяют пользовательские, проектные и локальные настройки файловой системы. Управляемые политикой настройки имеют приоритет над программными опциями.
PermissionMode
CanUseTool
Тип пользовательской функции разрешения для контроля использования инструмента.
| Опция | Тип | Описание |
|---|---|---|
signal | AbortSignal | Сигнализируется, если операция должна быть отменена |
suggestions | PermissionUpdate[] | Предложенные обновления разрешения, чтобы пользователь не был запрошен снова для этого инструмента. Запросы Bash включают предложение с назначением localSettings destination, поэтому возврат его в updatedPermissions записывает правило в .claude/settings.local.json и сохраняется между сессиями. |
blockedPath | string | Путь файла, который вызвал запрос разрешения, если применимо |
decisionReason | string | Объясняет, почему был вызван этот запрос разрешения |
toolUseID | string | Уникальный идентификатор для этого конкретного вызова инструмента в сообщении ассистента |
agentID | string | Если работает в подагенте, ID подагента |
PermissionResult
Результат проверки разрешения.
ToolConfig
Конфигурация для встроенного поведения инструмента.
| Поле | Тип | Описание |
|---|---|---|
askUserQuestion.previewFormat | 'markdown' | 'html' | Выбирает поле preview на опциях AskUserQuestion и устанавливает его формат содержимого. Если не установлено, Claude не выдаёт предпросмотры |
McpServerConfig
Конфигурация для MCP серверов.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpSdkServerConfigWithInstance
McpClaudeAIProxyServerConfig
SdkPluginConfig
Конфигурация для загрузки plugins в SDK.
| Поле | Тип | Описание |
|---|---|---|
type | 'local' | Должно быть 'local' (в настоящее время поддерживаются только локальные plugins) |
path | string | Абсолютный или относительный путь к директории plugin |
Типы сообщений
SDKMessage
Тип объединения всех возможных сообщений, возвращаемых запросом.
SDKAssistantMessage
Сообщение ответа ассистента.
message это BetaMessage из Anthropic SDK. Оно включает поля, такие как id, content, model, stop_reason и usage.
SDKAssistantMessageError это один из: 'authentication_failed', 'oauth_org_not_allowed', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens' или 'unknown'. 'model_not_found' означает, что выбранная модель не существует или недоступна для вашей учётной записи или развёртывания. 'overloaded' означает, что API вернул 529, потому что сервер работает на полную мощность, в отличие от 'rate_limit', который является 429 в отношении вашей квоты.
SDKUserMessage
Сообщение пользовательского ввода.
shouldQuery на false для добавления сообщения в транскрипт без запуска хода ассистента. Сообщение удерживается и объединяется в следующее пользовательское сообщение, которое запускает ход. Используйте это для внедрения контекста, такого как вывод команды, которую вы запустили вне полосы, без траты вызова модели на это.
SDKUserMessageReplay
Повторно воспроизведённое пользовательское сообщение с требуемым UUID.
SDKResultMessage
Финальное сообщение результата.
subtype:
api_error_status: HTTP код состояния ошибки API, которая завершила диалог. Отсутствует или имеет значениеnull, когда ход завершился без ошибки API.ttft_ms: время до первого токена в миллисекундах. Присутствует только на успешной ветви.terminal_reason: почему цикл завершился. Один из"completed","max_turns","tool_deferred","aborted_streaming","aborted_tools","hook_stopped","stop_hook_prevented","blocking_limit","rapid_refill_breaker","prompt_too_long","image_error"или"model_error".fast_mode_state: один из"on","off"или"cooldown".
origin передаёт SDKMessageOrigin пользовательского сообщения, которое запустило этот результат. Когда фоновая задача завершается и SDK внедряет синтетический ход продолжения, результирующее SDKResultMessage содержит origin: { kind: "task-notification" }. Проверьте это поле, чтобы различить результаты, которые отвечают на ваш запрос, от результатов, выданных для продолжений фоновых задач, чтобы вы могли маршрутизировать или подавлять последние. Поле отсутствует для результатов, выданных перед любым пользовательским ходом, таких как ошибки при запуске.
Когда hook PreToolUse возвращает permissionDecision: "defer", результат имеет stop_reason: "tool_deferred" и deferred_tool_use содержит id, name и input ожидающего инструмента. Прочитайте это поле, чтобы отобразить запрос в вашем собственном пользовательском интерфейсе, затем возобновите с тем же session_id для продолжения. Смотрите Отложить вызов инструмента на потом для полного цикла.
SDKSystemMessage
Сообщение инициализации системы.
SDKPartialAssistantMessage
Потоковое частичное сообщение (только когда includePartialMessages равен true).
SDKCompactBoundaryMessage
Сообщение, указывающее границу компактирования диалога.
SDKPluginInstallMessage
Событие прогресса установки plugin. Выдаётся, когда установлена CLAUDE_CODE_SYNC_PLUGIN_INSTALL, поэтому ваше приложение Agent SDK может отслеживать установку marketplace plugin перед первым ходом. Статусы started и completed заключают в скобки общую установку. Статусы installed и failed сообщают об отдельных marketplaces и включают name.
SDKPermissionDeniedMessage
Событие потока, выданное, когда система разрешений автоматически отклоняет вызов инструмента без интерактивного запроса. Используйте его для отображения отклонения в вашем пользовательском интерфейсе по мере его возникновения, а не только наблюдая результат инструмента is_error, который следует за ним. Интерактивный путь запроса достигает вашего приложения отдельно через callback canUseTool. Отклонения, выданные hook PreToolUse, не сообщаются через это событие.
Это событие требует Claude Code v2.1.136 или позже.
| Поле | Тип | Описание |
|---|---|---|
tool_name | string | Имя инструмента, который был отклонён |
tool_use_id | string | ID блока tool_use, на который отвечает это отклонение |
agent_id | string | ID подагента, когда отклонённый вызов возник внутри подагента. Зеркалирует поле на can_use_tool для маршрутизации на стороне хоста |
decision_reason_type | string | Дискриминатор для компонента, который принял решение, такой как "rule", "mode", "classifier" или "asyncAgent" |
decision_reason | string | Понятная человеку причина от компонента, принявшего решение, если доступна |
message | string | Сообщение об отказе, возвращённое модели в tool_result |
SDKPermissionDenial
Информация об отклонённом использовании tool.
SDKMessageOrigin
Происхождение сообщения с ролью пользователя. Это появляется как origin на SDKUserMessage и передаётся на соответствующее SDKResultMessage, чтобы вы могли определить, что запустило данный ход.
kind | Значение |
|---|---|
human | Прямой ввод от конечного пользователя. На пользовательских сообщениях отсутствующий origin также означает ввод человека. |
channel | Сообщение, поступающее на канал. server это имя исходного MCP сервера. |
peer | Сообщение от другого сеанса агента через SendMessage. from это адрес отправителя; name это отображаемое имя отправителя, если доступно. |
task-notification | Синтетический ход, внедрённый после завершения фоновой задачи. Смотрите SDKTaskNotificationMessage. |
coordinator | Сообщение от координатора команды в команде агентов. |
Типы hooks
Для полного руководства по использованию hooks с примерами и общими паттернами см. руководство Hooks.HookEvent
Доступные события hooks.
HookCallback
Тип функции обратного вызова hook.
HookCallbackMatcher
Конфигурация hook с опциональным matcher.
HookInput
Тип объединения всех типов входных данных hook.
BaseHookInput
Базовый интерфейс, который расширяют все типы входных данных hook.
PreToolUseHookInput
PostToolUseHookInput
PostToolUseFailureHookInput
PostToolBatchHookInput
Срабатывает один раз после того, как каждый вызов инструмента в пакете разрешится, перед следующим запросом модели. tool_response содержит сериализованное содержимое tool_result, которое видит модель; форма отличается от структурированного объекта Output в PostToolUseHookInput.
NotificationHookInput
UserPromptSubmitHookInput
SessionStartHookInput
SessionEndHookInput
StopHookInput
SubagentStartHookInput
SubagentStopHookInput
PreCompactHookInput
PermissionRequestHookInput
SetupHookInput
TeammateIdleHookInput
TaskCompletedHookInput
ConfigChangeHookInput
WorktreeCreateHookInput
WorktreeRemoveHookInput
MessageDisplayHookInput
HookJSONOutput
Возвращаемое значение hook.
AsyncHookJSONOutput
SyncHookJSONOutput
Типы входных данных tool
Документация схем входных данных для всех встроенных tools Claude Code. Эти типы экспортируются из@anthropic-ai/claude-agent-sdk и могут быть использованы для типобезопасного взаимодействия с tools.
ToolInputSchemas
Объединение всех типов входных данных tool, экспортируемое из @anthropic-ai/claude-agent-sdk.
Agent
Имя tool:Agent (ранее Task, который всё ещё принимается как псевдоним)
AskUserQuestion
Имя tool:AskUserQuestion
Bash
Имя tool:Bash
Monitor
Имя tool:Monitor
persistent: true для наблюдений на уровне сессии, таких как хвосты логов. Monitor следует тем же правилам разрешения, что и Bash. См. справочник tool Monitor для поведения и доступности провайдера.
TaskOutput
Имя tool:TaskOutput
Edit
Имя tool:Edit
Read
Имя tool:Read
pages для диапазонов страниц PDF (например, "1-5").
Write
Имя tool:Write
Glob
Имя tool:Glob
Grep
Имя tool:Grep
TaskStop
Имя tool:TaskStop
NotebookEdit
Имя tool:NotebookEdit
WebFetch
Имя tool:WebFetch
WebSearch
Имя tool:WebSearch
Workflow
Имя tool:Workflow
Workflow доступен в Agent SDK v0.3.149 и позже. Требуется хотя бы один из script, name или scriptPath.
| Поле | Тип | Описание |
|---|---|---|
script | string | Встроенный скрипт workflow. Должен начинаться с export const meta = { name, description, phases } как литерал, за которым следует тело скрипта с использованием agent(), parallel(), pipeline() и phase() |
name | string | Имя встроенного workflow или сохранённого в .claude/workflows/. Разрешается в скрипт |
scriptPath | string | Путь к файлу скрипта workflow на диске. Имеет приоритет над script и name. Каждый вызов сохраняет свой скрипт и возвращает путь в результате, поэтому вы можете отредактировать этот файл и повторно вызвать с тем же scriptPath для итерации |
args | unknown | Входное значение, доступное скрипту как глобальная переменная args, для параметризованных именованных workflows, таких как исследовательский вопрос или список путей файлов. Передавайте массивы и объекты как фактические значения JSON, а не как JSON-кодированную строку |
resumeFromRunId | string | Run ID предыдущего вызова Workflow для возобновления. Завершённые вызовы agent() с неизменёнными входными данными возвращают кэшированные результаты; только изменённые или новые вызовы выполняются в реальном времени. Только в одной сессии |
TodoWrite
Имя tool:TodoWrite
Начиная с TypeScript Agent SDK 0.3.142,
TodoWrite отключён по умолчанию. Используйте вместо этого TaskCreate, TaskGet, TaskUpdate и TaskList. См. Миграция на Task tools для обновления кода мониторинга, или установите CLAUDE_CODE_ENABLE_TASKS=0 для возврата к TodoWrite.TaskCreate
Имя tool:TaskCreate
TaskUpdate
Имя tool:TaskUpdate
status на "deleted" для её удаления.
TaskGet
Имя tool:TaskGet
null, когда ID не найден.
TaskList
Имя tool:TaskList
ExitPlanMode
Имя tool:ExitPlanMode
ListMcpResources
Имя tool:ListMcpResourcesTool
ReadMcpResource
Имя tool:ReadMcpResourceTool
EnterWorktree
Имя tool:EnterWorktree
path для переключения в существующий worktree текущего репозитория вместо создания нового. name и path являются взаимоисключающими.
Типы выходных данных Tool
Документация схем выходных данных для всех встроенных tools Claude Code. Эти типы экспортируются из@anthropic-ai/claude-agent-sdk и представляют фактические данные ответа, возвращаемые каждым tool.
ToolOutputSchemas
Объединение всех типов выходных данных tool.
Agent
Имя tool:Agent (ранее Task, который всё ещё принимается как псевдоним)
status: "completed" для завершённых задач, "async_launched" для фоновых задач и "sub_agent_entered" для интерактивных подагентов.
AskUserQuestion
Имя tool:AskUserQuestion
response устанавливается, когда пользователь ввёл свободный ответ вместо ответа на структурированные вопросы; когда присутствует, Claude получает “Пользователь ответил: …” вместо списка ответов по вопросам.
Bash
Имя tool:Bash
backgroundTaskId.
Monitor
Имя tool:Monitor
TaskStop для раннего отмены наблюдения.
Edit
Имя tool:Edit
Read
Имя tool:Read
type.
Write
Имя tool:Write
Glob
Имя tool:Glob
Grep
Имя tool:Grep
mode: список файлов, содержимое с совпадениями или количество совпадений.
TaskStop
Имя tool:TaskStop
NotebookEdit
Имя tool:NotebookEdit
WebFetch
Имя tool:WebFetch
WebSearch
Имя tool:WebSearch
Workflow
Имя tool:Workflow
error перед тем, как рассматривать запуск как начатый: скрипт, который не прошёл проверку синтаксиса, возвращает status: "async_launched" с установленным error и никогда не запускается.
| Поле | Тип | Описание |
|---|---|---|
status | "async_launched" | Tool принял вызов. Это единственное значение, которое принимает поле |
taskId | string | Идентификатор фоновой задачи для запуска |
runId | string | Идентификатор запуска workflow для передачи как resumeFromRunId при последующем вызове |
summary | string | Однострочное описание того, что делает workflow |
transcriptDir | string | Директория, где записываются транскрипты подагента во время выполнения |
scriptPath | string | Путь к сохранённому скрипту workflow для этого запуска. Отредактируйте его и передайте обратно как scriptPath для повторного запуска без повторной отправки скрипта |
error | string | Устанавливается, когда скрипт не прошёл проверку синтаксиса. Если присутствует, запуск не начался несмотря на статус async_launched |
TodoWrite
Имя tool:TodoWrite
Начиная с TypeScript Agent SDK 0.3.142,
TodoWrite отключён по умолчанию. Используйте вместо этого TaskCreate, TaskGet, TaskUpdate и TaskList. Смотрите Миграция на Task tools для обновления кода мониторинга, или установите CLAUDE_CODE_ENABLE_TASKS=0 для возврата к TodoWrite.TaskCreate
Имя tool:TaskCreate
TaskUpdate
Имя tool:TaskUpdate
TaskGet
Имя tool:TaskGet
null когда ID не найден.
TaskList
Имя tool:TaskList
ExitPlanMode
Имя tool:ExitPlanMode
ListMcpResources
Имя tool:ListMcpResourcesTool
ReadMcpResource
Имя tool:ReadMcpResourceTool
EnterWorktree
Имя tool:EnterWorktree
Типы разрешений
PermissionUpdate
Операции для обновления разрешений.
PermissionBehavior
PermissionUpdateDestination
PermissionRuleValue
Другие типы
ApiKeySource
SdkBeta
Доступные бета-функции, которые можно включить через опцию betas. См. Заголовки Beta для дополнительной информации.
SlashCommand
Информация о доступной slash команде.
ModelInfo
Информация о доступной модели.
AgentInfo
Информация о доступном подагенте, который может быть вызван через tool Agent.
| Поле | Тип | Описание |
|---|---|---|
name | string | Идентификатор типа агента (например, "Explore", "general-purpose") |
description | string | Описание, когда использовать этого агента |
model | string | undefined | Псевдоним модели, который использует этот агент. Если опущено, наследует модель родителя |
McpServerStatus
Статус подключённого MCP сервера.
McpServerStatusConfig
Конфигурация MCP сервера, как сообщается mcpServerStatus(). Это объединение всех типов транспорта MCP сервера.
McpServerConfig для деталей по каждому типу транспорта.
AccountInfo
Информация об учётной записи для аутентифицированного пользователя.
ModelUsage
Статистика использования для каждой модели, возвращаемая в сообщениях результата. Значение costUSD это оценка на стороне клиента. См. Отслеживание стоимости и использования для предостережений выставления счётов.
ConfigScope
NonNullableUsage
Версия Usage со всеми nullable полями, сделанными non-nullable.
Usage
Статистика использования токенов. Это тип BetaUsage из @anthropic-ai/sdk.
BetaServerToolUsage и BetaIterationsUsage определены в @anthropic-ai/sdk.
CallToolResult
Тип результата MCP tool (из @modelcontextprotocol/sdk/types.js). structuredContent это объект JSON, который может быть возвращён вместе с content, включая блоки изображений. См. Возврат структурированных данных.
ThinkingConfig
Контролирует поведение мышления/рассуждения Claude. Имеет приоритет над устаревшим maxThinkingTokens.
display контролирует, возвращается ли текст мышления "summarized" или "omitted". На Claude Opus 4.7 и позже, значение по умолчанию API это "omitted", поэтому установите "summarized" для получения содержимого мышления в блоках thinking.
SpawnedProcess
Интерфейс для пользовательского запуска процесса (используется с опцией spawnClaudeCodeProcess). ChildProcess уже удовлетворяет этому интерфейсу.
SpawnOptions
Опции, передаваемые пользовательской функции spawn.
Поле
signal сообщает вашей функции spawn, когда нужно разобрать процесс. Передайте его как опцию signal в spawn() Node, или передайте его обработчику разборки вашей VM или контейнера.Этот сигнал не срабатывает в момент отмены Options.abortController. SDK сначала закрывает stdin процесса и ждёт около двух секунд, чтобы CLI мог корректно завершить работу, затем отменяет этот сигнал. Чтобы реагировать в момент отмены вызывающей стороной, слушайте на вашем собственном Options.abortController.signal, на который может ссылаться ваша функция spawn из её охватывающей области.McpSetServersResult
Результат операции setMcpServers().
RewindFilesResult
Результат операции rewindFiles().
SDKStatusMessage
Сообщение обновления статуса (например, компактирование).
SDKTaskNotificationMessage
Уведомление, когда фоновая задача завершается, не работает или остановлена. Фоновые задачи включают команды Bash run_in_background, наблюдения Monitor и фоновые подагентов.
SDKToolUseSummaryMessage
Резюме использования tool в диалоге.
SDKHookStartedMessage
Выдаётся, когда hook начинает выполняться.
SDKHookProgressMessage
Выдаётся во время выполнения hook с выводом stdout/stderr.
SDKHookResponseMessage
Выдаётся, когда hook завершает выполнение.
SDKToolProgressMessage
Выдаётся периодически во время выполнения tool для указания прогресса.
SDKAuthStatusMessage
Выдаётся во время потоков аутентификации.
SDKTaskStartedMessage
Выдаётся, когда фоновая задача начинается. Поле task_type это "local_bash" для фоновых команд Bash и наблюдений Monitor, "local_agent" для подагентов или "remote_agent".
SDKTaskProgressMessage
Выдаётся периодически во время выполнения подагента или фоновой задачи. Поле summary заполняется только когда включён agentProgressSummaries.
SDKTaskUpdatedMessage
Выдаётся, когда состояние фоновой задачи изменяется, например, когда она переходит из running в completed. Объедините patch в вашу локальную карту задач, индексированную по task_id. Поле end_time это временная метка Unix epoch в миллисекундах, сравнимая с Date.now().
SDKFilesPersistedEvent
Выдаётся, когда контрольные точки файлов сохраняются на диск.
SDKRateLimitEvent
Выдаётся, когда сессия встречает ограничение скорости.
SDKLocalCommandOutputMessage
Вывод из локальной slash команды (например, /voice или /usage). Отображается как текст в стиле ассистента в транскрипте.
SDKCommandsChangedMessage
Выдаётся, когда набор доступных команд изменяется во время сессии, например, когда skills обнаруживаются при входе агента в подпапку. Массив commands это полный обновлённый список, поэтому замените любой кэшированный список команд этим payload. Повторный вызов supportedCommands() не эквивалентен: этот метод возвращает снимок, захваченный при инициализации, и не отражает изменения во время сессии.
SDKPromptSuggestionMessage
Выдаётся после каждого хода, когда promptSuggestions включён. Содержит предсказанный следующий пользовательский запрос.
AbortError
Пользовательский класс ошибки для операций отмены.
Конфигурация Sandbox
SandboxSettings
Конфигурация для поведения sandbox. Используйте это для включения sandboxing команд и программной конфигурации ограничений сети.
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
enabled | boolean | false | Включите режим sandbox для выполнения команд |
failIfUnavailable | boolean | true | Остановитесь при запуске, если enabled имеет значение true, но sandbox не может запуститься. Установите false для возврата к выполнению без sandbox с предупреждением на stderr |
autoAllowBashIfSandboxed | boolean | true | Автоматически одобряйте bash команды, когда sandbox включён |
excludedCommands | string[] | [] | Команды, которые всегда обходят ограничения sandbox (например, ['docker']). Они работают без sandbox автоматически без участия модели |
allowUnsandboxedCommands | boolean | true | Разрешите модели запрашивать выполнение команд вне sandbox. Когда true, модель может установить dangerouslyDisableSandbox в входных данных tool, что переходит к системе разрешений |
network | SandboxNetworkConfig | undefined | Конфигурация sandbox, специфичная для сети |
filesystem | SandboxFilesystemConfig | undefined | Конфигурация sandbox, специфичная для файловой системы, для ограничений чтения/записи |
ignoreViolations | Record<string, string[]> | undefined | Карта категорий нарушений на паттерны для игнорирования (например, { file: ['/tmp/*'], network: ['localhost'] }) |
enableWeakerNestedSandbox | boolean | false | Включите более слабый вложенный sandbox для совместимости |
ripgrep | { command: string; args?: string[] } | undefined | Конфигурация пользовательского бинарного файла ripgrep для окружений sandbox |
Sandbox зависит от поддержки платформы и, на Linux, инструментов, таких как
bubblewrap и socat. Когда enabled имеет значение true и sandbox не может запуститься, query() сообщает сообщение result с subtype: "error_during_execution" и причину в errors, затем останавливается. Следите за этим подтипом, а не ожидайте, что query() выбросит исключение перед выдачей сообщений.Для выполнения без sandbox вместо этого установите failIfUnavailable: false.Пример использования
SandboxNetworkConfig
Конфигурация, специфичная для сети, для режима sandbox. Эти параметры применяются к sandboxed Bash командам, когда enabled имеет значение true в родительском SandboxSettings. Они не ограничивают инструмент WebFetch, который использует правила разрешений вместо этого.
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
allowedDomains | string[] | [] | Имена доменов, к которым процессы в sandbox могут получить доступ |
deniedDomains | string[] | [] | Имена доменов, к которым процессы в sandbox не могут получить доступ. Имеет приоритет над allowedDomains |
allowManagedDomainsOnly | boolean | false | Только управляемые параметры. Когда установлено в управляемых параметрах, только записи allowedDomains из управляемых параметров учитываются, а записи из пользовательских, проектных или локальных параметров игнорируются. Не имеет эффекта при установке через опции SDK |
allowLocalBinding | boolean | false | Разрешите процессам привязываться к локальным портам (например, для dev серверов) |
allowUnixSockets | string[] | [] | Пути Unix socket, к которым процессы могут получить доступ (например, Docker socket) |
allowAllUnixSockets | boolean | false | Разрешите доступ ко всем Unix sockets |
httpProxyPort | number | undefined | Порт HTTP прокси для сетевых запросов |
socksProxyPort | number | undefined | Порт SOCKS прокси для сетевых запросов |
Встроенный прокси sandbox применяет
allowedDomains на основе запрашиваемого имени хоста и не завершает и не проверяет трафик TLS, поэтому такие методы, как domain fronting, потенциально могут его обойти. Смотрите Ограничения безопасности Sandboxing для деталей и Безопасное развёртывание для конфигурации прокси, завершающего TLS.SandboxFilesystemConfig
Конфигурация, специфичная для файловой системы, для режима sandbox.
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
allowWrite | string[] | [] | Паттерны путей файлов для разрешения доступа на запись |
denyWrite | string[] | [] | Паттерны путей файлов для запрещения доступа на запись |
denyRead | string[] | [] | Паттерны путей файлов для запрещения доступа на чтение |
Fallback разрешений для команд вне Sandbox
КогдаallowUnsandboxedCommands включён, модель может запросить выполнение команд вне sandbox, установив dangerouslyDisableSandbox: true во входных данных tool. Эти запросы переходят к существующей системе разрешений, что означает, что ваш обработчик canUseTool вызывается, позволяя вам реализовать пользовательскую логику авторизации.
excludedCommands vs allowUnsandboxedCommands:excludedCommands: Статический список команд, которые всегда автоматически обходят sandbox (например,['docker']). Модель не имеет контроля над этим.allowUnsandboxedCommands: Позволяет модели решать во время выполнения, запрашивать ли выполнение вне sandbox, установивdangerouslyDisableSandbox: trueво входных данных tool.
- Аудит запросов модели: Логируйте, когда модель запрашивает выполнение вне sandbox
- Реализуйте allowlists: Разрешайте только определённые команды работать вне sandbox
- Добавьте рабочие процессы одобрения: Требуйте явной авторизации для привилегированных операций
См. также
- Обзор SDK - Общие концепции SDK
- Справочник Python SDK - Документация Python SDK
- Справочник CLI - Интерфейс командной строки
- Общие рабочие процессы - Пошаговые руководства