TypeScript
Bangun agen AI kustom dengan Claude Code TypeScript SDK
Prasyarat
- Node.js 18+
Instalasi
Instal @anthropic-ai/claude-code
dari NPM:
Untuk melihat kode sumber TypeScript SDK, kunjungi halaman @anthropic-ai/claude-code
di NPM.
Penggunaan dasar
Antarmuka utama melalui TypeScript SDK adalah fungsi query
, yang mengembalikan iterator async yang mengalirkan pesan saat mereka tiba:
Opsi konfigurasi
Argumen | Tipe | Deskripsi | Default |
---|---|---|---|
abortController | AbortController | Abort controller untuk membatalkan operasi | new AbortController() |
additionalDirectories | string[] | Direktori tambahan untuk disertakan dalam sesi | undefined |
allowedTools | string[] | Daftar alat yang diizinkan digunakan Claude | Semua alat diaktifkan secara default |
appendSystemPrompt | string | Teks untuk ditambahkan ke prompt sistem default | undefined |
canUseTool | (toolName: string, input: any) => Promise<ToolPermissionResult> | Fungsi izin kustom untuk penggunaan alat | undefined |
continue | boolean | Lanjutkan sesi terbaru | false |
customSystemPrompt | string | Ganti prompt sistem default sepenuhnya | undefined |
cwd | string | Direktori kerja saat ini | process.cwd() |
disallowedTools | string[] | Daftar alat yang tidak diizinkan digunakan Claude | undefined |
env | Dict<string> | Variabel lingkungan untuk diatur | undefined |
executable | 'bun' | 'deno' | 'node' | Runtime JavaScript mana yang akan digunakan | node saat berjalan dengan Node.js, bun saat berjalan dengan Bun |
executableArgs | string[] | Argumen untuk diteruskan ke executable | [] |
fallbackModel | string | Model untuk digunakan jika model utama gagal | undefined |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | Hook siklus hidup untuk kustomisasi | undefined |
includePartialMessages | boolean | Sertakan event streaming parsial dalam aliran pesan | false |
maxThinkingTokens | number | Token maksimum untuk proses berpikir Claude | undefined |
maxTurns | number | Jumlah maksimum giliran percakapan | undefined |
mcpServers | Record<string, McpServerConfig> | Konfigurasi server MCP | undefined |
model | string | Model Claude untuk digunakan | Menggunakan default dari konfigurasi CLI |
pathToClaudeCodeExecutable | string | Path ke executable Claude Code | Executable yang dikirim dengan @anthropic-ai/claude-code |
permissionMode | PermissionMode | Mode izin untuk sesi | "default" (opsi: "default" , "acceptEdits" , "bypassPermissions" , "plan" ) |
resume | string | ID sesi untuk dilanjutkan | undefined |
stderr | (data: string) => void | Callback untuk output stderr | undefined |
strictMcpConfig | boolean | Paksa validasi konfigurasi MCP yang ketat | undefined |
Streaming pesan parsial
Ketika includePartialMessages
diaktifkan, SDK akan mengeluarkan pesan stream_event
yang berisi event streaming mentah dari Claude API. Ini memungkinkan Anda mengakses konten parsial saat sedang dibuat, berguna untuk mengimplementasikan pembaruan UI real-time atau indikator progres.
Setiap pesan stream_event
mencakup:
event
: Event streaming mentah dari APIsession_id
: Pengenal sesi saat iniparent_tool_use_id
: ID alat yang sedang dieksekusi (jika berlaku)uuid
: Pengenal unik untuk event ini
Streaming pesan parsial terutama berguna untuk kasus penggunaan lanjutan di mana Anda memerlukan kontrol granular atas respons streaming. Untuk sebagian besar aplikasi, perilaku default (menunggu pesan lengkap) sudah cukup.
Percakapan multi-turn
Untuk percakapan multi-turn, Anda memiliki dua opsi.
Anda dapat menghasilkan respons dan melanjutkannya, atau Anda dapat menggunakan mode input streaming yang menerima async/generator untuk array pesan. Untuk saat ini, mode input streaming adalah satu-satunya cara untuk melampirkan gambar melalui pesan.
Lanjutkan dengan manajemen sesi
Mode input streaming
Mode input streaming memungkinkan Anda menyediakan pesan sebagai async iterable alih-alih string tunggal. Ini memungkinkan percakapan multi-turn, lampiran gambar, dan generasi pesan dinamis:
Input streaming dengan gambar
Mode input streaming adalah satu-satunya cara untuk melampirkan gambar melalui pesan:
Prompt sistem kustom
Prompt sistem mendefinisikan peran, keahlian, dan perilaku agen Anda:
Integrasi Server MCP
Model Context Protocol (MCP) memungkinkan Anda memberikan agen Anda alat dan kemampuan kustom:
Alat kustom dengan server MCP in-process
Server MCP SDK memungkinkan Anda membuat alat kustom yang berjalan langsung dalam proses aplikasi Anda, menyediakan eksekusi alat yang type-safe tanpa overhead proses terpisah atau komunikasi jaringan.
Membuat alat kustom
Gunakan fungsi helper createSdkMcpServer
dan tool
untuk mendefinisikan alat kustom yang type-safe:
Type safety dengan Zod
Helper tool
menyediakan inferensi tipe TypeScript penuh dari skema Zod Anda:
Hook
Hook memungkinkan Anda menyesuaikan dan memperluas perilaku Claude Code dengan menjalankan callback kustom pada berbagai titik dalam siklus hidup agen. Tidak seperti hook CLI yang mengeksekusi perintah bash, hook SDK adalah fungsi JavaScript/TypeScript yang berjalan in-process.
Mendefinisikan hook
Hook diorganisir berdasarkan tipe event, dengan matcher opsional untuk memfilter kapan mereka berjalan:
Event hook yang tersedia
- PreToolUse: Berjalan sebelum eksekusi alat. Dapat memblokir alat atau memberikan umpan balik.
- PostToolUse: Berjalan setelah eksekusi alat berhasil.
- UserPromptSubmit: Berjalan ketika pengguna mengirimkan prompt.
- SessionStart: Berjalan ketika sesi dimulai.
- SessionEnd: Berjalan ketika sesi berakhir.
- Stop: Berjalan ketika Claude akan berhenti merespons.
- SubagentStop: Berjalan ketika subagen akan berhenti.
- PreCompact: Berjalan sebelum pemadatan percakapan.
- Notification: Berjalan ketika notifikasi dikirim.
Tipe input hook
Setiap hook menerima input yang diketik berdasarkan event:
Output hook
Hook mengembalikan output yang mengontrol alur eksekusi:
Contoh praktis
Logging dan monitoring
Validasi operasi file
Auto-formatting kode
Peningkatan prompt
Instruksi pemadatan kustom
Perilaku eksekusi hook
- Paralelisasi: Semua hook yang cocok berjalan secara paralel
- Timeout: Hook menghormati sinyal abort dari opsi
- Penanganan error: Error hook dicatat tetapi tidak menghentikan eksekusi
- Matcher: Mendukung pola regex (mis.
"Write|Edit"
)
Menggabungkan hook dengan canUseTool
Sementara canUseTool
menyediakan kontrol izin, hook menawarkan integrasi siklus hidup yang lebih luas:
Kontrol izin dengan canUseTool
Callback canUseTool
menyediakan kontrol yang detail atas eksekusi alat. Ini dipanggil sebelum setiap penggunaan alat dan dapat mengizinkan, menolak, atau memodifikasi input alat:
Kasus penggunaan untuk canUseTool
- Manajemen izin: Periksa izin pengguna sebelum mengizinkan eksekusi alat
- Validasi input: Validasi atau sanitasi input alat sebelum eksekusi
- Rate limiting: Implementasikan batas rate untuk operasi mahal
- Audit logging: Log penggunaan alat untuk kepatuhan atau debugging
- Izin dinamis: Aktifkan/nonaktifkan alat berdasarkan kondisi runtime
Format output
Output teks (default)
Output JSON
Format input
Contoh integrasi agen
Agen respons insiden SRE
Review keamanan otomatis
Asisten hukum multi-turn
Skema pesan
Pesan yang dikembalikan dari JSON API diketik secara ketat sesuai dengan skema berikut:
Tipe pendukung tambahan:
Tipe Message
, MessageParam
, dan Usage
tersedia di Anthropic TypeScript SDK.
Sumber daya terkait
- Penggunaan dan kontrol CLI - Dokumentasi CLI lengkap
- Integrasi GitHub Actions - Otomatisasi workflow GitHub Anda dengan Claude
- Workflow umum - Panduan langkah demi langkah untuk kasus penggunaan umum