Installazione
L’SDK raggruppa un binario nativo Claude Code per la tua piattaforma come dipendenza opzionale come
@anthropic-ai/claude-agent-sdk-darwin-arm64. Non è necessario installare Claude Code separatamente. Se il tuo gestore di pacchetti salta le dipendenze opzionali, l’SDK genera Native CLI binary for <platform> not found; imposta pathToClaudeCodeExecutable su un binario claude installato separatamente.Compilare in un singolo eseguibile
Quando compili la tua applicazione in un eseguibile a file singolo conbun build --compile, l’SDK non può risolvere il binario CLI raggruppato in fase di esecuzione. require.resolve non funziona all’interno del filesystem virtuale $bunfs dell’eseguibile compilato, quindi l’SDK genera Native CLI binary for <platform> not found.
Per aggirare questo problema, incorpora il binario della piattaforma come risorsa file, estrailo in un percorso reale all’avvio con extractFromBunfs() e passa quel percorso a pathToClaudeCodeExecutable.
L’helper extractFromBunfs() richiede @anthropic-ai/claude-agent-sdk v0.3.144 o successivo. L’esempio seguente compila per macOS su Apple Silicon:
extractFromBunfs() copia il binario incorporato dal filesystem virtuale dell’eseguibile compilato in una directory temporanea per utente e restituisce il percorso reale. Al di fuori di un eseguibile compilato restituisce il percorso di input invariato, quindi lo stesso codice viene eseguito in sviluppo senza modifiche.
Ogni eseguibile compilato incorpora il binario di una singola piattaforma. Fai corrispondere il pacchetto della piattaforma nell’importazione al tuo --target:
- Per la compilazione incrociata, installa il pacchetto della piattaforma non corrispondente, ad esempio
npm install @anthropic-ai/claude-agent-sdk-linux-x64 --force. - Su Windows, il sottopercorso binario è
claude.exe, ad esempio@anthropic-ai/claude-agent-sdk-win32-x64/claude.exe.
Funzioni
query()
La funzione principale per interagire con Claude Code. Crea un generatore asincrono che trasmette i messaggi man mano che arrivano.
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | Il prompt di input come stringa o iterabile asincrono per la modalità streaming |
options | Options | Oggetto di configurazione opzionale (vedi il tipo Options di seguito) |
Restituisce
Restituisce un oggettoQuery che estende AsyncGenerator<SDKMessage, void> con metodi aggiuntivi.
startup()
Pre-riscalda il subprocess CLI generandolo e completando l’handshake di inizializzazione prima che un prompt sia disponibile. L’handle WarmQuery restituito accetta un prompt in seguito e lo scrive in un processo già pronto, quindi la prima chiamata query() si risolve senza pagare il costo di generazione e inizializzazione del subprocess inline.
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
options | Options | Oggetto di configurazione opzionale. Uguale al parametro options di query() |
initializeTimeoutMs | number | Tempo massimo in millisecondi per attendere l’inizializzazione del subprocess. Predefinito a 60000. Se l’inizializzazione non si completa in tempo, la promessa viene rifiutata con un errore di timeout |
Restituisce
Restituisce unaPromise<WarmQuery> che si risolve una volta che il subprocess è stato generato e ha completato il suo handshake di inizializzazione.
Esempio
Chiamastartup() presto, ad esempio all’avvio dell’applicazione, quindi chiama .query() sull’handle restituito una volta che un prompt è pronto. Questo sposta la generazione del subprocess e l’inizializzazione fuori dal percorso critico.
tool()
Crea una definizione di tool MCP type-safe per l’uso con i server MCP dell’SDK.
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
name | string | Il nome del tool |
description | string | Una descrizione di cosa fa il tool |
inputSchema | Schema extends AnyZodRawShape | Schema Zod che definisce i parametri di input del tool (supporta sia Zod 3 che Zod 4) |
handler | (args, extra) => Promise<CallToolResult> | Funzione asincrona che esegue la logica del tool |
extras | { annotations?: ToolAnnotations } | Annotazioni MCP tool opzionali che forniscono suggerimenti comportamentali ai client |
ToolAnnotations
Re-esportato da @modelcontextprotocol/sdk/types.js. Tutti i campi sono suggerimenti opzionali; i client non dovrebbero fare affidamento su di essi per decisioni di sicurezza.
| Campo | Tipo | Predefinito | Descrizione |
|---|---|---|---|
title | string | undefined | Titolo leggibile per il tool |
readOnlyHint | boolean | false | Se true, il tool non modifica il suo ambiente |
destructiveHint | boolean | true | Se true, il tool può eseguire aggiornamenti distruttivi (significativo solo quando readOnlyHint è false) |
idempotentHint | boolean | false | Se true, le chiamate ripetute con gli stessi argomenti non hanno effetto aggiuntivo (significativo solo quando readOnlyHint è false) |
openWorldHint | boolean | true | Se true, il tool interagisce con entità esterne (ad esempio, ricerca web). Se false, il dominio del tool è chiuso (ad esempio, un tool di memoria) |
createSdkMcpServer()
Crea un’istanza di server MCP che viene eseguita nello stesso processo della tua applicazione.
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
options.name | string | Il nome del server MCP |
options.version | string | Stringa di versione opzionale |
options.tools | Array<SdkMcpToolDefinition> | Array di definizioni di tool create con tool() |
listSessions()
Scopre ed elenca le sessioni passate con metadati leggeri. Filtra per directory di progetto o elenca le sessioni in tutti i progetti.
Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
options.dir | string | undefined | Directory per cui elencare le sessioni. Se omesso, restituisce le sessioni in tutti i progetti |
options.limit | number | undefined | Numero massimo di sessioni da restituire |
options.includeWorktrees | boolean | true | Quando dir si trova all’interno di un repository git, includi le sessioni da tutti i percorsi worktree |
Tipo di ritorno: SDKSessionInfo
| Proprietà | Tipo | Descrizione |
|---|---|---|
sessionId | string | Identificatore di sessione univoco (UUID) |
summary | string | Titolo di visualizzazione: titolo personalizzato, riepilogo generato automaticamente o primo prompt |
lastModified | number | Ora dell’ultima modifica in millisecondi dall’epoca |
fileSize | number | undefined | Dimensione del file di sessione in byte. Popolato solo per l’archiviazione JSONL locale |
customTitle | string | undefined | Titolo della sessione impostato dall’utente (tramite /rename) |
firstPrompt | string | undefined | Primo prompt utente significativo nella sessione |
gitBranch | string | undefined | Ramo Git alla fine della sessione |
cwd | string | undefined | Directory di lavoro per la sessione |
tag | string | undefined | Tag della sessione impostato dall’utente (vedi tagSession()) |
createdAt | number | undefined | Ora di creazione in millisecondi dall’epoca, dal timestamp della prima voce |
Esempio
Stampa le 10 sessioni più recenti per un progetto. I risultati sono ordinati perlastModified decrescente, quindi il primo elemento è il più recente. Ometti dir per cercare in tutti i progetti.
getSessionMessages()
Legge i messaggi dell’utente e dell’assistente da una trascrizione di sessione passata.
Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
sessionId | string | obbligatorio | UUID della sessione da leggere (vedi listSessions()) |
options.dir | string | undefined | Directory del progetto in cui trovare la sessione. Se omesso, cerca in tutti i progetti |
options.limit | number | undefined | Numero massimo di messaggi da restituire |
options.offset | number | undefined | Numero di messaggi da saltare dall’inizio |
Tipo di ritorno: SessionMessage
| Proprietà | Tipo | Descrizione |
|---|---|---|
type | "user" | "assistant" | Ruolo del messaggio |
uuid | string | Identificatore di messaggio univoco |
session_id | string | Sessione a cui appartiene questo messaggio |
message | unknown | Payload del messaggio grezzo dalla trascrizione |
parent_tool_use_id | string | null | Per i messaggi dei subagent, l’tool_use_id della chiamata del tool Agent che lo ha generato. null per i messaggi della sessione principale e le sessioni precedenti |
Esempio
getSessionInfo()
Legge i metadati per una singola sessione per ID senza scansionare la directory del progetto completa.
Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
sessionId | string | obbligatorio | UUID della sessione da cercare |
options.dir | string | undefined | Percorso della directory del progetto. Se omesso, cerca in tutte le directory del progetto |
SDKSessionInfo, o undefined se la sessione non viene trovata.
renameSession()
Rinomina una sessione aggiungendo una voce di titolo personalizzato. Le chiamate ripetute sono sicure; il titolo più recente vince.
Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
sessionId | string | obbligatorio | UUID della sessione da rinominare |
title | string | obbligatorio | Nuovo titolo. Deve essere non vuoto dopo il trimming dello spazio bianco |
options.dir | string | undefined | Percorso della directory del progetto. Se omesso, cerca in tutte le directory del progetto |
tagSession()
Etichetta una sessione. Passa null per cancellare l’etichetta. Le chiamate ripetute sono sicure; l’etichetta più recente vince.
Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
sessionId | string | obbligatorio | UUID della sessione da etichettare |
tag | string | null | obbligatorio | Stringa di etichetta, o null per cancellare |
options.dir | string | undefined | Percorso della directory del progetto. Se omesso, cerca in tutte le directory del progetto |
resolveSettings()
Risolve le impostazioni effettive di Claude Code per una determinata directory utilizzando lo stesso motore di merge della CLI, senza generare la CLI Claude. Utilizzalo per ispezionare quale configurazione una chiamata query() vedrebbe prima di invocarne una.
Questa funzione è in fase alpha e la sua API potrebbe cambiare prima della stabilizzazione. Legge le fonti MDM, inclusi plist macOS e Windows HKLM/HKCU, per la parità con l’avvio della CLI, ma non esegue il subprocess
policyHelper configurato dall’amministratore. Il campo permissions.defaultMode viene restituito così com’è da tutti i livelli incluse le impostazioni del progetto. Il filtro di fiducia che la CLI applica prima di onorare i modi di autorizzazione crescenti non viene applicato.Parametri
resolveSettings() accetta un singolo oggetto di opzioni. Tutti i campi sono opzionali.
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
options.cwd | string | process.cwd() | Directory per risolvere le impostazioni di progetto e locali relative a |
options.settingSources | SettingSource[] | Tutte le fonti | Quali fonti del filesystem caricare. Passa [] per saltare le impostazioni utente, progetto e locali. Le impostazioni della politica gestita si caricano in tutti i casi |
options.managedSettings | Settings | undefined | Impostazioni della politica restrittiva fornite dall’host di incorporamento. Eliminate quando è presente un livello gestito distribuito dall’amministratore; unite sotto quel livello quando parentSettingsBehavior è "merge". Le chiavi non restrittive come model vengono silenziosamente eliminate in modo che questa opzione possa restringere la politica gestita ma non allentarla |
options.serverManagedSettings | Settings | undefined | Payload delle impostazioni gestite dal server da /api/claude_code/settings. Le chiavi non restrittive passano attraverso senza filtri |
Tipo di ritorno: ResolvedSettings
resolveSettings() restituisce un oggetto che descrive le impostazioni unite e la fonte che ha contribuito a ogni chiave.
| Proprietà | Tipo | Descrizione |
|---|---|---|
effective | Settings | Impostazioni unite dopo l’applicazione di tutte le fonti abilitate in ordine di precedenza |
provenance | Partial<Record<keyof Settings, ProvenanceEntry>> | Per ogni chiave di primo livello in effective, quale fonte ha fornito il valore |
sources | Array<{ source, settings, path?, policyOrigin? }> | Impostazioni grezze per fonte, ordinate dalla precedenza più bassa a quella più alta |
Esempio
L’esempio seguente risolve le impostazioni per una directory di progetto e stampa la fonte che controlla il periodo di pulizia.Tipi
Options
Oggetto di configurazione per la funzione query().
| Proprietà | Tipo | Predefinito | Descrizione |
|---|---|---|---|
abortController | AbortController | new AbortController() | Controller per annullare le operazioni |
additionalDirectories | string[] | [] | Directory aggiuntive a cui Claude può accedere |
agent | string | undefined | Nome dell’agente per il thread principale. L’agente deve essere definito nell’opzione agents o nelle impostazioni |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | Definisci programmaticamente i subagenti |
agentProgressSummaries | boolean | false | Quando true, genera riassunti di progresso a una riga per i subagenti e inoltrarli su eventi task_progress tramite il campo summary. Si applica ai subagenti in primo piano e in background |
allowDangerouslySkipPermissions | boolean | false | Abilita il bypass dei permessi. Obbligatorio quando si usa permissionMode: 'bypassPermissions' |
allowedTools | string[] | [] | Tool da approvare automaticamente senza richiedere. Questo non limita Claude a solo questi tool; i tool non elencati ricadono in permissionMode e canUseTool. Usa disallowedTools per bloccare i tool. Vedi Permessi |
betas | SdkBeta[] | [] | Abilita le funzioni beta |
canUseTool | CanUseTool | undefined | Funzione di permesso personalizzata per l’uso dei tool |
continue | boolean | false | Continua la conversazione più recente |
cwd | string | process.cwd() | Directory di lavoro corrente |
debug | boolean | false | Abilita la modalità debug per il processo Claude Code |
debugFile | string | undefined | Scrivi i log di debug in un percorso di file specifico. Abilita implicitamente la modalità debug |
disallowedTools | string[] | [] | Tool da negare. Un nome semplice come "Bash" rimuove il tool dal contesto di Claude. Una regola con ambito come "Bash(rm *)" lascia il tool disponibile e nega le chiamate corrispondenti in ogni modalità di permesso, incluso bypassPermissions. Vedi Permessi |
effort | 'low' | 'medium' | 'high' | 'xhigh' | 'max' | 'high' | Controlla quanto sforzo Claude mette nella sua risposta. Funziona con il pensiero adattivo per guidare la profondità del pensiero |
enableFileCheckpointing | boolean | false | Abilita il tracciamento dei cambiamenti di file per il rewind. Vedi File checkpointing |
env | Record<string, string | undefined> | process.env | Variabili di ambiente. Quando impostato, questo sostituisce l’ambiente del subprocess invece di unirsi a process.env, quindi passa { ...process.env, YOUR_VAR: 'value' } per mantenere le variabili ereditate come PATH. Vedi Gestisci risposte API lente o bloccate per un esempio di questo modello, e Variabili di ambiente per le variabili che la CLI sottostante legge. Imposta CLAUDE_AGENT_SDK_CLIENT_APP per identificare la tua app nell’intestazione User-Agent |
executable | 'bun' | 'deno' | 'node' | Auto-rilevato | Runtime JavaScript da usare |
executableArgs | string[] | [] | Argomenti da passare all’eseguibile |
extraArgs | Record<string, string | null> | {} | Argomenti aggiuntivi |
fallbackModel | string | undefined | Modello da usare se il primario fallisce |
forkSession | boolean | false | Quando si riprende con resume, esegui il fork a un nuovo ID di sessione invece di continuare la sessione originale |
forwardSubagentText | boolean | false | Inoltra i blocchi di testo e pensiero dei subagenti come messaggi dell’assistente e dell’utente con parent_tool_use_id impostato, in modo che i consumer possano renderizzare una trascrizione nidificata. Per impostazione predefinita, solo i blocchi tool_use e tool_result dai subagenti vengono emessi |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | Callback hook per gli eventi |
includeHookEvents | boolean | false | Includi gli eventi del ciclo di vita hook nel flusso di messaggi come SDKHookStartedMessage, SDKHookProgressMessage, e SDKHookResponseMessage |
includePartialMessages | boolean | false | Includi gli eventi di messaggi parziali |
loadTimeoutMs | number | 60000 | Alpha. Timeout in millisecondi per ogni chiamata sessionStore.load() e sessionStore.listSubkeys() durante la materializzazione del resume. Se l’adapter non si stabilizza entro questa finestra, la query fallisce invece di bloccarsi. Ignorato quando sessionStore non è impostato |
managedSettings | Settings | undefined | Impostazioni a livello di politica fornite dal processo genitore che genera. Eliminate quando un livello di impostazioni gestite controllato da IT esiste già sulla macchina, a meno che l’amministratore non acconsenta con parentSettingsBehavior: 'merge'. Filtrate solo alle chiavi restrittive indipendentemente |
maxBudgetUsd | number | undefined | Interrompi la query quando la stima del costo lato client raggiunge questo valore in USD. Confrontato con la stessa stima di total_cost_usd; vedi Traccia costo e utilizzo per le avvertenze di accuratezza |
maxThinkingTokens | number | undefined | Deprecato: Usa thinking invece. Token massimi per il processo di pensiero |
maxTurns | number | undefined | Turni agentici massimi (round trip di uso dei tool) |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | Configurazioni del server MCP |
model | string | Predefinito da CLI | Modello Claude da usare |
onElicitation | (request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult> | undefined | Callback per gestire le richieste di elicitazione MCP. Chiamato quando un server MCP richiede input dell’utente e nessun hook lo gestisce per primo. Se non fornito, le richieste di elicitazione non gestite vengono rifiutate automaticamente |
outputFormat | { type: 'json_schema', schema: JSONSchema } | undefined | Definisci il formato di output per i risultati dell’agente. Vedi Output strutturati per i dettagli |
outputStyle | string | undefined | Non è un campo Options. Imposta outputStyle nell’oggetto settings inline o in un file di impostazioni. Vedi Attiva uno stile di output |
pathToClaudeCodeExecutable | string | Auto-risolto dal binario nativo raggruppato | Percorso all’eseguibile Claude Code. Necessario solo se le dipendenze opzionali sono state saltate durante l’installazione o la tua piattaforma non è nel set supportato |
permissionMode | PermissionMode | 'default' | Modalità di permesso per la sessione |
permissionPromptToolName | string | undefined | Nome del tool MCP per i prompt di permesso |
persistSession | boolean | true | Quando false, disabilita la persistenza della sessione su disco. Le sessioni non possono essere riprese in seguito |
planModeInstructions | string | undefined | Istruzioni di flusso di lavoro personalizzate per la modalità plan. Quando permissionMode è 'plan', questa stringa sostituisce il corpo del flusso di lavoro della modalità plan predefinito. La CLI lo avvolge comunque con il preambolo di applicazione di sola lettura e il footer del protocollo ExitPlanMode |
plugins | SdkPluginConfig[] | [] | Carica plugin personalizzati da percorsi locali. Vedi Plugins per i dettagli |
promptSuggestions | boolean | false | Abilita i suggerimenti di prompt. Emette un messaggio prompt_suggestion dopo ogni turno con un prompt utente successivo previsto |
resume | string | undefined | ID della sessione da riprendere |
resumeSessionAt | string | undefined | Riprendi la sessione a un UUID di messaggio specifico |
sandbox | SandboxSettings | undefined | Configura il comportamento della sandbox a livello di programmazione. Vedi Impostazioni sandbox per i dettagli |
sessionId | string | Auto-generato | Usa un UUID specifico per la sessione invece di generarne uno automaticamente |
sessionStore | SessionStore | undefined | Specchia i trascritti della sessione in un backend esterno in modo che qualsiasi host possa riprenderli. Vedi Persisti le sessioni nell’archiviazione esterna |
sessionStoreFlush | 'batched' | 'eager' | 'batched' | Alpha. Modalità di flush per sessionStore. Ignorato quando sessionStore non è impostato |
settings | string | Settings | undefined | Oggetto impostazioni inline o percorso a un file di impostazioni. Popola il livello flag-settings nell’ordine di precedenza. Cambia a runtime con applyFlagSettings() |
settingSources | SettingSource[] | Impostazioni predefinite CLI (tutte le fonti) | Controlla quali impostazioni del filesystem caricare. Passa [] per disabilitare le impostazioni utente, progetto e locali. Le impostazioni della politica gestita vengono caricate indipendentemente. Vedi Usa le funzioni Claude Code |
skills | string[] | 'all' | undefined | Skills disponibili per la sessione. Passa 'all' per abilitare ogni skill scoperta, o un elenco di nomi di skill. Quando impostato, l’SDK aggiunge automaticamente lo strumento Skill a allowedTools. Se passi anche tools, includi 'Skill' in quell’elenco. Vedi Skills |
spawnClaudeCodeProcess | (options: SpawnOptions) => SpawnedProcess | undefined | Funzione personalizzata per generare il processo Claude Code. Usa per eseguire Claude Code in VM, container o ambienti remoti |
stderr | (data: string) => void | undefined | Callback per l’output stderr |
strictMcpConfig | boolean | false | Usa solo i server passati in mcpServers e ignora il progetto .mcp.json, le impostazioni utente, i server MCP forniti dai plugin e i connettori claude.ai |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean } | undefined (prompt minimo) | Configurazione del prompt di sistema. Passa una stringa per un prompt personalizzato, o { type: 'preset', preset: 'claude_code' } per usare il prompt di sistema di Claude Code. Quando si usa la forma dell’oggetto preset, aggiungi append per estenderlo con istruzioni aggiuntive, e imposta excludeDynamicSections: true per spostare il contesto per sessione nel primo messaggio utente per un migliore riutilizzo della cache dei prompt tra le macchine |
taskBudget | { total: number } | undefined | Alpha. Budget di attività lato API in token. Quando impostato, il modello viene informato del suo budget di token rimanente in modo che possa regolare l’uso dei tool e concludere prima del limite |
thinking | ThinkingConfig | { type: 'adaptive' } per i modelli supportati | Controlla il comportamento di pensiero/ragionamento di Claude. Vedi ThinkingConfig per le opzioni |
title | string | undefined | Titolo di visualizzazione per la sessione. Quando si riprende tramite resume o continue, il titolo persistente della sessione ripresa ha la precedenza; usa renameSession() per rinominare una sessione esistente |
toolAliases | Record<string, string> | undefined | Mappa i nomi dei tool incorporati ai nomi dei tool MCP in modo che Claude chiami la tua implementazione MCP al posto di quella incorporata. Ad esempio, { Bash: 'mcp__workspace__bash' } |
toolConfig | ToolConfig | undefined | Configurazione per il comportamento dei tool incorporati. Vedi ToolConfig per i dettagli |
tools | string[] | { type: 'preset'; preset: 'claude_code' } | undefined | Configurazione dei tool. Passa un array di nomi di tool o usa il preset per ottenere i tool predefiniti di Claude Code |
Gestisci risposte API lente o bloccate
Il subprocess CLI legge diverse variabili di ambiente che controllano i timeout dell’API e il rilevamento dei blocchi. Passale attraverso l’opzioneenv:
API_TIMEOUT_MS: timeout per richiesta sul client Anthropic, in millisecondi. Predefinito600000. Si applica al loop principale e a tutti i subagenti.CLAUDE_CODE_MAX_RETRIES: numero massimo di tentativi API. Predefinito10. Ogni tentativo ottiene la propria finestraAPI_TIMEOUT_MS, quindi il tempo wall case peggiore è approssimativamenteAPI_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)più backoff.CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: watchdog di blocco per i subagenti lanciati conrun_in_background. Predefinito600000. Si ripristina su ogni evento di stream; al blocco interrompe il subagente, contrassegna l’attività come fallita e presenta l’errore al genitore con qualsiasi risultato parziale. Non si applica ai subagenti sincroni.CLAUDE_ENABLE_STREAM_WATCHDOG=1conCLAUDE_STREAM_IDLE_TIMEOUT_MS: interrompe la richiesta quando le intestazioni sono arrivate ma il corpo della risposta smette di trasmettere. Disattivato per impostazione predefinita.CLAUDE_STREAM_IDLE_TIMEOUT_MSpredefinito a300000ed è limitato a quel minimo. La richiesta interrotta passa attraverso il percorso di tentativo normale.
Oggetto Query
Interfaccia restituita dalla funzione query().
Metodi
| Metodo | Descrizione |
|---|---|
interrupt() | Interrompe la query (disponibile solo in modalità input streaming) |
rewindFiles(userMessageId, options?) | Ripristina i file al loro stato al messaggio utente specificato. Passa { dryRun: true } per visualizzare in anteprima i cambiamenti. Richiede enableFileCheckpointing: true. Vedi File checkpointing |
setPermissionMode() | Cambia la modalità di permesso (disponibile solo in modalità input streaming) |
setModel() | Cambia il modello (disponibile solo in modalità input streaming) |
setMaxThinkingTokens() | Deprecato: Usa l’opzione thinking invece. Cambia i token di pensiero massimi |
applyFlagSettings(settings) | Unisce le impostazioni nel livello flag settings della sessione a runtime (disponibile solo in modalità input streaming). Vedi applyFlagSettings() |
initializationResult() | Restituisce il risultato di inizializzazione completo inclusi i comandi supportati, i modelli, le informazioni dell’account e la configurazione dello stile di output |
supportedCommands() | Restituisce i comandi slash disponibili |
supportedModels() | Restituisce i modelli disponibili con le informazioni di visualizzazione |
supportedAgents() | Restituisce i subagenti disponibili come AgentInfo[] |
mcpServerStatus() | Restituisce lo stato dei server MCP connessi |
accountInfo() | Restituisce le informazioni dell’account |
reconnectMcpServer(serverName) | Ricollega un server MCP per nome |
toggleMcpServer(serverName, enabled) | Abilita o disabilita un server MCP per nome |
setMcpServers(servers) | Sostituisci dinamicamente l’insieme dei server MCP per questa sessione. Restituisce informazioni su quali server sono stati aggiunti, rimossi e eventuali errori |
streamInput(stream) | Trasmetti i messaggi di input alla query per le conversazioni multi-turno |
stopTask(taskId) | Interrompi un’attività di background in esecuzione per ID |
close() | Chiudi la query e termina il processo sottostante. Termina forzatamente la query e pulisce tutte le risorse |
applyFlagSettings()
Cambia qualsiasi impostazione su una sessione in esecuzione senza riavviare la query. Usalo quando un’impostazione che non ha un setter dedicato deve cambiare a metà sessione, come irrigidire permissions dopo che l’agente legge input non attendibile. setModel() e setPermissionMode() sono setter dedicati per quelle due chiavi; applyFlagSettings() è la forma generale che accetta qualsiasi sottoinsieme delle chiavi di impostazioni, e passare model qui si comporta come setModel().
Solo alcune chiavi hanno effetto a metà sessione:
- Applicate al turno successivo:
model,effortLevel,ultracode,permissions,hooks,skillOverrides,fastMode,awaySummaryEnabled,agent. Cambiareagentapplica anche l’override del modello di quell’agente, gli hook e il prompt di sistema al turno successivo. - Nessun effetto a metà sessione: le opzioni del prompt di sistema. Questi vengono risolti una volta all’avvio, quindi la sessione in esecuzione mantiene il valore originale anche se la chiamata ha successo. Per cambiarli, avvia una nuova sessione.
settings inline di query() popola all’avvio. Le impostazioni flag si trovano vicino alla parte superiore dell’ordine di precedenza delle impostazioni: sovrascrivono le impostazioni utente, progetto e locali, e solo le impostazioni della politica gestita possono sovrascriverle. Questo è lo stesso livello che la sezione di precedenza in pagina chiama opzioni programmatiche.
Le chiamate successive eseguono un shallow-merge delle chiavi di livello superiore. Una seconda chiamata con { permissions: {...} } sostituisce l’intero oggetto permissions dalla chiamata precedente piuttosto che eseguire un deep-merge in esso. Per cancellare una chiave dal livello flag e ricadere in fonti di precedenza inferiore, passa null per quella chiave. Passare undefined non ha effetto perché la serializzazione JSON lo elimina.
Disponibile solo in modalità input streaming, lo stesso vincolo di setModel() e setPermissionMode().
L’esempio seguente cambia il modello attivo a metà sessione, quindi cancella l’override in modo che il modello ricada in qualsiasi cosa specifichino le impostazioni utente o progetto.
applyFlagSettings() è solo TypeScript. L’SDK Python non espone un metodo equivalente.WarmQuery
Handle restituito da startup(). Il subprocess è già generato e inizializzato, quindi chiamare query() su questo handle scrive il prompt direttamente in un processo pronto senza latenza di avvio.
Metodi
| Metodo | Descrizione |
|---|---|
query(prompt) | Invia un prompt al subprocess pre-riscaldato e restituisci una Query. Può essere chiamato solo una volta per WarmQuery |
close() | Chiudi il subprocess senza inviare un prompt. Usa questo per scartare una query calda che non è più necessaria |
WarmQuery implementa AsyncDisposable, quindi può essere usato con await using per la pulizia automatica.
SDKControlInitializeResponse
Tipo di ritorno di initializationResult(). Contiene i dati di inizializzazione della sessione.
initialize a una sessione che è già in esecuzione, il wrapper di risposta di controllo porta anche un array pending_permission_requests opzionale. Il campo si trova sul wrapper di risposta stesso, non nel payload SDKControlInitializeResponse sopra. Ogni voce è un messaggio control_request completo con la stessa forma { type: "control_request", request_id, request } che la sessione trasmette per le richieste di permesso durante l’esecuzione.
Queste sono richieste che sono state emesse prima che il client si connettesse e sono ancora in attesa di una risposta, quindi leggi questo array per visualizzare immediatamente i prompt di permesso in volo; non verranno reinviati.
AgentDefinition
Configurazione per un subagente definito programmaticamente.
| Campo | Obbligatorio | Descrizione |
|---|---|---|
description | Sì | Descrizione in linguaggio naturale di quando usare questo agente |
tools | No | Array di nomi di tool consentiti. Se omesso, eredita tutti i tool dal genitore. Per precaricare Skills nel contesto dell’agente, usa il campo skills piuttosto che elencando 'Skill' qui |
disallowedTools | No | Array di nomi di tool da esplicitamente disabilitare per questo agente |
prompt | Sì | Il prompt di sistema dell’agente |
model | No | Override del modello per questo agente. Accetta un alias come 'sonnet', 'opus', 'haiku', 'inherit', o un ID modello completo. Se omesso o 'inherit', usa il modello principale |
mcpServers | No | Specifiche del server MCP per questo agente |
skills | No | Array di nomi di skill da precaricare nel contesto dell’agente |
initialPrompt | No | Auto-inviato come il primo turno utente quando questo agente viene eseguito come agente del thread principale |
maxTurns | No | Numero massimo di turni agentici (round trip API) prima di fermarsi |
background | No | Esegui questo agente come un’attività di background non bloccante quando invocato |
memory | No | Fonte di memoria per questo agente: 'user', 'project', o 'local' |
effort | No | Livello di sforzo di ragionamento per questo agente. Accetta un livello denominato o un numero intero |
permissionMode | No | Modalità di permesso per l’esecuzione dei tool all’interno di questo agente. Vedi PermissionMode |
criticalSystemReminder_EXPERIMENTAL | No | Sperimentale: Promemoria critico aggiunto al prompt di sistema |
AgentMcpServerSpec
Specifica i server MCP disponibili per un subagente. Può essere un nome di server (stringa che fa riferimento a un server dalla configurazione mcpServers del genitore) o una configurazione di server inline che mappa i nomi dei server alle configurazioni.
McpServerConfigForProcessTransport è McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.
SettingSource
Controlla quali fonti di configurazione basate su filesystem l’SDK carica le impostazioni da.
| Valore | Descrizione | Posizione |
|---|---|---|
'user' | Impostazioni globali dell’utente | ~/.claude/settings.json |
'project' | Impostazioni del progetto condivise (controllate dalla versione) | .claude/settings.json |
'local' | Impostazioni del progetto locale (gitignorate) | .claude/settings.local.json |
Comportamento predefinito
QuandosettingSources è omesso o undefined, query() carica le stesse impostazioni del filesystem del CLI Claude Code: utente, progetto e locale. Le impostazioni della politica gestita vengono caricate in tutti i casi. Vedi Cosa settingSources non controlla per gli input che vengono letti indipendentemente da questa opzione, e come disabilitarli.
Perché usare settingSources
Disabilita le impostazioni del filesystem:Precedenza delle impostazioni
Quando più fonti vengono caricate, le impostazioni vengono unite con questa precedenza (più alta a più bassa):- Impostazioni locali (
.claude/settings.local.json) - Impostazioni del progetto (
.claude/settings.json) - Impostazioni dell’utente (
~/.claude/settings.json)
agents, allowedTools e settings sovrascrivono le impostazioni del filesystem utente, progetto e locale. Le impostazioni della politica gestita hanno precedenza sulle opzioni programmatiche.
PermissionMode
CanUseTool
Tipo di funzione di permesso personalizzato per controllare l’uso dei tool.
| Opzione | Tipo | Descrizione |
|---|---|---|
signal | AbortSignal | Segnalato se l’operazione deve essere interrotta |
suggestions | PermissionUpdate[] | Aggiornamenti di permesso suggeriti in modo che l’utente non venga richiesto di nuovo per questo tool. I prompt Bash includono un suggerimento con la destinazione localSettings, quindi restituirlo in updatedPermissions scrive la regola in .claude/settings.local.json e persiste tra le sessioni. |
blockedPath | string | Il percorso del file che ha attivato la richiesta di permesso, se applicabile |
decisionReason | string | Spiega perché questa richiesta di permesso è stata attivata |
toolUseID | string | Identificatore univoco per questa specifica chiamata di tool all’interno del messaggio dell’assistente |
agentID | string | Se in esecuzione all’interno di un sub-agente, l’ID del sub-agente |
PermissionResult
Risultato di un controllo di permesso.
ToolConfig
Configurazione per il comportamento dei tool incorporati.
| Campo | Tipo | Descrizione |
|---|---|---|
askUserQuestion.previewFormat | 'markdown' | 'html' | Acconsente al campo preview su AskUserQuestion opzioni e imposta il suo formato di contenuto. Se non impostato, Claude non emette anteprime |
McpServerConfig
Configurazione per i server MCP.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpSdkServerConfigWithInstance
McpClaudeAIProxyServerConfig
SdkPluginConfig
Configurazione per il caricamento dei plugin nell’SDK.
| Campo | Tipo | Descrizione |
|---|---|---|
type | 'local' | Deve essere 'local' (attualmente supportati solo plugin locali) |
path | string | Percorso assoluto o relativo alla directory del plugin |
Tipi di messaggio
SDKMessage
Tipo di unione di tutti i possibili messaggi restituiti dalla query.
SDKAssistantMessage
Messaggio di risposta dell’assistente.
message è un BetaMessage dall’SDK Anthropic. Include campi come id, content, model, stop_reason e usage.
SDKAssistantMessageError è uno di: 'authentication_failed', 'oauth_org_not_allowed', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens', o 'unknown'. 'model_not_found' significa che il modello selezionato non esiste o non è disponibile per il tuo account o deployment. 'overloaded' significa che l’API ha restituito un 529 perché il server è al massimo della capacità, a differenza di 'rate_limit', che è un 429 rispetto alla tua quota.
SDKUserMessage
Messaggio di input dell’utente.
shouldQuery a false per aggiungere il messaggio alla trascrizione senza attivare un turno dell’assistente. Il messaggio viene mantenuto e unito al prossimo messaggio utente che attiva un turno. Usa questo per iniettare contesto, come l’output di un comando che hai eseguito fuori banda, senza spendere una chiamata di modello su di esso.
SDKUserMessageReplay
Messaggio utente riprodotto con UUID obbligatorio.
SDKResultMessage
Messaggio di risultato finale.
subtype:
api_error_status: il codice di stato HTTP dell’errore API che ha terminato la conversazione. Assente onullquando il turno è terminato senza un errore API.ttft_ms: tempo al primo token in millisecondi. Presente solo sul ramo di successo.terminal_reason: il motivo per cui il ciclo è terminato. Uno di"completed","max_turns","tool_deferred","aborted_streaming","aborted_tools","hook_stopped","stop_hook_prevented","blocking_limit","rapid_refill_breaker","prompt_too_long","image_error", o"model_error".fast_mode_state: uno di"on","off", o"cooldown".
origin inoltro l’SDKMessageOrigin del messaggio utente che ha attivato questo risultato. Quando un’attività in background finisce e l’SDK inietta un turno di follow-up sintetico, il SDKResultMessage risultante contiene origin: { kind: "task-notification" }. Controlla questo campo per distinguere i risultati che rispondono al tuo prompt dai risultati emessi per i follow-up di attività in background, in modo da poter instradare o sopprimere questi ultimi. Il campo è assente per i risultati emessi prima di qualsiasi turno utente, come gli errori di avvio.
Quando un hook PreToolUse restituisce permissionDecision: "defer", il risultato ha stop_reason: "tool_deferred" e deferred_tool_use contiene l’id, il name e l’input del tool in sospeso. Leggi questo campo per visualizzare la richiesta nella tua interfaccia utente, quindi riprendi con lo stesso session_id per continuare. Vedi Rinvia una chiamata di tool per dopo per il percorso completo.
SDKSystemMessage
Messaggio di inizializzazione del sistema.
SDKPartialAssistantMessage
Messaggio parziale di streaming (solo quando includePartialMessages è true).
SDKCompactBoundaryMessage
Messaggio che indica un limite di compattazione della conversazione.
SDKPluginInstallMessage
Evento di progresso dell’installazione del plugin. Emesso quando CLAUDE_CODE_SYNC_PLUGIN_INSTALL è impostato, in modo che la tua applicazione Agent SDK possa tracciare l’installazione del plugin del marketplace prima del primo turno. Gli stati started e completed racchiudono l’installazione complessiva. Gli stati installed e failed segnalano i singoli marketplace e includono name.
SDKPermissionDeniedMessage
Evento di flusso emesso quando il sistema di autorizzazione nega automaticamente una chiamata di tool senza un prompt interattivo. Usalo per rendere il rifiuto nella tua interfaccia utente mentre accade, piuttosto che osservare solo il risultato del tool is_error che segue. Il percorso della richiesta interattiva raggiunge la tua applicazione separatamente tramite il callback canUseTool. I rifiuti emessi da un hook PreToolUse non vengono segnalati tramite questo evento.
Questo evento richiede Claude Code v2.1.136 o successivo.
| Campo | Tipo | Descrizione |
|---|---|---|
tool_name | string | Nome del tool che è stato negato |
tool_use_id | string | ID del blocco tool_use a cui questo rifiuto risponde |
agent_id | string | ID del subagente quando la chiamata negata ha avuto origine all’interno di un subagente. Rispecchia il campo su can_use_tool per l’instradamento lato host |
decision_reason_type | string | Discriminatore per il componente che ha deciso, come "rule", "mode", "classifier", o "asyncAgent" |
decision_reason | string | Motivo leggibile dall’uomo dal componente che ha deciso, quando disponibile |
message | string | Messaggio di rifiuto restituito al modello nel tool_result |
SDKPermissionDenial
Informazioni su un uso di tool negato.
SDKMessageOrigin
Provenienza di un messaggio con ruolo utente. Questo appare come origin su SDKUserMessage e viene inoltrato al corrispondente SDKResultMessage in modo da poter dire cosa ha attivato un determinato turno.
kind | Significato |
|---|---|
human | Input diretto dall’utente finale. Sui messaggi utente, un origin assente significa anche input umano. |
channel | Messaggio in arrivo su un canale. server è il nome del server MCP di origine. |
peer | Messaggio da un’altra sessione di agente tramite SendMessage. from è l’indirizzo del mittente; name è il nome visualizzato del mittente quando disponibile. |
task-notification | Turno sintetico iniettato dopo il completamento di un’attività in background. Vedi SDKTaskNotificationMessage. |
coordinator | Messaggio da un coordinatore di team in un team di agenti. |
Tipi di hook
Per una guida completa sull’uso degli hook con esempi e pattern comuni, vedi la guida Hooks.HookEvent
Eventi hook disponibili.
HookCallback
Tipo di funzione callback hook.
HookCallbackMatcher
Configurazione hook con matcher opzionale.
HookInput
Tipo di unione di tutti i tipi di input hook.
BaseHookInput
Interfaccia base che tutti i tipi di input hook estendono.
PreToolUseHookInput
PostToolUseHookInput
PostToolUseFailureHookInput
PostToolBatchHookInput
Si attiva una volta dopo che ogni chiamata di strumento in un batch è stata risolta, prima della prossima richiesta del modello. tool_response contiene il contenuto serializzato di tool_result che il modello vede; la forma differisce dall’oggetto strutturato Output di PostToolUseHookInput.
NotificationHookInput
UserPromptSubmitHookInput
SessionStartHookInput
SessionEndHookInput
StopHookInput
SubagentStartHookInput
SubagentStopHookInput
PreCompactHookInput
PermissionRequestHookInput
SetupHookInput
TeammateIdleHookInput
TaskCompletedHookInput
ConfigChangeHookInput
WorktreeCreateHookInput
WorktreeRemoveHookInput
MessageDisplayHookInput
HookJSONOutput
Valore di ritorno hook.
AsyncHookJSONOutput
SyncHookJSONOutput
Tipi di input dei tool
Documentazione degli schemi di input per tutti i tool Claude Code incorporati. Questi tipi vengono esportati da@anthropic-ai/claude-agent-sdk e possono essere usati per le interazioni dei tool type-safe.
ToolInputSchemas
Unione di tutti i tipi di input dei tool, esportati da @anthropic-ai/claude-agent-sdk.
Agent
Nome del tool:Agent (precedentemente Task, che è ancora accettato come alias)
AskUserQuestion
Nome del tool:AskUserQuestion
Bash
Nome del tool:Bash
Monitor
Nome del tool:Monitor
persistent: true per i watch di lunghezza della sessione come code tail. Monitor segue le stesse regole di permesso di Bash. Vedi il riferimento del tool Monitor per il comportamento e la disponibilità del provider.
TaskOutput
Nome del tool:TaskOutput
Edit
Nome del tool:Edit
Read
Nome del tool:Read
pages per gli intervalli di pagine PDF (ad esempio, "1-5").
Write
Nome del tool:Write
Glob
Nome del tool:Glob
Grep
Nome del tool:Grep
TaskStop
Nome del tool:TaskStop
NotebookEdit
Nome del tool:NotebookEdit
WebFetch
Nome del tool:WebFetch
WebSearch
Nome del tool:WebSearch
Workflow
Nome del tool:Workflow
Workflow è disponibile in Agent SDK v0.3.149 e versioni successive. Almeno uno tra script, name o scriptPath è obbligatorio.
| Campo | Tipo | Descrizione |
|---|---|---|
script | string | Script di workflow inline. Deve iniziare con export const meta = { name, description, phases } come letterale, seguito dal corpo dello script usando agent(), parallel(), pipeline() e phase() |
name | string | Nome di un workflow incorporato o uno salvato in .claude/workflows/. Risolto in uno script |
scriptPath | string | Percorso a un file di script di workflow su disco. Ha la precedenza su script e name. Ogni invocazione persiste il suo script e restituisce il percorso nel risultato, quindi puoi modificare quel file e reinvocare con lo stesso scriptPath per iterare |
args | unknown | Valore di input esposto allo script come args globale, per workflow denominati parametrizzati come una domanda di ricerca o un elenco di percorsi di file. Passa array e oggetti come valori JSON effettivi, non come stringa codificata in JSON |
resumeFromRunId | string | ID di esecuzione di una precedente invocazione di Workflow da riprendere. Le chiamate agent() completate con input invariati restituiscono risultati memorizzati nella cache; solo le chiamate modificate o nuove vengono eseguite live. Solo la stessa sessione |
TodoWrite
Nome del tool:TodoWrite
A partire da TypeScript Agent SDK 0.3.142,
TodoWrite è disabilitato per impostazione predefinita. Usa TaskCreate, TaskGet, TaskUpdate e TaskList invece. Vedi Migra ai tool Task per aggiornare il tuo codice di monitoraggio, oppure imposta CLAUDE_CODE_ENABLE_TASKS=0 per ripristinare TodoWrite.TaskCreate
Nome del tool:TaskCreate
TaskUpdate
Nome del tool:TaskUpdate
status a "deleted" per rimuoverlo.
TaskGet
Nome del tool:TaskGet
null quando l’ID non viene trovato.
TaskList
Nome del tool:TaskList
ExitPlanMode
Nome del tool:ExitPlanMode
ListMcpResources
Nome del tool:ListMcpResourcesTool
ReadMcpResource
Nome del tool:ReadMcpResourceTool
EnterWorktree
Nome del tool:EnterWorktree
path per passare a un worktree esistente del repository corrente invece di crearne uno nuovo. name e path si escludono a vicenda.
Tipi di output dei tool
Documentazione degli schemi di output per tutti i tool Claude Code incorporati. Questi tipi vengono esportati da@anthropic-ai/claude-agent-sdk e rappresentano i dati di risposta effettivi restituiti da ogni tool.
ToolOutputSchemas
Unione di tutti i tipi di output dei tool.
Agent
Nome del tool:Agent (precedentemente Task, che è ancora accettato come alias)
status: "completed" per le attività finite, "async_launched" per le attività di background, e "sub_agent_entered" per i subagenti interattivi.
AskUserQuestion
Nome del tool:AskUserQuestion
response viene impostato quando l’utente ha digitato una risposta in forma libera invece di rispondere alle domande strutturate; quando presente, Claude riceve “L’utente ha risposto: …” invece dell’elenco di risposte per domanda.
Bash
Nome del tool:Bash
backgroundTaskId.
Monitor
Nome del tool:Monitor
TaskStop per annullare il watch in anticipo.
Edit
Nome del tool:Edit
Read
Nome del tool:Read
type.
Write
Nome del tool:Write
Glob
Nome del tool:Glob
Grep
Nome del tool:Grep
mode: elenco di file, contenuto con corrispondenze o conteggi di corrispondenze.
TaskStop
Nome del tool:TaskStop
NotebookEdit
Nome del tool:NotebookEdit
WebFetch
Nome del tool:WebFetch
WebSearch
Nome del tool:WebSearch
Workflow
Nome del tool:Workflow
error prima di trattare l’esecuzione come avviata: uno script che non supera il controllo della sintassi restituisce status: "async_launched" con error impostato e non viene mai eseguito.
| Campo | Tipo | Descrizione |
|---|---|---|
status | "async_launched" | Il tool ha accettato l’invocazione. Questo è l’unico valore che il campo assume |
taskId | string | Identificatore dell’attività di background per l’esecuzione |
runId | string | Identificatore dell’esecuzione del workflow da passare come resumeFromRunId in una successiva invocazione |
summary | string | Descrizione in una riga di ciò che fa il workflow |
transcriptDir | string | Directory dove i transcript dei subagenti vengono scritti durante l’esecuzione |
scriptPath | string | Percorso dello script del workflow persistente per questa esecuzione. Modificalo e passalo come scriptPath per rieseguire senza inviare nuovamente lo script |
error | string | Impostato quando lo script non supera il controllo della sintassi. Quando presente, l’esecuzione non è stata avviata nonostante lo stato async_launched |
TodoWrite
Nome del tool:TodoWrite
A partire da TypeScript Agent SDK 0.3.142,
TodoWrite è disabilitato per impostazione predefinita. Usa invece TaskCreate, TaskGet, TaskUpdate e TaskList. Vedi Migrazione ai tool Task per aggiornare il tuo codice di monitoraggio, oppure imposta CLAUDE_CODE_ENABLE_TASKS=0 per ripristinare TodoWrite.TaskCreate
Nome del tool:TaskCreate
TaskUpdate
Nome del tool:TaskUpdate
TaskGet
Nome del tool:TaskGet
null quando l’ID non viene trovato.
TaskList
Nome del tool:TaskList
ExitPlanMode
Nome del tool:ExitPlanMode
ListMcpResources
Nome del tool:ListMcpResourcesTool
ReadMcpResource
Nome del tool:ReadMcpResourceTool
EnterWorktree
Nome del tool:EnterWorktree
Tipi di permesso
PermissionUpdate
Operazioni per l’aggiornamento dei permessi.
PermissionBehavior
PermissionUpdateDestination
PermissionRuleValue
Altri tipi
ApiKeySource
SdkBeta
Funzioni beta disponibili che possono essere abilitate tramite l’opzione betas. Vedi Intestazioni beta per ulteriori informazioni.
SlashCommand
Informazioni su un comando slash disponibile.
ModelInfo
Informazioni su un modello disponibile.
AgentInfo
Informazioni su un subagente disponibile che può essere invocato tramite il tool Agent.
| Campo | Tipo | Descrizione |
|---|---|---|
name | string | Identificatore del tipo di agente (ad esempio, "Explore", "general-purpose") |
description | string | Descrizione di quando usare questo agente |
model | string | undefined | Alias del modello che questo agente usa. Se omesso, eredita il modello del genitore |
McpServerStatus
Stato di un server MCP connesso.
McpServerStatusConfig
La configurazione di un server MCP come segnalato da mcpServerStatus(). Questa è l’unione di tutti i tipi di trasporto del server MCP.
McpServerConfig per i dettagli su ogni tipo di trasporto.
AccountInfo
Informazioni sull’account per l’utente autenticato.
ModelUsage
Statistiche di utilizzo per modello restituite nei messaggi di risultato. Il valore costUSD è una stima lato client. Vedi Traccia costo e utilizzo per le avvertenze di fatturazione.
ConfigScope
NonNullableUsage
Una versione di Usage con tutti i campi nullable resi non-nullable.
Usage
Statistiche di utilizzo dei token. Questo è il tipo BetaUsage da @anthropic-ai/sdk.
BetaServerToolUsage e BetaIterationsUsage sono definiti in @anthropic-ai/sdk.
CallToolResult
Tipo di risultato del tool MCP (da @modelcontextprotocol/sdk/types.js). structuredContent è un oggetto JSON che può essere restituito insieme a content, inclusi blocchi di immagini. Vedi Restituisci dati strutturati.
ThinkingConfig
Controlla il comportamento di pensiero/ragionamento di Claude. Ha precedenza sul deprecato maxThinkingTokens.
display controlla se il testo di pensiero viene restituito "summarized" o "omitted". Su Claude Opus 4.7 e versioni successive, l’impostazione predefinita dell’API è "omitted", quindi imposta "summarized" per ricevere il contenuto di pensiero nei blocchi thinking.
SpawnedProcess
Interfaccia per la generazione di processi personalizzati (usata con l’opzione spawnClaudeCodeProcess). ChildProcess soddisfa già questa interfaccia.
SpawnOptions
Opzioni passate alla funzione di generazione personalizzata.
Il campo
signal comunica alla tua funzione di generazione quando smontare il processo. Passalo come opzione signal al spawn() di Node, oppure passalo al tuo gestore di smontaggio della VM o del contenitore.Questo segnale non si attiva nell’istante in cui Options.abortController si interrompe. L’SDK prima chiude lo stdin del processo e attende circa due secondi affinché la CLI si arresti correttamente, quindi interrompe questo segnale. Per reagire nel momento in cui il chiamante si interrompe, ascolta il tuo Options.abortController.signal, che la tua funzione di generazione può referenziare dal suo ambito di chiusura.McpSetServersResult
Risultato di un’operazione setMcpServers().
RewindFilesResult
Risultato di un’operazione rewindFiles().
SDKStatusMessage
Messaggio di aggiornamento dello stato (ad esempio, compattazione).
SDKTaskNotificationMessage
Notifica quando un’attività di background si completa, fallisce o viene interrotta. Le attività di background includono i comandi Bash run_in_background, i watch Monitor e i subagenti di background.
SDKToolUseSummaryMessage
Riepilogo dell’uso dei tool in una conversazione.
SDKHookStartedMessage
Emesso quando un hook inizia l’esecuzione.
SDKHookProgressMessage
Emesso mentre un hook è in esecuzione, con output stdout/stderr.
SDKHookResponseMessage
Emesso quando un hook finisce l’esecuzione.
SDKToolProgressMessage
Emesso periodicamente mentre un tool è in esecuzione per indicare il progresso.
SDKAuthStatusMessage
Emesso durante i flussi di autenticazione.
SDKTaskStartedMessage
Emesso quando un’attività di background inizia. Il campo task_type è "local_bash" per i comandi Bash di background e i watch Monitor, "local_agent" per i subagenti, o "remote_agent".
SDKTaskProgressMessage
Emesso periodicamente mentre un subagente o un’attività di background è in esecuzione. Il campo summary è popolato solo quando agentProgressSummaries è abilitato.
SDKTaskUpdatedMessage
Emesso quando lo stato di un’attività di background cambia, ad esempio quando passa da running a completed. Unisci patch nella tua mappa attività locale con chiave task_id. Il campo end_time è un timestamp Unix epoch in millisecondi, confrontabile con Date.now().
SDKFilesPersistedEvent
Emesso quando i checkpoint dei file vengono persistiti su disco.
SDKRateLimitEvent
Emesso quando la sessione incontra un limite di velocità.
SDKLocalCommandOutputMessage
Output da un comando slash locale (ad esempio, /voice o /usage). Visualizzato come testo in stile assistente nella trascrizione.
SDKCommandsChangedMessage
Emesso quando l’insieme dei comandi disponibili cambia durante la sessione, ad esempio quando le skill vengono scoperte mentre l’agente entra in una sottodirectory. L’array commands è l’elenco completo aggiornato, quindi sostituisci qualsiasi elenco di comandi memorizzato nella cache con questo payload. Chiamare di nuovo supportedCommands() non è equivalente: quel metodo restituisce lo snapshot acquisito all’inizializzazione e non riflette i cambiamenti durante la sessione.
SDKPromptSuggestionMessage
Emesso dopo ogni turno quando promptSuggestions è abilitato. Contiene un prompt utente successivo previsto.
AbortError
Classe di errore personalizzata per le operazioni di interruzione.
Configurazione della sandbox
SandboxSettings
Configurazione per il comportamento della sandbox. Usa questo per abilitare il sandboxing dei comandi e configurare le restrizioni di rete a livello di programmazione.
| Proprietà | Tipo | Predefinito | Descrizione |
|---|---|---|---|
enabled | boolean | false | Abilita la modalità sandbox per l’esecuzione dei comandi |
failIfUnavailable | boolean | true | Arresta all’avvio se enabled è true ma la sandbox non può avviarsi. Imposta false per ricadere nell’esecuzione senza sandbox con un avviso su stderr |
autoAllowBashIfSandboxed | boolean | true | Auto-approva i comandi bash quando la sandbox è abilitata |
excludedCommands | string[] | [] | Comandi che sempre bypassano le restrizioni della sandbox (ad esempio, ['docker']). Questi vengono eseguiti senza sandbox automaticamente senza coinvolgimento del modello |
allowUnsandboxedCommands | boolean | true | Consenti al modello di richiedere l’esecuzione di comandi al di fuori della sandbox. Quando true, il modello può impostare dangerouslyDisableSandbox nell’input del tool, che ricade nel sistema di permessi |
network | SandboxNetworkConfig | undefined | Configurazione della sandbox specifica della rete |
filesystem | SandboxFilesystemConfig | undefined | Configurazione della sandbox specifica del filesystem per le restrizioni di lettura/scrittura |
ignoreViolations | Record<string, string[]> | undefined | Mappa delle categorie di violazione ai pattern da ignorare (ad esempio, { file: ['/tmp/*'], network: ['localhost'] }) |
enableWeakerNestedSandbox | boolean | false | Abilita una sandbox nidificata più debole per la compatibilità |
ripgrep | { command: string; args?: string[] } | undefined | Configurazione del binario ripgrep personalizzato per gli ambienti sandbox |
La sandbox dipende dal supporto della piattaforma e, su Linux, da strumenti come
bubblewrap e socat. Quando enabled è true e la sandbox non può avviarsi, query() segnala un messaggio result con subtype: "error_during_execution" e il motivo in errors, quindi si arresta. Guarda quel sottotipo piuttosto che aspettarti che query() generi un’eccezione prima di cedere i messaggi.Per eseguire senza sandbox, imposta failIfUnavailable: false.Esempio di utilizzo
SandboxNetworkConfig
Configurazione specifica della rete per la modalità sandbox. Queste impostazioni si applicano ai comandi Bash in sandbox quando enabled è true nella SandboxSettings padre. Non limitano lo strumento WebFetch, che utilizza invece regole di permesso.
| Proprietà | Tipo | Predefinito | Descrizione |
|---|---|---|---|
allowedDomains | string[] | [] | Nomi di dominio a cui i processi in sandbox possono accedere |
deniedDomains | string[] | [] | Nomi di dominio a cui i processi in sandbox non possono accedere. Ha la precedenza su allowedDomains |
allowManagedDomainsOnly | boolean | false | Solo impostazioni gestite. Quando impostato nelle impostazioni gestite, solo le voci allowedDomains dalle impostazioni gestite vengono rispettate e le voci dalle impostazioni utente, progetto o locali vengono ignorate. Non ha effetto quando impostato tramite le opzioni SDK |
allowLocalBinding | boolean | false | Consenti ai processi di associarsi alle porte locali (ad esempio, per i server di sviluppo) |
allowUnixSockets | string[] | [] | Percorsi dei socket Unix a cui i processi possono accedere (ad esempio, socket Docker) |
allowAllUnixSockets | boolean | false | Consenti l’accesso a tutti i socket Unix |
httpProxyPort | number | undefined | Porta del proxy HTTP per le richieste di rete |
socksProxyPort | number | undefined | Porta del proxy SOCKS per le richieste di rete |
Il proxy sandbox integrato applica
allowedDomains in base al nome host richiesto e non termina o ispeziona il traffico TLS, quindi tecniche come il domain fronting possono potenzialmente bypassarlo. Vedi Limitazioni di sicurezza del sandboxing per i dettagli e Distribuzione sicura per configurare un proxy che termina TLS.SandboxFilesystemConfig
Configurazione specifica del filesystem per la modalità sandbox.
| Proprietà | Tipo | Predefinito | Descrizione |
|---|---|---|---|
allowWrite | string[] | [] | Pattern di percorso file per consentire l’accesso in scrittura a |
denyWrite | string[] | [] | Pattern di percorso file per negare l’accesso in scrittura a |
denyRead | string[] | [] | Pattern di percorso file per negare l’accesso in lettura a |
Fallback dei permessi per i comandi senza sandbox
QuandoallowUnsandboxedCommands è abilitato, il modello può richiedere di eseguire comandi al di fuori della sandbox impostando dangerouslyDisableSandbox: true nell’input del tool. Queste richieste ricadono nel sistema di permessi esistente, il che significa che il tuo handler canUseTool viene invocato, permettendoti di implementare la logica di autorizzazione personalizzata.
excludedCommands vs allowUnsandboxedCommands:excludedCommands: Un elenco statico di comandi che sempre bypassano la sandbox automaticamente (ad esempio,['docker']). Il modello non ha controllo su questo.allowUnsandboxedCommands: Consenti al modello di decidere in fase di esecuzione se richiedere l’esecuzione senza sandbox impostandodangerouslyDisableSandbox: truenell’input del tool.
- Controllare le richieste del modello: Registra quando il modello richiede l’esecuzione senza sandbox
- Implementare allowlist: Consenti solo comandi specifici di essere eseguiti senza sandbox
- Aggiungere flussi di lavoro di approvazione: Richiedi l’autorizzazione esplicita per le operazioni privilegiate
Vedi anche
- Panoramica dell’SDK - Concetti generali dell’SDK
- Riferimento Python SDK - Documentazione dell’SDK Python
- Riferimento CLI - Interfaccia della riga di comando
- Flussi di lavoro comuni - Guide passo dopo passo