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()为与 SDK MCP 服务器一起使用而创建类型安全的 MCP 工具定义。
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() 创建的工具定义数组 |
Optionsquery() 函数的配置对象。
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
abortController | AbortController | new AbortController() | 用于取消操作的控制器 |
additionalDirectories | string[] | [] | Claude 可以访问的其他目录 |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | 以编程方式定义子代理 |
Queryquery() 函数返回的接口。
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' | 本地项目设置(gitignored) | .claude/settings.local.json |
当 settingSources 被省略或未定义时,SDK 不会加载任何文件系统设置。这为 SDK 应用程序提供了隔离。
加载所有文件系统设置(旧版行为):
// 像 SDK v0.0.x 一样加载所有设置
const result = query({
prompt: "分析这段代码",
options: {
settingSources: ['user', 'project', 'local'] // 加载所有设置
}
});仅加载特定设置源:
// 仅加载项目设置,忽略用户和本地设置
const result = query({
prompt: "运行 CI 检查",
options: {
settingSources: ['project'] // 仅 .claude/settings.json
}
});测试和 CI 环境:
// 通过排除本地设置确保 CI 中的一致行为
const result = query({
prompt: "运行测试",
options: {
settingSources: ['project'], // 仅团队共享设置
permissionMode: 'bypassPermissions'
}
});仅 SDK 应用程序:
// 以编程方式定义所有内容(默认行为)
// 无文件系统依赖 - settingSources 默认为 []
const result = query({
prompt: "审查此 PR",
options: {
// settingSources: [] 是默认值,无需指定
agents: { /* ... */ },
mcpServers: { /* ... */ },
allowedTools: ['Read', 'Grep', 'Glob']
}
});加载 CLAUDE.md 项目指令:
// 加载项目设置以包含 CLAUDE.md 文件
const result = query({
prompt: "按照项目约定添加新功能",
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;
}McpServerConfigMCP 服务器的配置。
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;
}SdkPluginConfigSDK 中加载插件的配置。
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; // 来自 Anthropic SDK
parent_tool_use_id: string | null;
}SDKUserMessage用户输入消息。
type SDKUserMessage = {
type: 'user';
uuid?: UUID;
session_id: string;
message: APIUserMessage; // 来自 Anthropic SDK
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; // 来自 Anthropic SDK
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;
}在持久 shell 会话中执行 bash 命令,支持可选的超时和后台执行。
工具名称: BashOutput
interface BashOutputInput {
/**
* 要从中检索输出的后台 shell 的 ID
*/
bash_id: string;
/**
* 可选的正则表达式以过滤输出行
*/
filter?: string;
}从运行中或已完成的后台 bash shell 检索输出。
工具名称: 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 notebook。
工具名称: 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 {
/**
* 要终止的后台 shell 的 ID
*/
shell_id: string;
}按 ID 终止运行中的后台 bash shell。
工具名称: NotebookEdit
interface NotebookEditInput {
/**
* Jupyter notebook 文件的绝对路径
*/
notebook_path: string;
/**
* 要编辑的单元格的 ID
*/
cell_id?: string;
/**
* 单元格的新源代码
*/
new_source: string;
/**
* 单元格的类型(代码或 markdown)
*/
cell_type?: 'code' | 'markdown';
/**
* 编辑类型(替换、插入、删除)
*/
edit_mode?: 'replace' | 'insert' | 'delete';
}编辑 Jupyter notebook 文件中的单元格。
工具名称: 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;
};
/**
* 以美元计的总成本
*/
total_cost_usd?: number;
/**
* 执行持续时间(以毫秒为单位)
*/
duration_ms?: number;
}返回子代理完成委派任务后的最终结果。
工具名称: Bash
interface BashOutput {
/**
* 合并的 stdout 和 stderr 输出
*/
output: string;
/**
* 命令的退出代码
*/
exitCode: number;
/**
* 命令是否因超时而被终止
*/
killed?: boolean;
/**
* 后台进程的 Shell ID
*/
shellId?: string;
}返回命令输出和退出状态。后台命令立即返回 shellId。
工具名称: BashOutput
interface BashOutputToolOutput {
/**
* 自上次检查以来的新输出
*/
output: string;
/**
* 当前 shell 状态
*/
status: 'running' | 'completed' | 'failed';
/**
* 退出代码(完成时)
*/
exitCode?: number;
}返回来自后台 shell 的增量输出。
工具名称: 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 notebook 单元格
*/
cells: Array<{
cell_type: 'code' | 'markdown';
source: string;
outputs?: any[];
execution_count?: number;
}>;
/**
* Notebook 元数据
*/
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;
/**
* 被终止的 shell 的 ID
*/
shell_id: string;
}终止后台 shell 后返回确认。
工具名称: NotebookEdit
interface NotebookEditOutput {
/**
* 成功消息
*/
message: string;
/**
* 执行的编辑类型
*/
edit_type: 'replaced' | 'inserted' | 'deleted';
/**
* 受影响的单元格 ID
*/
cell_id?: string;
/**
* 编辑后 notebook 中的总单元格数
*/
total_cells: number;
}修改 Jupyter notebook 后返回确认。
工具名称: 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' // Gitignored 本地设置
| 'session' // 仅当前会话PermissionRuleValuetype PermissionRuleValue = {
toolName: string;
ruleContent?: string;
}ApiKeySourcetype ApiKeySource = 'user' | 'project' | 'org' | 'temporary';ConfigScopetype ConfigScope = 'local' | 'user' | 'project';NonNullableUsageUsage 的一个版本,所有可空字段都变为非可空。
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;
}CallToolResultMCP 工具结果类型(来自 @modelcontextprotocol/sdk/types.js)。
type CallToolResult = {
content: Array<{
type: 'text' | 'image' | 'resource';
// 其他字段因类型而异
}>;
isError?: boolean;
}AbortError用于中止操作的自定义错误类。
class AbortError extends Error {}allowedToolsstring[] |
| 所有工具 |
| 允许的工具名称列表 |
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 以使用其他指令扩展系统提示 |