安裝
函數
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
List McpResources
工具名稱: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 參考 - 命令列介面
- 常見工作流程 - 逐步指南