Skip to main content

Agent SDK Reference - TypeScript

การติดตั้ง

npm install @anthropic-ai/claude-agent-sdk
note

SDK รวม native Claude Code binary สำหรับ platform ของคุณเป็น optional dependency หาก package manager ของคุณข้าม optional dependencies ให้ตั้งค่า pathToClaudeCodeExecutable ไปยัง binary claude ที่ติดตั้งแยกต่างหากแทน

Compile เป็น single executable

เมื่อใช้ bun build --compile ให้ embed platform binary เป็น file asset:

import binPath from "@anthropic-ai/claude-agent-sdk-darwin-arm64/claude" with { type: "file" };
import { extractFromBunfs } from "@anthropic-ai/claude-agent-sdk/extract";
import { query } from "@anthropic-ai/claude-agent-sdk";

const cliPath = extractFromBunfs(binPath);

for await (const message of query({
prompt: "Hello",
options: { pathToClaudeCodeExecutable: cliPath },
})) {
console.log(message);
}

Functions

query()

ฟังก์ชันหลักสำหรับการโต้ตอบกับ Claude Code สร้าง async generator ที่ stream messages

function query({
prompt,
options
}: {
prompt: string | AsyncIterable<SDKUserMessage>;
options?: Options;
}): Query;

startup()

Pre-warms CLI subprocess ก่อนที่ prompt จะพร้อมใช้งาน

function startup(params?: {
options?: Options;
initializeTimeoutMs?: number;
}): Promise<WarmQuery>;

ตัวอย่าง:

import { startup } from "@anthropic-ai/claude-agent-sdk";

const warm = await startup({ options: { maxTurns: 3 } });

for await (const message of warm.query("What files are here?")) {
console.log(message);
}

tool()

สร้าง MCP tool definition ที่มี type safety

function tool<Schema extends AnyZodRawShape>(
name: string,
description: string,
inputSchema: Schema,
handler: (args: InferShape<Schema>, extra: unknown) => Promise<CallToolResult>,
extras?: { annotations?: ToolAnnotations }
): SdkMcpToolDefinition<Schema>;

ตัวอย่าง:

import { tool } from "@anthropic-ai/claude-agent-sdk";
import { z } from "zod";

const searchTool = tool(
"search",
"Search the web",
{ query: z.string() },
async ({ query }) => {
return { content: [{ type: "text", text: `Results for: ${query}` }] };
},
{ annotations: { readOnlyHint: true, openWorldHint: true } }
);

createSdkMcpServer()

สร้าง MCP server instance ที่รันใน process เดียวกัน

