安装
函数
query()
与 Claude Code 交互的主要函数。创建一个异步生成器,在消息到达时流式传输消息。
参数
参数 | 类型 | 描述 |
---|---|---|
prompt | string | AsyncIterable< SDKUserMessage > | 输入提示,可以是字符串或用于流式模式的异步可迭代对象 |
options | Options | 可选配置对象(见下面的 Options 类型) |
返回值
返回一个Query
对象,该对象扩展了 AsyncGenerator<
SDKMessage
, void>
并包含额外的方法。
tool()
创建一个类型安全的 MCP 工具定义,用于 SDK MCP 服务器。
参数
参数 | 类型 | 描述 |
---|---|---|
name | string | 工具的名称 |
description | string | 工具功能的描述 |
inputSchema | Schema extends ZodRawShape | 定义工具输入参数的 Zod 模式 |
handler | (args, extra) => Promise< CallToolResult > | 执行工具逻辑的异步函数 |
createSdkMcpServer()
创建一个在应用程序同一进程中运行的 MCP 服务器实例。
参数
参数 | 类型 | 描述 |
---|---|---|
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 | 以编程方式定义子代理 |
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 模型 |
pathToClaudeCodeExecutable | string | 自动检测 | Claude Code 可执行文件的路径 |
permissionMode | PermissionMode | 'default' | 会话的权限模式 |
permissionPromptToolName | string | undefined | 权限提示的 MCP 工具名称 |
resume | string | undefined | 要恢复的会话 ID |
settingSources | SettingSource [] | [] (无设置) | 控制加载哪些文件系统设置。省略时,不加载任何设置 |
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 的系统提示 |
Query
query()
函数返回的接口。
方法
方法 | 描述 |
---|---|
interrupt() | 中断查询(仅在流式输入模式下可用) |
setPermissionMode() | 更改权限模式(仅在流式输入模式下可用) |
AgentDefinition
以编程方式定义的子代理的配置。
字段 | 必需 | 描述 |
---|---|---|
description | 是 | 何时使用此代理的自然语言描述 |
tools | 否 | 允许的工具名称数组。如果省略,继承所有工具 |
prompt | 是 | 代理的系统提示 |
model | 否 | 此代理的模型覆盖。如果省略,使用主模型 |
SettingSource
控制 SDK 从哪些基于文件系统的配置源加载设置。
值 | 描述 | 位置 |
---|---|---|
'user' | 全局用户设置 | ~/.claude/settings.json |
'project' | 共享项目设置(版本控制) | .claude/settings.json |
'local' | 本地项目设置(gitignored) | .claude/settings.local.json |
默认行为
当settingSources
省略或未定义时,SDK 不会加载任何文件系统设置。这为 SDK 应用程序提供了隔离。
为什么使用 settingSources?
加载所有文件系统设置(旧版行为):设置优先级
当加载多个源时,设置按此优先级合并(从高到低):- 本地设置(
.claude/settings.local.json
) - 项目设置(
.claude/settings.json
) - 用户设置(
~/.claude/settings.json
)
agents
、allowedTools
)始终覆盖文件系统设置。
PermissionMode
CanUseTool
用于控制工具使用的自定义权限函数类型。
PermissionResult
权限检查的结果。
McpServerConfig
MCP 服务器的配置。
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpSdkServerConfigWithInstance
消息类型
SDKMessage
查询返回的所有可能消息的联合类型。
SDKAssistantMessage
助手响应消息。
SDKUserMessage
用户输入消息。
SDKUserMessageReplay
带有必需 UUID 的重放用户消息。
SDKResultMessage
最终结果消息。
SDKSystemMessage
系统初始化消息。
SDKPartialAssistantMessage
流式部分消息(仅当 includePartialMessages
为 true 时)。
SDKCompactBoundaryMessage
指示对话压缩边界的消息。
SDKPermissionDenial
关于被拒绝的工具使用的信息。
钩子类型
HookEvent
可用的钩子事件。
HookCallback
钩子回调函数类型。
HookCallbackMatcher
带有可选匹配器的钩子配置。
HookInput
所有钩子输入类型的联合类型。
BaseHookInput
所有钩子输入类型扩展的基础接口。
PreToolUseHookInput
PostToolUseHookInput
NotificationHookInput
UserPromptSubmitHookInput
SessionStartHookInput
SessionEndHookInput
StopHookInput
SubagentStopHookInput
PreCompactHookInput
HookJSONOutput
钩子返回值。
AsyncHookJSONOutput
SyncHookJSONOutput
工具输入类型
所有内置 Claude Code 工具的输入模式文档。这些类型从@anthropic-ai/claude-agent-sdk
导出,可用于类型安全的工具交互。
ToolInput
注意: 这是一个仅用于文档的类型,用于清晰度。它表示所有工具输入类型的联合。
Task
工具名称:Task
Bash
工具名称:Bash
BashOutput
工具名称:BashOutput
Edit
工具名称:Edit
MultiEdit
工具名称:MultiEdit
Read
工具名称:Read
Write
工具名称:Write
Glob
工具名称:Glob
Grep
工具名称:Grep
KillBash
工具名称:KillBash
NotebookEdit
工具名称:NotebookEdit
WebFetch
工具名称:WebFetch
WebSearch
工具名称:WebSearch
TodoWrite
工具名称:TodoWrite
ExitPlanMode
工具名称:ExitPlanMode
ListMcpResources
工具名称:ListMcpResources
ReadMcpResource
工具名称:ReadMcpResource
工具输出类型
所有内置 Claude Code 工具的输出模式文档。这些类型表示每个工具返回的实际响应数据。ToolOutput
注意: 这是一个仅用于文档的类型,用于清晰度。它表示所有工具输出类型的联合。
Task
工具名称:Task
Bash
工具名称:Bash
BashOutput
工具名称:BashOutput
Edit
工具名称:Edit
MultiEdit
工具名称:MultiEdit
Read
工具名称:Read
Write
工具名称:Write
Glob
工具名称:Glob
Grep
工具名称:Grep
KillBash
工具名称:KillBash
NotebookEdit
工具名称:NotebookEdit
WebFetch
工具名称:WebFetch
WebSearch
工具名称:WebSearch
TodoWrite
工具名称:TodoWrite
ExitPlanMode
工具名称:ExitPlanMode
ListMcpResources
工具名称:ListMcpResources
ReadMcpResource
工具名称:ReadMcpResource
权限类型
PermissionUpdate
更新权限的操作。
PermissionBehavior
PermissionUpdateDestination
PermissionRuleValue
其他类型
ApiKeySource
ConfigScope
NonNullableUsage
Usage
的版本,所有可空字段都变为非可空。
Usage
令牌使用统计(来自 @anthropic-ai/sdk
)。
CallToolResult
MCP 工具结果类型(来自 @modelcontextprotocol/sdk/types.js
)。
AbortError
中止操作的自定义错误类。
另请参阅
- SDK 概述 - 通用 SDK 概念
- Python SDK 参考 - Python SDK 文档
- CLI 参考 - 命令行界面
- 常见工作流程 - 分步指南