npm install @anthropic-ai/claude-agent-sdkquery()Основная функция для взаимодействия с Claude Code. Создает асинхронный генератор, который передает сообщения по мере их поступления.
function query({
prompt,
options
}: {
prompt: string | AsyncIterable<SDKUserMessage>;
options?: Options;
}): Query| Параметр | Тип | Описание |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | Входной запрос в виде строки или асинхронного итерируемого объекта для режима потоковой передачи |
options | Options | Необязательный объект конфигурации (см. тип Options ниже) |
Возвращает объект Query, который расширяет AsyncGenerator<SDKMessage, void> с дополнительными методами.
tool()Создает определение типобезопасного инструмента MCP для использования с серверами MCP SDK.
function tool<Schema extends ZodRawShape>(
name: string,
description: string,
inputSchema: Schema,
handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>| Параметр | Тип | Описание |
|---|---|---|
name | string | Имя инструмента |
description | string | Описание того, что делает инструмент |
inputSchema | Schema extends ZodRawShape | Схема Zod, определяющая входные параметры инструмента |
handler | (args, extra) => Promise<CallToolResult> | Асинхронная функция, которая выполняет логику инструмента |
createSdkMcpServer()Создает экземпляр сервера MCP, который работает в том же процессе, что и ваше приложение.
function createSdkMcpServer(options: {
name: string;
version?: string;
tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance| Параметр | Тип | Описание |
|---|---|---|
options.name | string | Имя сервера MCP |
options.version | string | Необязательная строка версии |
options.tools | Array<SdkMcpToolDefinition> | Массив определений инструментов, созданных с помощью tool() |
OptionsОбъект конфигурации для функции query().
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
abortController | AbortController | new AbortController() | Контроллер для отмены операций |
additionalDirectories | string[] | [] | Дополнительные каталоги, к которым может получить доступ Claude |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | Программное определение подагентов |
QueryИнтерфейс, возвращаемый функцией query().
interface Query extends AsyncGenerator<SDKMessage, void> {
interrupt(): Promise<void>;
setPermissionMode(mode: PermissionMode): Promise<void>;
}| Метод | Описание |
|---|---|
interrupt() | Прерывает запрос (доступно только в режиме потоковой передачи входных данных) |
setPermissionMode() | Изменяет режим разрешения (доступно только в режиме потоковой передачи входных данных) |
AgentDefinitionКонфигурация для подагента, определенного программно.
type AgentDefinition = {
description: string;
tools?: string[];
prompt: string;
model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}| Поле | Обязательно | Описание |
|---|---|---|
description | Да | Описание на естественном языке, когда использовать этого агента |
tools | Нет | Массив разрешенных имен инструментов. Если опущено, наследует все инструменты |
prompt | Да | Системный запрос агента |
model | Нет | Переопределение модели для этого агента. Если опущено, использует основную модель |
SettingSourceКонтролирует, какие источники конфигурации на основе файловой системы загружает SDK.
type SettingSource = 'user' | 'project' | 'local';| Значение | Описание | Расположение |
|---|---|---|
'user' | Глобальные параметры пользователя | ~/.claude/settings.json |
'project' | Общие параметры проекта (контролируемые версией) | .claude/settings.json |
'local' | Локальные параметры проекта (в gitignore) | .claude/settings.local.json |
Когда settingSources опущено или undefined, SDK не загружает параметры файловой системы. Это обеспечивает изоляцию для приложений SDK.
Загрузить все параметры файловой системы (поведение прежних версий):
// Загрузить все параметры, как это делал SDK v0.0.x
const result = query({
prompt: "Analyze this code",
options: {
settingSources: ['user', 'project', 'local'] // Загрузить все параметры
}
});Загрузить только определенные источники параметров:
// Загрузить только параметры проекта, игнорировать пользовательские и локальные
const result = query({
prompt: "Run CI checks",
options: {
settingSources: ['project'] // Только .claude/settings.json
}
});Тестирование и среды CI:
// Обеспечить согласованное поведение в CI, исключив локальные параметры
const result = query({
prompt: "Run tests",
options: {
settingSources: ['project'], // Только параметры, общие для команды
permissionMode: 'bypassPermissions'
}
});Приложения только для SDK:
// Определить все программно (поведение по умолчанию)
// Нет зависимостей файловой системы - settingSources по умолчанию []
const result = query({
prompt: "Review this PR",
options: {
// settingSources: [] является значением по умолчанию, не нужно указывать
agents: { /* ... */ },
mcpServers: { /* ... */ },
allowedTools: ['Read', 'Grep', 'Glob']
}
});Загрузка инструкций проекта CLAUDE.md:
// Загрузить параметры проекта для включения файлов CLAUDE.md
const result = query({
prompt: "Add a new feature following project conventions",
options: {
systemPrompt: {
type: 'preset',
preset: 'claude_code' // Требуется для использования CLAUDE.md
},
settingSources: ['project'], // Загружает CLAUDE.md из каталога проекта
allowedTools: ['Read', 'Write', 'Edit']
}
});Когда загружаются несколько источников, параметры объединяются с этим приоритетом (от высшего к низшему):
.claude/settings.local.json).claude/settings.json)~/.claude/settings.json)Программные опции (такие как agents, allowedTools) всегда переопределяют параметры файловой системы.
PermissionModetype PermissionMode =
| 'default' // Стандартное поведение разрешения
| 'acceptEdits' // Автоматически принимать редактирование файлов
| 'bypassPermissions' // Обойти все проверки разрешения
| 'plan' // Режим планирования - без выполненияCanUseToolТип пользовательской функции разрешения для управления использованием инструмента.
type CanUseTool = (
toolName: string,
input: ToolInput,
options: {
signal: AbortSignal;
suggestions?: PermissionUpdate[];
}
) => Promise<PermissionResult>;PermissionResultРезультат проверки разрешения.
type PermissionResult =
| {
behavior: 'allow';
updatedInput: ToolInput;
updatedPermissions?: PermissionUpdate[];
}
| {
behavior: 'deny';
message: string;
interrupt?: boolean;
}McpServerConfigКонфигурация для серверов MCP.
type McpServerConfig =
| McpStdioServerConfig
| McpSSEServerConfig
| McpHttpServerConfig
| McpSdkServerConfigWithInstance;McpStdioServerConfigtype McpStdioServerConfig = {
type?: 'stdio';
command: string;
args?: string[];
env?: Record<string, string>;
}McpSSEServerConfigtype McpSSEServerConfig = {
type: 'sse';
url: string;
headers?: Record<string, string>;
}McpHttpServerConfigtype McpHttpServerConfig = {
type: 'http';
url: string;
headers?: Record<string, string>;
}McpSdkServerConfigWithInstancetype McpSdkServerConfigWithInstance = {
type: 'sdk';
name: string;
instance: McpServer;
}SdkPluginConfigКонфигурация для загрузки плагинов в SDK.
type SdkPluginConfig = {
type: 'local';
path: string;
}| Поле | Тип | Описание |
|---|---|---|
type | 'local' | Должно быть 'local' (в настоящее время поддерживаются только локальные плагины) |
path | string | Абсолютный или относительный путь к каталогу плагина |
Пример:
plugins: [
{ type: 'local', path: './my-plugin' },
{ type: 'local', path: '/absolute/path/to/plugin' }
]Полную информацию о создании и использовании плагинов см. в разделе Плагины.
SDKMessageТип объединения всех возможных сообщений, возвращаемых запросом.
type SDKMessage =
| SDKAssistantMessage
| SDKUserMessage
| SDKUserMessageReplay
| SDKResultMessage
| SDKSystemMessage
| SDKPartialAssistantMessage
| SDKCompactBoundaryMessage;SDKAssistantMessageСообщение ответа ассистента.
type SDKAssistantMessage = {
type: 'assistant';
uuid: UUID;
session_id: string;
message: APIAssistantMessage; // Из SDK Anthropic
parent_tool_use_id: string | null;
}SDKUserMessageСообщение пользовательского ввода.
type SDKUserMessage = {
type: 'user';
uuid?: UUID;
session_id: string;
message: APIUserMessage; // Из SDK Anthropic
parent_tool_use_id: string | null;
}SDKUserMessageReplayВоспроизведенное пользовательское сообщение с обязательным UUID.
type SDKUserMessageReplay = {
type: 'user';
uuid: UUID;
session_id: string;
message: APIUserMessage;
parent_tool_use_id: string | null;
}SDKResultMessageФинальное сообщение результата.
type SDKResultMessage =
| {
type: 'result';
subtype: 'success';
uuid: UUID;
session_id: string;
duration_ms: number;
duration_api_ms: number;
is_error: boolean;
num_turns: number;
result: string;
total_cost_usd: number;
usage: NonNullableUsage;
permission_denials: SDKPermissionDenial[];
}
| {
type: 'result';
subtype: 'error_max_turns' | 'error_during_execution';
uuid: UUID;
session_id: string;
duration_ms: number;
duration_api_ms: number;
is_error: boolean;
num_turns: number;
total_cost_usd: number;
usage: NonNullableUsage;
permission_denials: SDKPermissionDenial[];
}SDKSystemMessageСообщение инициализации системы.
type SDKSystemMessage = {
type: 'system';
subtype: 'init';
uuid: UUID;
session_id: string;
apiKeySource: ApiKeySource;
cwd: string;
tools: string[];
mcp_servers: {
name: string;
status: string;
}[];
model: string;
permissionMode: PermissionMode;
slash_commands: string[];
output_style: string;
}SDKPartialAssistantMessageПотоковое частичное сообщение (только когда includePartialMessages имеет значение true).
type SDKPartialAssistantMessage = {
type: 'stream_event';
event: RawMessageStreamEvent; // Из SDK Anthropic
parent_tool_use_id: string | null;
uuid: UUID;
session_id: string;
}SDKCompactBoundaryMessageСообщение, указывающее на границу компактирования разговора.
type SDKCompactBoundaryMessage = {
type: 'system';
subtype: 'compact_boundary';
uuid: UUID;
session_id: string;
compact_metadata: {
trigger: 'manual' | 'auto';
pre_tokens: number;
};
}SDKPermissionDenialИнформация об отклоненном использовании инструмента.
type SDKPermissionDenial = {
tool_name: string;
tool_use_id: string;
tool_input: ToolInput;
}HookEventДоступные события хуков.
type HookEvent =
| 'PreToolUse'
| 'PostToolUse'
| 'Notification'
| 'UserPromptSubmit'
| 'SessionStart'
| 'SessionEnd'
| 'Stop'
| 'SubagentStop'
| 'PreCompact';HookCallbackТип функции обратного вызова хука.
type HookCallback = (
input: HookInput, // Объединение всех типов входных данных хука
toolUseID: string | undefined,
options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;HookCallbackMatcherКонфигурация хука с необязательным сопоставителем.
interface HookCallbackMatcher {
matcher?: string;
hooks: HookCallback[];
}HookInputТип объединения всех типов входных данных хука.
type HookInput =
| PreToolUseHookInput
| PostToolUseHookInput
| NotificationHookInput
| UserPromptSubmitHookInput
| SessionStartHookInput
| SessionEndHookInput
| StopHookInput
| SubagentStopHookInput
| PreCompactHookInput;BaseHookInputБазовый интерфейс, который расширяют все типы входных данных хука.
type BaseHookInput = {
session_id: string;
transcript_path: string;
cwd: string;
permission_mode?: string;
}PreToolUseHookInputtype PreToolUseHookInput = BaseHookInput & {
hook_event_name: 'PreToolUse';
tool_name: string;
tool_input: ToolInput;
}PostToolUseHookInputtype PostToolUseHookInput = BaseHookInput & {
hook_event_name: 'PostToolUse';
tool_name: string;
tool_input: ToolInput;
tool_response: ToolOutput;
}NotificationHookInputtype NotificationHookInput = BaseHookInput & {
hook_event_name: 'Notification';
message: string;
title?: string;
}UserPromptSubmitHookInputtype UserPromptSubmitHookInput = BaseHookInput & {
hook_event_name: 'UserPromptSubmit';
prompt: string;
}SessionStartHookInputtype SessionStartHookInput = BaseHookInput & {
hook_event_name: 'SessionStart';
source: 'startup' | 'resume' | 'clear' | 'compact';
}SessionEndHookInputtype SessionEndHookInput = BaseHookInput & {
hook_event_name: 'SessionEnd';
reason: 'clear' | 'logout' | 'prompt_input_exit' | 'other';
}StopHookInputtype StopHookInput = BaseHookInput & {
hook_event_name: 'Stop';
stop_hook_active: boolean;
}SubagentStopHookInputtype SubagentStopHookInput = BaseHookInput & {
hook_event_name: 'SubagentStop';
stop_hook_active: boolean;
}PreCompactHookInputtype PreCompactHookInput = BaseHookInput & {
hook_event_name: 'PreCompact';
trigger: 'manual' | 'auto';
custom_instructions: string | null;
}HookJSONOutputВозвращаемое значение хука.
type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;AsyncHookJSONOutputtype AsyncHookJSONOutput = {
async: true;
asyncTimeout?: number;
}SyncHookJSONOutputtype SyncHookJSONOutput = {
continue?: boolean;
suppressOutput?: boolean;
stopReason?: string;
decision?: 'approve' | 'block';
systemMessage?: string;
reason?: string;
hookSpecificOutput?:
| {
hookEventName: 'PreToolUse';
permissionDecision?: 'allow' | 'deny' | 'ask';
permissionDecisionReason?: string;
}
| {
hookEventName: 'UserPromptSubmit';
additionalContext?: string;
}
| {
hookEventName: 'SessionStart';
additionalContext?: string;
}
| {
hookEventName: 'PostToolUse';
additionalContext?: string;
};
}Документация схем входных данных для всех встроенных инструментов Claude Code. Эти типы экспортируются из @anthropic-ai/claude-agent-sdk и могут использоваться для типобезопасного взаимодействия с инструментами.
ToolInputПримечание: Это тип только для документации для ясности. Он представляет объединение всех типов входных данных инструмента.
type ToolInput =
| AgentInput
| BashInput
| BashOutputInput
| FileEditInput
| FileReadInput
| FileWriteInput
| GlobInput
| GrepInput
| KillShellInput
| NotebookEditInput
| WebFetchInput
| WebSearchInput
| TodoWriteInput
| ExitPlanModeInput
| ListMcpResourcesInput
| ReadMcpResourceInput;Имя инструмента: Task
interface AgentInput {
/**
* Краткое описание задачи (3-5 слов)
*/
description: string;
/**
* Задача для выполнения агентом
*/
prompt: string;
/**
* Тип специализированного агента для использования для этой задачи
*/
subagent_type: string;
}Запускает нового агента для автономного выполнения сложных многошаговых задач.
Имя инструмента: Bash
interface BashInput {
/**
* Команда для выполнения
*/
command: string;
/**
* Необязательный тайм-аут в миллисекундах (максимум 600000)
*/
timeout?: number;
/**
* Четкое, краткое описание того, что делает эта команда, в 5-10 словах
*/
description?: string;
/**
* Установите значение true, чтобы запустить эту команду в фоновом режиме
*/
run_in_background?: boolean;
}Выполняет команды bash в постоянном сеансе оболочки с необязательным тайм-аутом и фоновым выполнением.
Имя инструмента: BashOutput
interface BashOutputInput {
/**
* ID фоновой оболочки для получения вывода
*/
bash_id: string;
/**
* Необязательное регулярное выражение для фильтрации строк вывода
*/
filter?: string;
}Получает вывод из работающей или завершенной фоновой оболочки bash.
Имя инструмента: Edit
interface FileEditInput {
/**
* Абсолютный путь к файлу для изменения
*/
file_path: string;
/**
* Текст для замены
*/
old_string: string;
/**
* Текст для замены (должен отличаться от old_string)
*/
new_string: string;
/**
* Заменить все вхождения old_string (по умолчанию false)
*/
replace_all?: boolean;
}Выполняет точные замены строк в файлах.
Имя инструмента: Read
interface FileReadInput {
/**
* Абсолютный путь к файлу для чтения
*/
file_path: string;
/**
* Номер строки для начала чтения
*/
offset?: number;
/**
* Количество строк для чтения
*/
limit?: number;
}Читает файлы из локальной файловой системы, включая текст, изображения, PDF и записные книжки Jupyter.
Имя инструмента: Write
interface FileWriteInput {
/**
* Абсолютный путь к файлу для записи
*/
file_path: string;
/**
* Содержимое для записи в файл
*/
content: string;
}Записывает файл в локальную файловую систему, перезаписывая, если он существует.
Имя инструмента: Glob
interface GlobInput {
/**
* Шаблон glob для сопоставления файлов
*/
pattern: string;
/**
* Каталог для поиска (по умолчанию cwd)
*/
path?: string;
}Быстрое сопоставление шаблонов файлов, которое работает с кодовой базой любого размера.
Имя инструмента: Grep
interface GrepInput {
/**
* Шаблон регулярного выражения для поиска
*/
pattern: string;
/**
* Файл или каталог для поиска (по умолчанию cwd)
*/
path?: string;
/**
* Шаблон glob для фильтрации файлов (например, "*.js")
*/
glob?: string;
/**
* Тип файла для поиска (например, "js", "py", "rust")
*/
type?: string;
/**
* Режим вывода: "content", "files_with_matches" или "count"
*/
output_mode?: 'content' | 'files_with_matches' | 'count';
/**
* Поиск без учета регистра
*/
'-i'?: boolean;
/**
* Показать номера строк (для режима содержимого)
*/
'-n'?: boolean;
/**
* Строки для отображения перед каждым совпадением
*/
'-B'?: number;
/**
* Строки для отображения после каждого совпадения
*/
'-A'?: number;
/**
* Строки для отображения перед и после каждого совпадения
*/
'-C'?: number;
/**
* Ограничить вывод первыми N строками/записями
*/
head_limit?: number;
/**
* Включить многострочный режим
*/
multiline?: boolean;
}Мощный инструмент поиска, построенный на ripgrep с поддержкой регулярных выражений.
Имя инструмента: KillBash
interface KillShellInput {
/**
* ID фоновой оболочки для завершения
*/
shell_id: string;
}Завершает работающую фоновую оболочку bash по ее ID.
Имя инструмента: NotebookEdit
interface NotebookEditInput {
/**
* Абсолютный путь к файлу записной книжки Jupyter
*/
notebook_path: string;
/**
* ID ячейки для редактирования
*/
cell_id?: string;
/**
* Новый источник для ячейки
*/
new_source: string;
/**
* Тип ячейки (код или markdown)
*/
cell_type?: 'code' | 'markdown';
/**
* Тип редактирования (замена, вставка, удаление)
*/
edit_mode?: 'replace' | 'insert' | 'delete';
}Редактирует ячейки в файлах записной книжки Jupyter.
Имя инструмента: WebFetch
interface WebFetchInput {
/**
* URL для получения содержимого
*/
url: string;
/**
* Запрос для запуска на полученном содержимом
*/
prompt: string;
}Получает содержимое с URL и обрабатывает его с помощью модели AI.
Имя инструмента: WebSearch
interface WebSearchInput {
/**
* Поисковый запрос для использования
*/
query: string;
/**
* Включить только результаты из этих доменов
*/
allowed_domains?: string[];
/**
* Никогда не включать результаты из этих доменов
*/
blocked_domains?: string[];
}Ищет в Интернете и возвращает отформатированные результаты.
Имя инструмента: TodoWrite
interface TodoWriteInput {
/**
* Обновленный список задач
*/
todos: Array<{
/**
* Описание задачи
*/
content: string;
/**
* Статус задачи
*/
status: 'pending' | 'in_progress' | 'completed';
/**
* Активная форма описания задачи
*/
activeForm: string;
}>;
}Создает и управляет структурированным списком задач для отслеживания прогресса.
Имя инструмента: ExitPlanMode
interface ExitPlanModeInput {
/**
* План для запуска пользователем на утверждение
*/
plan: string;
}Выходит из режима планирования и предлагает пользователю утвердить план.
Имя инструмента: ListMcpResources
interface ListMcpResourcesInput {
/**
* Необязательное имя сервера для фильтрации ресурсов
*/
server?: string;
}Перечисляет доступные ресурсы MCP с подключенных серверов.
Имя инструмента: ReadMcpResource
interface ReadMcpResourceInput {
/**
* Имя сервера MCP
*/
server: string;
/**
* URI ресурса для чтения
*/
uri: string;
}Читает определенный ресурс MCP с сервера.
Документация схем выходных данных для всех встроенных инструментов Claude Code. Эти типы представляют фактические данные ответа, возвращаемые каждым инструментом.
ToolOutputПримечание: Это тип только для документации для ясности. Он представляет объединение всех типов выходных данных инструмента.
type ToolOutput =
| TaskOutput
| BashOutput
| BashOutputToolOutput
| EditOutput
| ReadOutput
| WriteOutput
| GlobOutput
| GrepOutput
| KillBashOutput
| NotebookEditOutput
| WebFetchOutput
| WebSearchOutput
| TodoWriteOutput
| ExitPlanModeOutput
| ListMcpResourcesOutput
| ReadMcpResourceOutput;Имя инструмента: Task
interface TaskOutput {
/**
* Финальное сообщение результата от подагента
*/
result: string;
/**
* Статистика использования токенов
*/
usage?: {
input_tokens: number;
output_tokens: number;
cache_creation_input_tokens?: number;
cache_read_input_tokens?: number;
};
/**
* Общая стоимость в USD
*/
total_cost_usd?: number;
/**
* Время выполнения в миллисекундах
*/
duration_ms?: number;
}Возвращает финальный результат от подагента после завершения делегированной задачи.
Имя инструмента: Bash
interface BashOutput {
/**
* Объединенный вывод stdout и stderr
*/
output: string;
/**
* Код выхода команды
*/
exitCode: number;
/**
* Была ли команда завершена из-за тайм-аута
*/
killed?: boolean;
/**
* ID оболочки для фоновых процессов
*/
shellId?: string;
}Возвращает вывод команды со статусом выхода. Фоновые команды возвращаются немедленно с shellId.
Имя инструмента: BashOutput
interface BashOutputToolOutput {
/**
* Новый вывод с момента последней проверки
*/
output: string;
/**
* Текущий статус оболочки
*/
status: 'running' | 'completed' | 'failed';
/**
* Код выхода (при завершении)
*/
exitCode?: number;
}Возвращает дополнительный вывод из фоновых оболочек.
Имя инструмента: Edit
interface EditOutput {
/**
* Сообщение подтверждения
*/
message: string;
/**
* Количество выполненных замен
*/
replacements: number;
/**
* Путь к отредактированному файлу
*/
file_path: string;
}Возвращает подтверждение успешного редактирования с количеством замен.
Имя инструмента: Read
type ReadOutput =
| TextFileOutput
| ImageFileOutput
| PDFFileOutput
| NotebookFileOutput;
interface TextFileOutput {
/**
* Содержимое файла с номерами строк
*/
content: string;
/**
* Общее количество строк в файле
*/
total_lines: number;
/**
* Фактически возвращенные строки
*/
lines_returned: number;
}
interface ImageFileOutput {
/**
* Данные изображения в кодировке Base64
*/
image: string;
/**
* MIME-тип изображения
*/
mime_type: string;
/**
* Размер файла в байтах
*/
file_size: number;
}
interface PDFFileOutput {
/**
* Массив содержимого страниц
*/
pages: Array<{
page_number: number;
text?: string;
images?: Array<{
image: string;
mime_type: string;
}>;
}>;
/**
* Общее количество страниц
*/
total_pages: number;
}
interface NotebookFileOutput {
/**
* Ячейки записной книжки Jupyter
*/
cells: Array<{
cell_type: 'code' | 'markdown';
source: string;
outputs?: any[];
execution_count?: number;
}>;
/**
* Метаданные записной книжки
*/
metadata?: Record<string, any>;
}Возвращает содержимое файла в формате, соответствующем типу файла.
Имя инструмента: Write
interface WriteOutput {
/**
* Сообщение об успехе
*/
message: string;
/**
* Количество записанных байтов
*/
bytes_written: number;
/**
* Путь к записанному файлу
*/
file_path: string;
}Возвращает подтверждение после успешной записи файла.
Имя инструмента: Glob
interface GlobOutput {
/**
* Массив совпадающих путей файлов
*/
matches: string[];
/**
* Количество найденных совпадений
*/
count: number;
/**
* Используемый каталог поиска
*/
search_path: string;
}Возвращает пути файлов, соответствующие шаблону glob, отсортированные по времени изменения.
Имя инструмента: Grep
type GrepOutput =
| GrepContentOutput
| GrepFilesOutput
| GrepCountOutput;
interface GrepContentOutput {
/**
* Совпадающие строки с контекстом
*/
matches: Array<{
file: string;
line_number?: number;
line: string;
before_context?: string[];
after_context?: string[];
}>;
/**
* Общее количество совпадений
*/
total_matches: number;
}
interface GrepFilesOutput {
/**
* Файлы, содержащие совпадения
*/
files: string[];
/**
* Количество файлов с совпадениями
*/
count: number;
}
interface GrepCountOutput {
/**
* Количество совпадений на файл
*/
counts: Array<{
file: string;
count: number;
}>;
/**
* Общее количество совпадений во всех файлах
*/
total: number;
}Возвращает результаты поиска в формате, указанном в output_mode.
Имя инструмента: KillBash
interface KillBashOutput {
/**
* Сообщение об успехе
*/
message: string;
/**
* ID завершенной оболочки
*/
shell_id: string;
}Возвращает подтверждение после завершения фоновой оболочки.
Имя инструмента: NotebookEdit
interface NotebookEditOutput {
/**
* Сообщение об успехе
*/
message: string;
/**
* Тип выполненного редактирования
*/
edit_type: 'replaced' | 'inserted' | 'deleted';
/**
* ID затронутой ячейки
*/
cell_id?: string;
/**
* Общее количество ячеек в записной книжке после редактирования
*/
total_cells: number;
}Возвращает подтверждение после изменения записной книжки Jupyter.
Имя инструмента: WebFetch
interface WebFetchOutput {
/**
* Ответ модели AI на запрос
*/
response: string;
/**
* URL, который был получен
*/
url: string;
/**
* Финальный URL после перенаправлений
*/
final_url?: string;
/**
* Код состояния HTTP
*/
status_code?: number;
}Возвращает анализ модели AI полученного веб-содержимого.
Имя инструмента: WebSearch
interface WebSearchOutput {
/**
* Результаты поиска
*/
results: Array<{
title: string;
url: string;
snippet: string;
/**
* Дополнительные метаданные, если доступны
*/
metadata?: Record<string, any>;
}>;
/**
* Общее количество результатов
*/
total_results: number;
/**
* Выполненный поисковый запрос
*/
query: string;
}Возвращает отформатированные результаты поиска из Интернета.
Имя инструмента: TodoWrite
interface TodoWriteOutput {
/**
* Сообщение об успехе
*/
message: string;
/**
* Текущая статистика задач
*/
stats: {
total: number;
pending: number;
in_progress: number;
completed: number;
};
}Возвращает подтверждение с текущей статистикой задач.
Имя инструмента: ExitPlanMode
interface ExitPlanModeOutput {
/**
* Сообщение подтверждения
*/
message: string;
/**
* Утвердил ли пользователь план
*/
approved?: boolean;
}Возвращает подтверждение после выхода из режима планирования.
Имя инструмента: ListMcpResources
interface ListMcpResourcesOutput {
/**
* Доступные ресурсы
*/
resources: Array<{
uri: string;
name: string;
description?: string;
mimeType?: string;
server: string;
}>;
/**
* Общее количество ресурсов
*/
total: number;
}Возвращает список доступных ресурсов MCP.
Имя инструмента: ReadMcpResource
interface ReadMcpResourceOutput {
/**
* Содержимое ресурса
*/
contents: Array<{
uri: string;
mimeType?: string;
text?: string;
blob?: string;
}>;
/**
* Сервер, предоставивший ресурс
*/
server: string;
}Возвращает содержимое запрошенного ресурса MCP.
PermissionUpdateОперации для обновления разрешений.
type PermissionUpdate =
| {
type: 'addRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'replaceRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'removeRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'setMode';
mode: PermissionMode;
destination: PermissionUpdateDestination;
}
| {
type: 'addDirectories';
directories: string[];
destination: PermissionUpdateDestination;
}
| {
type: 'removeDirectories';
directories: string[];
destination: PermissionUpdateDestination;
}PermissionBehaviortype PermissionBehavior = 'allow' | 'deny' | 'ask';PermissionUpdateDestinationtype PermissionUpdateDestination =
| 'userSettings' // Глобальные пользовательские параметры
| 'projectSettings' // Параметры проекта для каждого каталога
| 'localSettings' // Локальные параметры, игнорируемые Git
| 'session' // Только текущий сеансPermissionRuleValuetype PermissionRuleValue = {
toolName: string;
ruleContent?: string;
}ApiKeySourcetype ApiKeySource = 'user' | 'project' | 'org' | 'temporary';ConfigScopetype ConfigScope = 'local' | 'user' | 'project';NonNullableUsageВерсия Usage со всеми обнуляемыми полями, сделанными необнуляемыми.
type NonNullableUsage = {
[K in keyof Usage]: NonNullable<Usage[K]>;
}UsageСтатистика использования токенов (из @anthropic-ai/sdk).
type Usage = {
input_tokens: number | null;
output_tokens: number | null;
cache_creation_input_tokens?: number | null;
cache_read_input_tokens?: number | null;
}CallToolResultТип результата инструмента MCP (из @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
content: Array<{
type: 'text' | 'image' | 'resource';
// Дополнительные поля варьируются в зависимости от типа
}>;
isError?: boolean;
}AbortErrorПользовательский класс ошибок для операций прерывания.
class AbortError extends Error {}allowedTools |
string[] |
| Все инструменты |
| Список разрешенных имен инструментов |
canUseTool | CanUseTool | undefined | Пользовательская функция разрешения для использования инструмента |
continue | boolean | false | Продолжить самый последний разговор |
cwd | string | process.cwd() | Текущий рабочий каталог |
disallowedTools | string[] | [] | Список запрещенных имен инструментов |
env | Dict<string> | process.env | Переменные окружения |
executable | 'bun' | 'deno' | 'node' | Автоопределение | Используемая среда выполнения JavaScript |
executableArgs | string[] | [] | Аргументы для передачи исполняемому файлу |
extraArgs | Record<string, string | null> | {} | Дополнительные аргументы |
fallbackModel | string | undefined | Модель для использования, если основная не работает |
forkSession | boolean | false | При возобновлении с помощью resume разветвить на новый ID сеанса вместо продолжения исходного сеанса |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | Обратные вызовы хуков для событий |
includePartialMessages | boolean | false | Включить события частичных сообщений |
maxThinkingTokens | number | undefined | Максимальное количество токенов для процесса размышления |
maxTurns | number | undefined | Максимальное количество ходов разговора |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | Конфигурации серверов MCP |
model | string | По умолчанию из CLI | Используемая модель Claude |
outputFormat | { type: 'json_schema', schema: JSONSchema } | undefined | Определить формат вывода для результатов агента. Подробнее см. в разделе Структурированные выходы |
pathToClaudeCodeExecutable | string | Использует встроенный исполняемый файл | Путь к исполняемому файлу Claude Code |
permissionMode | PermissionMode | 'default' | Режим разрешения для сеанса |
permissionPromptToolName | string | undefined | Имя инструмента MCP для запросов разрешения |
plugins | SdkPluginConfig[] | [] | Загрузить пользовательские плагины из локальных путей. Подробнее см. в разделе Плагины |
resume | string | undefined | ID сеанса для возобновления |
settingSources | SettingSource[] | [] (без параметров) | Контролировать, какие параметры файловой системы загружать. Если опущено, параметры не загружаются. Примечание: Должно включать 'project' для загрузки файлов CLAUDE.md |
stderr | (data: string) => void | undefined | Обратный вызов для вывода stderr |
strictMcpConfig | boolean | false | Применить строгую проверку MCP |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string } | undefined (пустой запрос) | Конфигурация системного запроса. Передайте строку для пользовательского запроса или { type: 'preset', preset: 'claude_code' } для использования системного запроса Claude Code. При использовании формы объекта предустановки добавьте append для расширения системного запроса дополнительными инструкциями |