function createSdkMcpServer(options: {
name: string;
version?: string;
tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance;

listSessions()

ค้นพบและแสดง sessions ในอดีตพร้อม metadata

function listSessions(options?: ListSessionsOptions): Promise<SDKSessionInfo[]>;

ตัวอย่าง:

import { listSessions } from "@anthropic-ai/claude-agent-sdk";

const sessions = await listSessions({ dir: "/path/to/project", limit: 10 });

for (const session of sessions) {
console.log(`${session.summary} (${session.sessionId})`);
}

getSessionMessages()

อ่าน user และ assistant messages จาก session transcript ในอดีต

function getSessionMessages(
sessionId: string,
options?: GetSessionMessagesOptions
): Promise<SessionMessage[]>;

getSessionInfo()

อ่าน metadata สำหรับ session เดียวตาม ID

function getSessionInfo(
sessionId: string,
options?: GetSessionInfoOptions
): Promise<SDKSessionInfo | undefined>;

renameSession()

เปลี่ยนชื่อ session โดยเพิ่ม custom-title entry

function renameSession(
sessionId: string,
title: string,
options?: SessionMutationOptions
): Promise<void>;

tagSession()

Tag session ส่ง null เพื่อล้าง tag

function tagSession(
sessionId: string,
tag: string | null,
options?: SessionMutationOptions
): Promise<void>;

resolveSettings()

Resolve Claude Code settings ที่มีผลบังคับใช้สำหรับไดเรกทอรีโดยไม่ต้อง spawn CLI

function resolveSettings(
options?: ResolveSettingsOptions
): Promise<ResolvedSettings>;

ตัวอย่าง:

import { resolveSettings } from "@anthropic-ai/claude-agent-sdk";

const { effective, provenance } = await resolveSettings({
cwd: "/path/to/project",
settingSources: ["user", "project", "local"],
});

console.log(`Cleanup period: ${effective.cleanupPeriodDays} days`);
console.log(`Set by: ${provenance.cleanupPeriodDays?.source}`);

Key Types

Options

Configuration object สำหรับ query() พร้อม properties มากมายรวมถึง:

PropertyTypeDefaultคำอธิบาย
abortControllerAbortControllernew AbortController()Controller สำหรับยกเลิก operations
additionalDirectoriesstring[][]ไดเรกทอรีเพิ่มเติมที่ Claude สามารถเข้าถึงได้
agentstringundefinedชื่อ agent สำหรับ main thread
agentsRecord<string, AgentDefinition>undefinedกำหนด subagents แบบ programmatic
allowedToolsstring[][]Tools ที่จะ auto-approve
betasSdkBeta[][]เปิดใช้งาน beta features
canUseToolCanUseToolundefinedฟังก์ชัน permission แบบ custom
continuebooleanfalseContinue conversation ล่าสุด
cwdstringprocess.cwd()ไดเรกทอรีทำงานปัจจุบัน
debugbooleanfalseเปิดใช้งาน debug mode
disallowedToolsstring[][]Tools ที่จะปฏิเสธ
effort'low'|'medium'|'high'|'xhigh'|'max'Model defaultควบคุมความลึกของ reasoning
enableFileCheckpointingbooleanfalseเปิดใช้งานการติดตามการเปลี่ยนแปลงไฟล์
envRecord<string, string | undefined>process.envEnvironment variables
executable'bun'|'deno'|'node'Auto-detectedJavaScript runtime
maxTurnsnumberundefinedจำนวน agentic turns สูงสุด
modelstringDefault from CLIClaude model alias หรือชื่อ
mcpServersRecord<string, McpServerConfig>{}MCP server configurations
permissionModePermissionMode'default'Permission mode สำหรับเซสชัน
persistSessionbooleantrueเปิดใช้งาน session persistence
resumestringundefinedSession ID ที่จะ resume
sessionIdstringAuto-generatedใช้ UUID เฉพาะ
sessionStoreSessionStoreundefinedExternal session storage
settingsstring | SettingsundefinedInline settings หรือ path ของไฟล์ settings
systemPromptstring | {...}undefinedการ configure system prompt
thinkingThinkingConfig{ type: 'adaptive' }พฤติกรรม reasoning
toolsstring[] | {...}undefinedTool configuration

จัดการ API responses ที่ช้าหรือค้าง

const result = query({
prompt: "Analyze this code",
options: {
env: {
...process.env,
API_TIMEOUT_MS: "120000",
CLAUDE_CODE_MAX_RETRIES: "2",
CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: "120000",
},
},
});

Query object

Interface ที่คืนค่าโดยฟังก์ชัน query()

interface Query extends AsyncGenerator<SDKMessage, void> {
interrupt(): Promise<void>;
rewindFiles(
userMessageId: string,
options?: { dryRun?: boolean }
): Promise<RewindFilesResult>;
setPermissionMode(mode: PermissionMode): Promise<void>;
setModel(model?: string): Promise<void>;
setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;
applyFlagSettings(settings: { [K in keyof Settings]?: Settings[K] | null }): Promise<void>;
initializationResult(): Promise<SDKControlInitializeResponse>;
supportedCommands(): Promise<SlashCommand[]>;
supportedModels(): Promise<ModelInfo[]>;
supportedAgents(): Promise<AgentInfo[]>;
mcpServerStatus(): Promise<McpServerStatus[]>;
accountInfo(): Promise<AccountInfo>;
reconnectMcpServer(serverName: string): Promise<void>;
toggleMcpServer(serverName: string, enabled: boolean): Promise<void>;
setMcpServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;
streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>;
stopTask(taskId: string): Promise<void>;
close(): void;
}

WarmQuery

Handle ที่คืนค่าโดย startup() Subprocess ถูก pre-spawned และ initialized แล้ว

interface WarmQuery extends AsyncDisposable {
query(prompt: string | AsyncIterable<SDKUserMessage>): Query;
close(): void;
}

PermissionMode

type PermissionMode =
| "default" // พฤติกรรม permission มาตรฐาน
| "acceptEdits" // Auto-accept file edits
| "bypassPermissions" // Bypass permission checks
| "plan" // Planning mode - explore โดยไม่แก้ไข
| "dontAsk" // ไม่ถาม ปฏิเสธถ้าไม่ได้ pre-approve
| "auto"; // ใช้ model classifier

AgentDefinition

Configuration สำหรับ subagent ที่กำหนดแบบ programmatic

type AgentDefinition = {
description: string;
tools?: string[];
disallowedTools?: string[];
prompt: string;
model?: string;
mcpServers?: AgentMcpServerSpec[];
skills?: string[];
initialPrompt?: string;
maxTurns?: number;
background?: boolean;
memory?: "user" | "project" | "local";
effort?: "low" | "medium" | "high" | "xhigh" | "max" | number;
permissionMode?: PermissionMode;
};

SettingSource

ควบคุม filesystem configuration sources ที่จะโหลด

type SettingSource = "user" | "project" | "local";
ค่าคำอธิบายตำแหน่ง
'user'Global user settings~/.claude/settings.json
'project'Shared project settings.claude/settings.json
'local'Local project settings.claude/settings.local.json

ตัวอย่าง:

// ปิด filesystem settings
const result = query({
prompt: "Analyze this code",
options: { settingSources: [] }
});

// โหลดเฉพาะ project settings
const result = query({
prompt: "Run CI checks",
options: { settingSources: ["project"] }
});

MCPServerConfig

Configuration สำหรับ MCP servers

type McpServerConfig =
| McpStdioServerConfig
| McpSSEServerConfig
| McpHttpServerConfig
| McpSdkServerConfigWithInstance;

Message Types

SDKMessage

Union type ของ messages ที่เป็นไปได้ทั้งหมดที่คืนค่าโดย query

SDKAssistantMessage

Assistant response message

type SDKAssistantMessage = {
type: "assistant";
uuid: UUID;
session_id: string;
message: BetaMessage;
parent_tool_use_id: string | null;
error?: SDKAssistantMessageError;
};

SDKUserMessage

User input message

type SDKUserMessage = {
type: "user";
uuid?: UUID;
session_id?: string;
message: MessageParam;
parent_tool_use_id: string | null;
isSynthetic?: boolean;
shouldQuery?: boolean;
tool_use_result?: unknown;
origin?: SDKMessageOrigin;
};

SDKResultMessage

Final result message พร้อม success หรือ error subtypes รวมถึง usage metrics และข้อมูลค่าใช้จ่าย