安装
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 v0.3.144 或更高版本。下面的示例为 Apple Silicon 上的 macOS 构建:
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 子进程并在提示可用之前完成初始化握手来预热 CLI 子进程。返回的 WarmQuery 句柄稍后接受提示并将其写入已准备好的进程,因此第一个 query() 调用解析时无需支付子进程生成和初始化成本。
参数
| 参数 | 类型 | 描述 |
|---|---|---|
options | Options | 可选配置对象。与 query() 的 options 参数相同 |
initializeTimeoutMs | number | 等待子进程初始化的最长时间(毫秒)。默认为 60000。如果初始化未在规定时间内完成,promise 将以超时错误拒绝 |
返回值
返回一个Promise<WarmQuery>,在子进程生成并完成其初始化握手后解析。
示例
早期调用startup(),例如在应用程序启动时,然后在提示准备好后在返回的句柄上调用 .query()。这会将子进程生成和初始化移出关键路径。
tool()
为与 SDK MCP 服务器一起使用创建类型安全的 MCP 工具定义。
参数
| 参数 | 类型 | 描述 |
|---|---|---|
name | string | 工具的名称 |
description | string | 工具功能的描述 |
inputSchema | Schema extends AnyZodRawShape | 定义工具输入参数的 Zod 架构(支持 Zod 3 和 Zod 4) |
handler | (args, extra) => Promise<CallToolResult> | 执行工具逻辑的异步函数 |
extras | { annotations?: ToolAnnotations } | 可选的 MCP 工具注释,为客户端提供行为提示 |
ToolAnnotations
从 @modelcontextprotocol/sdk/types.js 重新导出。所有字段都是可选提示;客户端不应依赖它们做出安全决策。
| 字段 | 类型 | 默认值 | 描述 |
|---|---|---|---|
title | string | undefined | 工具的人类可读标题 |
readOnlyHint | boolean | false | 如果为 true,工具不会修改其环境 |
destructiveHint | boolean | true | 如果为 true,工具可能执行破坏性更新(仅在 readOnlyHint 为 false 时有意义) |
idempotentHint | boolean | false | 如果为 true,使用相同参数的重复调用没有额外效果(仅在 readOnlyHint 为 false 时有意义) |
openWorldHint | boolean | true | 如果为 true,工具与外部实体交互(例如,网络搜索)。如果为 false,工具的域是封闭的(例如,内存工具) |
createSdkMcpServer()
创建在与应用程序相同的进程中运行的 MCP 服务器实例。
参数
| 参数 | 类型 | 描述 |
|---|---|---|
options.name | string | MCP 服务器的名称 |
options.version | string | 可选版本字符串 |
options.tools | Array<SdkMcpToolDefinition> | 使用 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 | 对于子代理消息,生成 Agent 工具调用的 tool_use_id。对于主会话消息和较旧的会话为 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()
使用与 CLI 相同的合并引擎为给定目录解析有效的 Claude Code 设置,无需生成 Claude CLI。在调用 query() 之前使用它来检查 query() 调用将看到的配置。
此函数处于 alpha 阶段,其 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 时,为子代理生成单行进度摘要,并通过 summary 字段在 task_progress 事件上转发它们。适用于前台和后台子代理 |
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 | 启用文件更改跟踪以进行回滚。请参阅文件 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[]>> | {} | 事件的 Hook 回调 |
includeHookEvents | boolean | false | 在消息流中包括 hook 生命周期事件,作为 SDKHookStartedMessage、SDKHookProgressMessage 和 SDKHookResponseMessage |
includePartialMessages | boolean | false | 包括部分消息事件 |
loadTimeoutMs | number | 60000 | Alpha. 每个 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 引出请求的回调。当 MCP 服务器请求用户输入且没有 hook 首先处理它时调用。未提供时,未处理的引出请求会自动被拒绝 |
outputFormat | { type: 'json_schema', schema: JSONSchema } | undefined | 为代理结果定义输出格式。请参阅结构化输出了解详情 |
outputStyle | string | undefined | 不是 Options 字段。改为在内联 settings 对象或设置文件中设置 outputStyle。请参阅激活输出样式 |
pathToClaudeCodeExecutable | string | 从捆绑的本地二进制文件自动解析 | Claude Code 可执行文件的路径。仅在安装期间跳过可选依赖项或您的平台不在支持的集合中时需要 |
permissionMode | PermissionMode | 'default' | 会话的权限模式 |
permissionPromptToolName | string | undefined | 权限提示的 MCP 工具名称 |
persistSession | boolean | true | 当为 false 时,禁用会话持久化到磁盘。会话之后无法恢复 |
planModeInstructions | string | undefined | Plan Mode 的自定义工作流说明。当 permissionMode 为 'plan' 时,此字符串替换默认 Plan Mode 工作流正文。CLI 仍然使用只读强制前导和 ExitPlanMode 协议页脚包装它 |
plugins | SdkPluginConfig[] | [] | 从本地路径加载自定义 plugins。请参阅Plugins了解详情 |
promptSuggestions | boolean | false | 启用提示建议。在每个轮次后发出 prompt_suggestion 消息,包含预测的下一个用户提示 |
resume | string | undefined | 要恢复的会话 ID |
resumeSessionAt | string | undefined | 在特定消息 UUID 处恢复会话 |
sandbox | SandboxSettings | undefined | 以编程方式配置 sandbox 行为。请参阅Sandbox 设置了解详情 |
sessionId | string | 自动生成 | 为会话使用特定的 UUID 而不是自动生成一个 |
sessionStore | SessionStore | undefined | 将会话记录镜像到外部后端,以便任何主机都可以恢复它们。请参阅将会话持久化到外部存储 |
sessionStoreFlush | 'batched' | 'eager' | 'batched' | Alpha. sessionStore 的刷新模式。未设置 sessionStore 时忽略 |
settings | string | Settings | undefined | 内联设置对象或设置文件的路径。填充优先级顺序中的标志设置层。使用 applyFlagSettings() 在运行时更改 |
settingSources | SettingSource[] | CLI 默认值(所有源) | 控制加载哪些文件系统设置。传递 [] 以禁用用户、项目和本地设置。无论如何都会加载托管策略设置。请参阅使用 Claude Code 功能 |
skills | string[] | 'all' | undefined | 会话可用的 skills。传递 'all' 以启用每个发现的 skill,或传递 skill 名称列表。设置后,SDK 会自动将 Skill 工具添加到 allowedTools。如果您也传递 tools,请在该列表中包含 'Skill'。请参阅Skills |
spawnClaudeCodeProcess | (options: SpawnOptions) => SpawnedProcess | undefined | 用于生成 Claude Code 进程的自定义函数。用于在 VM、容器或远程环境中运行 Claude Code |
stderr | (data: string) => void | undefined | stderr 输出的回调 |
strictMcpConfig | boolean | false | 仅使用在 mcpServers 中传递的服务器,并忽略项目 .mcp.json、用户设置、plugin 提供的 MCP 服务器和claude.ai connectors |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean } | undefined(最小提示) | 系统提示配置。传递字符串以获取自定义提示,或 { type: 'preset', preset: 'claude_code' } 以使用 Claude Code 的系统提示。使用预设对象形式时,添加 append 以使用其他说明扩展它,并设置 excludeDynamicSections: true 以将每个会话上下文移到第一条用户消息中,以便更好地跨机器重用提示缓存 |
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 | 工具配置。传递工具名称数组或使用预设获取 Claude Code 的默认工具 |
处理缓慢或停滞的 API 响应
CLI 子进程读取多个环境变量,这些变量控制 API 超时和停滞检测。通过env 选项传递它们:
API_TIMEOUT_MS:Anthropic 客户端上的每个请求超时,以毫秒为单位。默认600000。适用于主循环和所有子代理。CLAUDE_CODE_MAX_RETRIES:最大 API 重试次数。默认10。每次重试都有自己的API_TIMEOUT_MS窗口,因此最坏情况下的实际时间大约是API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)加上退避。CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS:使用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。请参阅文件 checkpointing |
setPermissionMode() | 更改权限模式(仅在流式输入模式下可用) |
setModel() | 更改模型(仅在流式输入模式下可用) |
setMaxThinkingTokens() | 已弃用: 改用 thinking 选项。更改最大思考令牌数 |
applyFlagSettings(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()
在运行的会话上更改任何设置而无需重新启动查询。当没有专用设置器的设置需要在会话中期更改时使用它,例如在代理读取不受信任的输入后收紧 permissions。setModel() 和 setPermissionMode() 是这两个键的专用设置器;applyFlagSettings() 是接受任何设置键子集的通用形式,在此处传递 model 的行为与 setModel() 相同。
仅某些键在会话中期生效:
- 在下一个轮次应用:
model、effortLevel、ultracode、permissions、hooks、skillOverrides、fastMode、awaySummaryEnabled、agent。切换agent也会在下一个轮次应用该代理的模型覆盖、hooks 和系统提示。 - 会话中期无效:系统提示选项。这些在启动时解决一次,因此运行的会话保持原始值,即使调用成功。要更改它们,请启动新会话。
query() 的 settings 选项在启动时填充的同一层。标志设置位于设置优先级顺序的顶部附近:它们覆盖用户、项目和本地设置,只有托管策略设置可以覆盖它们。这与优先级部分称为编程选项的层相同。
连续调用浅合并顶级键。第二次调用 { permissions: {...} } 会替换先前调用中的整个 permissions 对象,而不是深度合并到其中。要从标志层清除键并回退到较低优先级源,请为该键传递 null。传递 undefined 无效,因为 JSON 序列化会将其删除。
仅在流式输入模式下可用,与 setModel() 和 setPermissionMode() 的约束相同。
下面的示例在会话中期切换活动模型,然后清除覆盖,以便模型回退到用户或项目设置指定的任何内容。
applyFlagSettings() 仅适用于 TypeScript。Python SDK 不公开等效方法。WarmQuery
由 startup() 返回的句柄。子进程已生成并初始化,因此在此句柄上调用 query() 会直接将提示写入准备好的进程,无需启动延迟。
方法
| 方法 | 描述 |
|---|---|
query(prompt) | 向预热的子进程发送提示并返回 Query。每个 WarmQuery 只能调用一次 |
close() | 关闭子进程而不发送提示。使用此方法丢弃不再需要的预热查询 |
WarmQuery 实现 AsyncDisposable,因此可以与 await using 一起使用以进行自动清理。
SDKControlInitializeResponse
initializationResult() 的返回类型。包含会话初始化数据。
initialize 时,控制响应包装器也会携带一个可选的 pending_permission_requests 数组。该字段位于响应包装器本身,而不是上面的 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 | 否 | 要预加载到代理上下文中的 skill 名称数组 |
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() 加载与 Claude Code CLI 相同的文件系统设置:用户、项目和本地。在所有情况下都会加载托管策略设置。请参阅settingSources 不控制的内容了解无论此选项如何都会读取的输入,以及如何禁用它们。
为什么使用 settingSources
禁用文件系统设置:设置优先级
加载多个源时,设置按此优先级合并(从高到低):- 本地设置(
.claude/settings.local.json) - 项目设置(
.claude/settings.json) - 用户设置(
~/.claude/settings.json)
agents、allowedTools 和 settings)覆盖用户、项目和本地文件系统设置。托管策略设置优先于编程选项。
PermissionMode
CanUseTool
用于控制工具使用的自定义权限函数类型。
| 选项 | 类型 | 描述 |
|---|---|---|
signal | AbortSignal | 如果应中止操作,则发出信号 |
suggestions | PermissionUpdate[] | 建议的权限更新,以便用户不会再次被提示此工具。Bash 提示包括一个建议,其中包含 localSettings 目标,因此在 updatedPermissions 中返回它会将规则写入 .claude/settings.local.json 并在会话中持久化。 |
blockedPath | string | 触发权限请求的文件路径(如果适用) |
decisionReason | string | 解释为什么触发此权限请求 |
toolUseID | string | 此特定工具调用在助手消息中的唯一标识符 |
agentID | string | 如果在子代理中运行,子代理的 ID |
PermissionResult
权限检查的结果。
ToolConfig
内置工具行为的配置。
| 字段 | 类型 | 描述 |
|---|---|---|
askUserQuestion.previewFormat | 'markdown' | 'html' | 选择加入 AskUserQuestion 选项上的 preview 字段并设置其内容格式。未设置时,Claude 不发出预览 |
McpServerConfig
MCP 服务器的配置。
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpSdkServerConfigWithInstance
McpClaudeAIProxyServerConfig
SdkPluginConfig
SDK 中加载 plugins 的配置。
| 字段 | 类型 | 描述 |
|---|---|---|
type | 'local' | 必须为 'local'(目前仅支持本地 plugins) |
path | string | 插件目录的绝对或相对路径 |
消息类型
SDKMessage
查询返回的所有可能消息的联合类型。
SDKAssistantMessage
助手响应消息。
message 字段是来自 Anthropic SDK 的 BetaMessage。它包括 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:终止对话的 API 错误的 HTTP 状态码。当轮次在没有 API 错误的情况下结束时,该字段不存在或为null。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" }。检查此字段以区分回答您的提示的结果与为后台任务后续操作发出的结果,以便您可以路由或抑制后者。对于在任何用户轮次之前发出的结果(例如启动错误),该字段不存在。
当 PreToolUse hook 返回 permissionDecision: "defer" 时,结果具有 stop_reason: "tool_deferred" 和 deferred_tool_use 携带待处理工具的 id、name 和 input。读取此字段以在您自己的 UI 中显示请求,然后使用相同的 session_id 恢复以继续。有关完整的往返过程,请参阅稍后延迟工具调用。
SDKSystemMessage
系统初始化消息。
SDKPartialAssistantMessage
流式部分消息(仅当 includePartialMessages 为 true 时)。
SDKCompactBoundaryMessage
指示对话压缩边界的消息。
SDKPluginInstallMessage
插件安装进度事件。当设置 CLAUDE_CODE_SYNC_PLUGIN_INSTALL 时发出,以便您的 Agent SDK 应用程序可以在第一个轮次之前跟踪市场插件安装。started 和 completed 状态括起整体安装。installed 和 failed 状态报告单个市场并包括 name。
SDKPermissionDeniedMessage
当权限系统自动拒绝工具调用而不显示交互式提示时发出的流事件。使用它在发生时在您的 UI 中呈现拒绝,而不仅仅观察随后的 is_error 工具结果。交互式询问路径通过 canUseTool 回调单独到达您的应用程序。由 PreToolUse hook 发出的拒绝不会通过此事件报告。
此事件需要 Claude Code v2.1.136 或更高版本。
| 字段 | 类型 | 描述 |
|---|---|---|
tool_name | string | 被拒绝的工具的名称 |
tool_use_id | string | 此拒绝回答的 tool_use 块的 ID |
agent_id | string | 当拒绝的调用源自子代理内部时的子代理 ID。镜像 can_use_tool 上的字段以进行主机端路由 |
decision_reason_type | string | 决定组件的鉴别器,例如 "rule"、"mode"、"classifier" 或 "asyncAgent" |
decision_reason | string | 来自决定组件的人类可读原因(如果可用) |
message | string | 在 tool_result 中返回给模型的拒绝消息 |
SDKPermissionDenial
有关被拒绝的工具使用的信息。
SDKMessageOrigin
用户角色消息的来源。这在 SDKUserMessage 上显示为 origin,并转发到相应的 SDKResultMessage,以便您可以判断给定轮次的触发因素。
kind | 含义 |
|---|---|
human | 来自最终用户的直接输入。在用户消息上,缺少的 origin 也表示人工输入。 |
channel | 消息到达频道。server 是源 MCP 服务器名称。 |
peer | 来自另一个代理会话的消息,通过 SendMessage。from 是发送者地址;name 是发送者的显示名称(如果可用)。 |
task-notification | 后台任务完成后注入的合成轮次。请参阅 SDKTaskNotificationMessage。 |
coordinator | 来自代理团队中的团队协调员的消息。 |
Hook 类型
有关使用 hooks 的综合指南,包括示例和常见模式,请参阅 Hooks 指南。HookEvent
可用的 hook 事件。
HookCallback
Hook 回调函数类型。
HookCallbackMatcher
带有可选匹配器的 Hook 配置。
HookInput
所有 hook 输入类型的联合类型。
BaseHookInput
所有 hook 输入类型扩展的基本接口。
PreToolUseHookInput
PostToolUseHookInput
PostToolUseFailureHookInput
PostToolBatchHookInput
在批处理中的每个工具调用都已解决后触发一次,在下一个模型请求之前。tool_response 携带序列化的 tool_result 内容,模型会看到该内容;其形状与 PostToolUseHookInput 的结构化 Output 对象不同。
NotificationHookInput
UserPromptSubmitHookInput
SessionStartHookInput
SessionEndHookInput
StopHookInput
SubagentStartHookInput
SubagentStopHookInput
PreCompactHookInput
PermissionRequestHookInput
SetupHookInput
TeammateIdleHookInput
TaskCompletedHookInput
ConfigChangeHookInput
WorktreeCreateHookInput
WorktreeRemoveHookInput
MessageDisplayHookInput
HookJSONOutput
Hook 返回值。
AsyncHookJSONOutput
SyncHookJSONOutput
工具输入类型
所有内置 Claude Code 工具的输入架构文档。这些类型从@anthropic-ai/claude-agent-sdk 导出,可用于类型安全的工具交互。
ToolInputSchemas
所有工具输入类型的联合,从 @anthropic-ai/claude-agent-sdk 导出。
Agent
工具名称:Agent(之前为 Task,仍然接受作为别名)
AskUserQuestion
工具名称:AskUserQuestion
Bash
工具名称:Bash
Monitor
工具名称:Monitor
persistent: true。Monitor 遵循与 Bash 相同的权限规则。请参阅 Monitor 工具参考了解行为和提供商可用性。
TaskOutput
工具名称:TaskOutput
Edit
工具名称:Edit
Read
工具名称:Read
pages(例如,"1-5")。
Write
工具名称:Write
Glob
工具名称:Glob
Grep
工具名称:Grep
TaskStop
工具名称:TaskStop
NotebookEdit
工具名称:NotebookEdit
WebFetch
工具名称:WebFetch
WebSearch
工具名称:WebSearch
Workflow
工具名称:Workflow
script、name 或 scriptPath 之一。
| 字段 | 类型 | 描述 |
|---|---|---|
script | string | 内联工作流脚本。必须以 export const meta = { name, description, phases } 作为字面量开头,后跟使用 agent()、parallel()、pipeline() 和 phase() 的脚本主体 |
name | string | 内置工作流的名称或保存在 .claude/workflows/ 中的工作流名称。解析为脚本 |
scriptPath | string | 磁盘上工作流脚本文件的路径。优先于 script 和 name。每次调用都会持久化其脚本并在结果中返回路径,因此您可以编辑该文件并使用相同的 scriptPath 重新调用以进行迭代 |
args | unknown | 输入值,作为全局 args 暴露给脚本,用于参数化的命名工作流,例如研究问题或文件路径列表。将数组和对象作为实际 JSON 值传递,而不是作为 JSON 编码的字符串 |
resumeFromRunId | string | 要恢复的先前 Workflow 调用的运行 ID。具有未更改输入的已完成 agent() 调用返回缓存的结果;只有更改或新的调用才会实时运行。仅限同一会话 |
TodoWrite
工具名称:TodoWrite
自 TypeScript Agent SDK 0.3.142 起,
TodoWrite 默认被禁用。改用 TaskCreate、TaskGet、TaskUpdate 和 TaskList。请参阅迁移到 Task 工具以更新您的监视代码,或设置 CLAUDE_CODE_ENABLE_TASKS=0 以恢复为 TodoWrite。TaskCreate
工具名称:TaskCreate
TaskUpdate
工具名称:TaskUpdate
status 设置为 "deleted" 以删除它。
TaskGet
工具名称:TaskGet
null。
TaskList
工具名称:TaskList
ExitPlanMode
工具名称:ExitPlanMode
ListMcpResources
工具名称:ListMcpResourcesTool
ReadMcpResource
工具名称:ReadMcpResourceTool
EnterWorktree
工具名称:EnterWorktree
path 以切换到当前存储库的现有 worktree 而不是创建新的。name 和 path 互斥。
工具输出类型
所有内置 Claude Code 工具的输出架构文档。这些类型从@anthropic-ai/claude-agent-sdk 导出,代表每个工具返回的实际响应数据。
ToolOutputSchemas
所有工具输出类型的联合。
Agent
工具名称:Agent(之前为 Task,仍然接受作为别名)
status 字段上进行区分:"completed" 表示已完成的任务,"async_launched" 表示后台任务,"sub_agent_entered" 表示交互式子代理。
AskUserQuestion
工具名称:AskUserQuestion
response 被设置;当存在时,Claude 会收到”用户回复:…”而不是每个问题的答案列表。
Bash
工具名称:Bash
backgroundTaskId。
Monitor
工具名称:Monitor
TaskStop 一起提前取消监视。
Edit
工具名称:Edit
Read
工具名称:Read
type 字段上进行区分。
Write
工具名称:Write
Glob
工具名称:Glob
Grep
工具名称:Grep
mode 而异:文件列表、带匹配的内容或匹配计数。
TaskStop
工具名称:TaskStop
NotebookEdit
工具名称:NotebookEdit
WebFetch
工具名称:WebFetch
WebSearch
工具名称:WebSearch
Workflow
工具名称:Workflow
error:脚本如果语法检查失败,会返回 status: "async_launched" 并设置 error,且永远不会运行。
| 字段 | 类型 | 描述 |
|---|---|---|
status | "async_launched" | 工具接受了调用。这是该字段唯一的值 |
taskId | string | 运行的后台任务标识符 |
runId | string | 工作流运行标识符,用于在后续调用中作为 resumeFromRunId 传递 |
summary | string | 工作流功能的单行描述 |
transcriptDir | string | 执行期间写入子代理转录的目录 |
scriptPath | string | 此运行的持久化工作流脚本的路径。编辑它并作为 scriptPath 传回以重新运行而无需重新发送脚本 |
error | string | 当脚本语法检查失败时设置。存在时,尽管 async_launched 状态,运行未启动 |
TodoWrite
工具名称:TodoWrite
自 TypeScript Agent SDK 0.3.142 起,
TodoWrite 默认被禁用。改用 TaskCreate、TaskGet、TaskUpdate 和 TaskList。请参阅迁移到 Task 工具更新您的监视代码,或设置 CLAUDE_CODE_ENABLE_TASKS=0 以恢复为 TodoWrite。TaskCreate
工具名称:TaskCreate
TaskUpdate
工具名称:TaskUpdate
TaskGet
工具名称:TaskGet
null。
TaskList
工具名称:TaskList
ExitPlanMode
工具名称:ExitPlanMode
ListMcpResources
工具名称:ListMcpResourcesTool
ReadMcpResource
工具名称:ReadMcpResourceTool
EnterWorktree
工具名称:EnterWorktree
权限类型
PermissionUpdate
用于更新权限的操作。
PermissionBehavior
PermissionUpdateDestination
PermissionRuleValue
其他类型
ApiKeySource
SdkBeta
可通过 betas 选项启用的可用测试功能。请参阅 Beta 标头了解更多信息。
SlashCommand
有关可用 slash command 的信息。
ModelInfo
有关可用模型的信息。
AgentInfo
有关可通过 Agent 工具调用的可用子代理的信息。
| 字段 | 类型 | 描述 |
|---|---|---|
name | string | 代理类型标识符(例如,"Explore"、"general-purpose") |
description | string | 何时使用此代理的描述 |
model | string | undefined | 此代理使用的模型别名。如果省略,继承父级的模型 |
McpServerStatus
连接的 MCP 服务器的状态。
McpServerStatusConfig
由 mcpServerStatus() 报告的 MCP 服务器的配置。这是所有 MCP 服务器传输类型的联合。
McpServerConfig了解每种传输类型的详情。
AccountInfo
经过身份验证的用户的帐户信息。
ModelUsage
结果消息中返回的每个模型使用统计。costUSD 值是客户端估计。请参阅跟踪成本和使用情况了解计费注意事项。
ConfigScope
NonNullableUsage
Usage 的版本,所有可空字段都变为非可空。
Usage
令牌使用统计。这是来自 @anthropic-ai/sdk 的 BetaUsage 类型。
BetaServerToolUsage 和 BetaIterationsUsage 在 @anthropic-ai/sdk 中定义。
CallToolResult
MCP 工具结果类型(来自 @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
传递给自定义生成函数的选项。
signal 字段告诉您的生成函数何时拆除进程。将其作为 signal 选项传递给 Node 的 spawn(),或将其传递给您的 VM 或容器拆除处理程序。此信号不会在 Options.abortController 中止的瞬间触发。SDK 首先关闭进程的 stdin 并等待约两秒钟,以便 CLI 可以干净地关闭,然后中止此信号。要在调用者中止时立即做出反应,请侦听您自己的 Options.abortController.signal,您的生成函数可以从其封闭范围引用。McpSetServersResult
setMcpServers() 操作的结果。
RewindFilesResult
rewindFiles() 操作的结果。
SDKStatusMessage
状态更新消息(例如,压缩)。
SDKTaskNotificationMessage
后台任务完成、失败或停止时的通知。后台任务包括 run_in_background Bash 命令、Monitor 监视和后台子代理。
SDKToolUseSummaryMessage
对话中工具使用的摘要。
SDKHookStartedMessage
当 hook 开始执行时发出。
SDKHookProgressMessage
在 hook 运行时发出,包含 stdout/stderr 输出。
SDKHookResponseMessage
当 hook 完成执行时发出。
SDKToolProgressMessage
在工具执行时定期发出,以指示进度。
SDKAuthStatusMessage
在身份验证流程中发出。
SDKTaskStartedMessage
当后台任务开始时发出。task_type 字段对于后台 Bash 命令和 Monitor 监视为 "local_bash",对于子代理为 "local_agent",或 "remote_agent"。
SDKTaskProgressMessage
在子代理或后台任务运行时定期发出。仅当启用 agentProgressSummaries 时,summary 字段才会被填充。
SDKTaskUpdatedMessage
当后台任务的状态发生变化时发出,例如当它从 running 转换为 completed 时。将 patch 合并到按 task_id 键入的本地任务映射中。end_time 字段是 Unix 纪元时间戳(以毫秒为单位),可与 Date.now() 比较。
SDKFilesPersistedEvent
当文件检查点持久化到磁盘时发出。
SDKRateLimitEvent
当会话遇到速率限制时发出。
SDKLocalCommandOutputMessage
来自本地 slash command 的输出(例如,/voice 或 /usage)。在记录中显示为助手样式的文本。
SDKCommandsChangedMessage
当可用命令集在会话中期发生变化时发出,例如当代理进入子目录时发现技能。commands 数组是完整的更新列表,因此用此有效负载替换任何缓存的命令列表。再次调用 supportedCommands() 不等同:该方法返回在初始化时捕获的快照,不反映会话中期的变化。
SDKPromptSuggestionMessage
当启用 promptSuggestions 时在每个轮次后发出。包含预测的下一个用户提示。
AbortError
用于中止操作的自定义错误类。
沙箱配置
SandboxSettings
沙箱行为的配置。使用此选项以编程方式启用命令沙箱和配置网络限制。
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
enabled | boolean | false | 为命令执行启用沙箱模式 |
failIfUnavailable | boolean | true | 如果 enabled 为 true 但沙箱无法启动,则在启动时停止。设置为 false 以回退到沙箱外执行,并在 stderr 上显示警告 |
autoAllowBashIfSandboxed | boolean | true | 启用沙箱时自动批准 bash 命令 |
excludedCommands | string[] | [] | 始终绕过沙箱限制的命令(例如,['docker'])。这些自动运行在沙箱外,无需模型参与 |
allowUnsandboxedCommands | boolean | true | 允许模型请求在沙箱外运行命令。当为 true 时,模型可以在工具输入中设置 dangerouslyDisableSandbox,这会回退到权限系统 |
network | SandboxNetworkConfig | undefined | 网络特定的沙箱配置 |
filesystem | SandboxFilesystemConfig | undefined | 用于读/写限制的文件系统特定沙箱配置 |
ignoreViolations | Record<string, string[]> | undefined | 违规类别到要忽略的模式的映射(例如,{ file: ['/tmp/*'], network: ['localhost'] }) |
enableWeakerNestedSandbox | boolean | false | 为兼容性启用较弱的嵌套沙箱 |
ripgrep | { command: string; args?: string[] } | undefined | 沙箱环境中的自定义 ripgrep 二进制配置 |
沙箱取决于平台支持,在 Linux 上,还需要
bubblewrap 和 socat 等工具。当 enabled 为 true 且沙箱无法启动时,query() 报告一条 result 消息,其中 subtype: "error_during_execution",原因在 errors 中,然后停止。应监视该子类型,而不是期望 query() 在生成消息之前抛出异常。要改为运行沙箱外的命令,请设置 failIfUnavailable: false。示例用法
SandboxNetworkConfig
沙箱模式的网络特定配置。这些设置适用于当父级 SandboxSettings 中的 enabled 为 true 时的沙箱化 Bash 命令。它们不限制 WebFetch 工具,该工具改用权限规则。
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
allowedDomains | string[] | [] | 沙箱进程可以访问的域名 |
deniedDomains | string[] | [] | 沙箱进程无法访问的域名。优先于 allowedDomains |
allowManagedDomainsOnly | boolean | false | 仅限管理设置。在管理设置中设置时,仅遵守来自管理设置的 allowedDomains 条目,来自用户、项目或本地设置的条目被忽略。通过 SDK 选项设置时无效 |
allowLocalBinding | boolean | false | 允许进程绑定到本地端口(例如,用于开发服务器) |
allowUnixSockets | string[] | [] | 进程可以访问的 Unix socket 路径(例如,Docker socket) |
allowAllUnixSockets | boolean | false | 允许访问所有 Unix sockets |
httpProxyPort | number | undefined | 网络请求的 HTTP 代理端口 |
socksProxyPort | number | undefined | 网络请求的 SOCKS 代理端口 |
SandboxFilesystemConfig
沙箱模式的文件系统特定配置。
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
allowWrite | string[] | [] | 允许写入访问的文件路径模式 |
denyWrite | string[] | [] | 拒绝写入访问的文件路径模式 |
denyRead | string[] | [] | 拒绝读取访问的文件路径模式 |
沙箱外命令的权限回退
启用allowUnsandboxedCommands 时,模型可以通过在工具输入中设置 dangerouslyDisableSandbox: true 来请求在沙箱外运行命令。这些请求回退到现有权限系统,意味着您的 canUseTool 处理程序被调用,允许您实现自定义授权逻辑。
excludedCommands vs allowUnsandboxedCommands:excludedCommands:始终自动绕过沙箱的命令的静态列表(例如,['docker'])。模型对此无法控制。allowUnsandboxedCommands:让模型在运行时通过在工具输入中设置dangerouslyDisableSandbox: true来决定是否请求沙箱外执行。
- 审计模型请求: 记录模型何时请求沙箱外执行
- 实现允许列表: 仅允许特定命令在沙箱外运行
- 添加批准工作流: 需要对特权操作进行明确授权
另请参阅
- SDK 概述 - 常规 SDK 概念
- Python SDK 参考 - Python SDK 文档
- CLI 参考 - 命令行界面
- 常见工作流 - 分步指南