Claude può utilizzare uno strumento editor di testo definito da Anthropic per visualizzare e modificare file di testo, aiutandoti a debuggare, correggere e migliorare il tuo codice o altri documenti di testo. Questo permette a Claude di interagire direttamente con i tuoi file, fornendo assistenza pratica piuttosto che suggerire semplicemente modifiche.

Prima di utilizzare lo strumento editor di testo

Utilizza un modello compatibile

Lo strumento editor di testo di Anthropic è disponibile per più modelli Claude:

  • Claude 4 Opus & Sonnet: text_editor_20250429
  • Claude Sonnet 3.7: text_editor_20250124
  • Claude Sonnet 3.5: text_editor_20241022

Claude Sonnet 3.5 richiede l’header beta computer-use-2024-10-22 quando si utilizza lo strumento editor di testo.

Lo strumento editor di testo è generalmente disponibile in Claude 4 e Sonnet 3.7.

Il più recente text_editor_20250429 per i modelli Claude 4 non include il comando undo_edit. Se hai bisogno di questa funzionalità, dovrai utilizzare Claude 3.7 o Sonnet 3.5 con le rispettive versioni dello strumento.

Valuta l’adeguatezza del tuo caso d’uso

Alcuni esempi di quando utilizzare lo strumento editor di testo sono:

  • Debug del codice: Fai identificare e correggere bug nel tuo codice a Claude, dagli errori di sintassi ai problemi di logica.
  • Refactoring del codice: Lascia che Claude migliori la struttura, la leggibilità e le prestazioni del tuo codice attraverso modifiche mirate.
  • Generazione di documentazione: Chiedi a Claude di aggiungere docstring, commenti o file README alla tua base di codice.
  • Creazione di test: Fai creare a Claude test unitari per il tuo codice basati sulla sua comprensione dell’implementazione.

Utilizza lo strumento editor di testo

Fornisci lo strumento editor di testo (chiamato str_replace_based_edit_tool) a Claude utilizzando l’API Messages:

curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-opus-4-20250514",
    "max_tokens": 1024,
    "tools": [
      {
        "type": "text_editor_20250429",
        "name": "str_replace_based_edit_tool"
      }
    ],
    "messages": [
      {
        "role": "user",
        "content": "C'\''è un errore di sintassi nel mio file primes.py. Puoi aiutarmi a correggerlo?"
      }
    ]
  }'

Lo strumento editor di testo può essere utilizzato nel seguente modo:

1

Fornisci a Claude lo strumento editor di testo e un prompt utente

  • Includi lo strumento editor di testo nella tua richiesta API
  • Fornisci un prompt utente che potrebbe richiedere l’esame o la modifica di file, come “Puoi correggere l’errore di sintassi nel mio codice?”
2

Claude utilizza lo strumento per esaminare file o directory

  • Claude valuta cosa deve guardare e utilizza il comando view per esaminare il contenuto dei file o elencare il contenuto delle directory
  • La risposta API conterrà un blocco di contenuto tool_use con il comando view
3

Esegui il comando view e restituisci i risultati

  • Estrai il percorso del file o della directory dalla richiesta di utilizzo dello strumento di Claude
  • Leggi il contenuto del file o elenca il contenuto della directory e restituiscili a Claude
  • Restituisci i risultati a Claude continuando la conversazione con un nuovo messaggio user contenente un blocco di contenuto tool_result
4

Claude utilizza lo strumento per modificare i file

  • Dopo aver esaminato il file o la directory, Claude potrebbe utilizzare un comando come str_replace per apportare modifiche o insert per aggiungere testo a un numero di riga specifico.
  • Se Claude utilizza il comando str_replace, Claude costruisce una richiesta di utilizzo dello strumento formattata correttamente con il vecchio testo e il nuovo testo con cui sostituirlo
5

Esegui la modifica e restituisci i risultati

  • Estrai il percorso del file, il vecchio testo e il nuovo testo dalla richiesta di utilizzo dello strumento di Claude
  • Esegui la sostituzione del testo nel file
  • Restituisci i risultati a Claude
6

Claude fornisce la sua analisi e spiegazione

  • Dopo aver esaminato e possibilmente modificato i file, Claude fornisce una spiegazione completa di ciò che ha trovato e delle modifiche che ha apportato

Comandi dello strumento editor di testo

Lo strumento editor di testo supporta diversi comandi per visualizzare e modificare i file:

view

Il comando view permette a Claude di esaminare il contenuto di un file o elencare il contenuto di una directory. Può leggere l’intero file o un intervallo specifico di righe.

Parametri:

  • command: Deve essere “view”
  • path: Il percorso del file o della directory da visualizzare
  • view_range (opzionale): Un array di due interi che specificano i numeri di riga di inizio e fine da visualizzare. I numeri di riga sono indicizzati a 1, e -1 per la riga finale significa leggere fino alla fine del file. Questo parametro si applica solo quando si visualizzano file, non directory.

str_replace

Il comando str_replace permette a Claude di sostituire una stringa specifica in un file con una nuova stringa. Questo viene utilizzato per apportare modifiche precise.

Parametri:

  • command: Deve essere “str_replace”
  • path: Il percorso del file da modificare
  • old_str: Il testo da sostituire (deve corrispondere esattamente, inclusi spazi bianchi e indentazione)
  • new_str: Il nuovo testo da inserire al posto del vecchio testo

create

Il comando create permette a Claude di creare un nuovo file con contenuto specificato.

Parametri:

  • command: Deve essere “create”
  • path: Il percorso dove dovrebbe essere creato il nuovo file
  • file_text: Il contenuto da scrivere nel nuovo file

insert

Il comando insert permette a Claude di inserire testo in una posizione specifica in un file.

Parametri:

  • command: Deve essere “insert”
  • path: Il percorso del file da modificare
  • insert_line: Il numero di riga dopo il quale inserire il testo (0 per l’inizio del file)
  • new_str: Il testo da inserire

undo_edit

Il comando undo_edit permette a Claude di annullare l’ultima modifica apportata a un file.

Questo comando è disponibile solo in Claude Sonnet 3.7 e Claude Sonnet 3.5. Non è supportato nei modelli Claude 4 che utilizzano il text_editor_20250429.

Parametri:

  • command: Deve essere “undo_edit”
  • path: Il percorso del file la cui ultima modifica dovrebbe essere annullata

Esempio: Correggere un errore di sintassi con lo strumento editor di testo

Questo esempio dimostra come Claude 4 utilizza lo strumento editor di testo per correggere un errore di sintassi in un file Python.

Prima, la tua applicazione fornisce a Claude lo strumento editor di testo e un prompt per correggere un errore di sintassi:

curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-opus-4-20250514",
    "max_tokens": 1024,
    "tools": [
      {
        "type": "text_editor_20250429",
        "name": "str_replace_based_edit_tool"
      }
    ],
    "messages": [
      {
        "role": "user",
        "content": "C'\''è un errore di sintassi nel mio file primes.py. Puoi aiutarmi a correggerlo?"
      }
    ]
  }'

Claude utilizzerà prima lo strumento editor di testo per visualizzare il file:

{
  "id": "msg_01XAbCDeFgHiJkLmNoPQrStU",
  "model": "claude-opus-4-20250514",
  "stop_reason": "tool_use",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Ti aiuterò a correggere l'errore di sintassi nel tuo file primes.py. Prima, lascia che dia un'occhiata al file per identificare il problema."
    },
    {
      "type": "tool_use",
      "id": "toolu_01AbCdEfGhIjKlMnOpQrStU",
      "name": "str_replace_based_edit_tool",
      "input": {
        "command": "view",
        "path": "primes.py"
      }
    }
  ]
}

La tua applicazione dovrebbe quindi leggere il file e restituire il suo contenuto a Claude:

curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-opus-4-20250514",
    "max_tokens": 1024,
    "tools": [
      {
        "type": "text_editor_20250429",
        "name": "str_replace_based_edit_tool"
      }
    ],
    "messages": [
      {
        "role": "user",
        "content": "C'\''è un errore di sintassi nel mio file primes.py. Puoi aiutarmi a correggerlo?"
      },
      {
            "role": "assistant",
            "content": [
                {
                    "type": "text",
                    "text": "Ti aiuterò a correggere l'\''errore di sintassi nel tuo file primes.py. Prima, lascia che dia un'\''occhiata al file per identificare il problema."
                },
                {
                    "type": "tool_use",
                    "id": "toolu_01AbCdEfGhIjKlMnOpQrStU",
                    "name": "str_replace_based_edit_tool",
                    "input": {
                        "command": "view",
                        "path": "primes.py"
                    }
                }
            ]
        },
        {
            "role": "user",
            "content": [
                {
                    "type": "tool_result",
                    "tool_use_id": "toolu_01AbCdEfGhIjKlMnOpQrStU",
                    "content": "1: def is_prime(n):\n2:     \"\"\"Verifica se un numero è primo.\"\"\"\n3:     if n <= 1:\n4:         return False\n5:     if n <= 3:\n6:         return True\n7:     if n % 2 == 0 or n % 3 == 0:\n8:         return False\n9:     i = 5\n10:     while i * i <= n:\n11:         if n % i == 0 or n % (i + 2) == 0:\n12:             return False\n13:         i += 6\n14:     return True\n15: \n16: def get_primes(limit):\n17:     \"\"\"Genera una lista di numeri primi fino al limite dato.\"\"\"\n18:     primes = []\n19:     for num in range(2, limit + 1)\n20:         if is_prime(num):\n21:             primes.append(num)\n22:     return primes\n23: \n24: def main():\n25:     \"\"\"Funzione principale per dimostrare la generazione di numeri primi.\"\"\"\n26:     limit = 100\n27:     prime_list = get_primes(limit)\n28:     print(f\"Numeri primi fino a {limit}:\")\n29:     print(prime_list)\n30:     print(f\"Trovati {len(prime_list)} numeri primi.\")\n31: \n32: if __name__ == \"__main__\":\n33:     main()"
                }
            ]
        }
    ]
  }'

Numeri di riga

Nell’esempio sopra, il risultato dello strumento view include il contenuto del file con numeri di riga anteposti a ogni riga (ad esempio, “1: def is_prime(n):”). I numeri di riga non sono obbligatori, ma sono essenziali per utilizzare con successo il parametro view_range per esaminare sezioni specifiche dei file e il parametro insert_line per aggiungere contenuto in posizioni precise.

Claude identificherà l’errore di sintassi e utilizzerà il comando str_replace per correggerlo:

{
  "id": "msg_01VwXyZAbCdEfGhIjKlMnO",
  "model": "claude-opus-4-20250514",
  "stop_reason": "tool_use",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Ho trovato l'errore di sintassi nel tuo file primes.py. Nella funzione `get_primes`, manca un due punti (:) alla fine della riga del ciclo for. Lascia che lo corregga per te."
    },
    {
      "type": "tool_use",
      "id": "toolu_01PqRsTuVwXyZAbCdEfGh",
      "name": "str_replace_based_edit_tool",
      "input": {
        "command": "str_replace",
        "path": "primes.py",
        "old_str": "    for num in range(2, limit + 1)",
        "new_str": "    for num in range(2, limit + 1):"
      }
    }
  ]
}

La tua applicazione dovrebbe quindi apportare la modifica e restituire il risultato:

response = client.messages.create(
    model="claude-opus-4-20250514",
    max_tokens=1024,
    tools=[
        {
            "type": "text_editor_20250429",
            "name": "str_replace_based_edit_tool"
        }
    ],
    messages=[
        # Messaggi precedenti...
        {
            "role": "assistant",
            "content": [
                {
                    "type": "text",
                    "text": "Ho trovato l'errore di sintassi nel tuo file primes.py. Nella funzione `get_primes`, manca un due punti (:) alla fine della riga del ciclo for. Lascia che lo corregga per te."
                },
                {
                    "type": "tool_use",
                    "id": "toolu_01PqRsTuVwXyZAbCdEfGh",
                    "name": "str_replace_based_edit_tool",
                    "input": {
                        "command": "str_replace",
                        "path": "primes.py",
                        "old_str": "    for num in range(2, limit + 1)",
                        "new_str": "    for num in range(2, limit + 1):"
                    }
                }
            ]
        },
        {
            "role": "user",
            "content": [
                {
                    "type": "tool_result",
                    "tool_use_id": "toolu_01PqRsTuVwXyZAbCdEfGh",
                    "content": "Testo sostituito con successo in esattamente una posizione."
                }
            ]
        }
    ]
)

Infine, Claude fornirà una spiegazione completa della correzione:

{
  "id": "msg_01IjKlMnOpQrStUvWxYzAb",
  "model": "claude-opus-4-20250514",
  "stop_reason": "end_turn",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Ho corretto l'errore di sintassi nel tuo file primes.py. Il problema era nella funzione `get_primes` alla riga 19. Mancava un due punti (:) alla fine della riga del ciclo for.\n\nE questo quello che ho cambiato:\n\nDa:\n```python\nfor num in range(2, limit + 1)\n```\n\nA:\n```python\nfor num in range(2, limit + 1):\n```\n\nIn Python, un due punti è richiesto alla fine delle istruzioni che iniziano un nuovo blocco di codice, come i cicli for, le istruzioni if, le definizioni di funzioni, ecc. Senza i due punti, Python genera un errore di sintassi perché non sa dove inizia il blocco di codice.\n\nIl tuo codice ora dovrebbe funzionare correttamente. La funzione genererà correttamente una lista di numeri primi fino al limite specificato."
    }
  ]
}

Implementa lo strumento editor di testo

Lo strumento editor di testo è implementato come uno strumento senza schema. Quando utilizzi questo strumento, non devi fornire uno schema di input come con altri strumenti; lo schema è integrato nel modello di Claude e non può essere modificato.

Il tipo di strumento dipende dalla versione del modello:

  • Claude 4: type: "text_editor_20250429"
  • Claude Sonnet 3.7: type: "text_editor_20250124"
  • Claude Sonnet 3.5: type: "text_editor_20241022"
1

Inizializza la tua implementazione dell'editor

Crea funzioni di supporto per gestire operazioni sui file come leggere, scrivere e modificare file. Considera l’implementazione di funzionalità di backup per recuperare dagli errori.

2

Gestisci le chiamate dello strumento editor

Crea una funzione che elabora le chiamate di strumento da Claude basate sul tipo di comando:

def handle_editor_tool(tool_call, model_version):
    input_params = tool_call.input
    command = input_params.get('command', '')
    file_path = input_params.get('path', '')
    
    if command == 'view':
        # Leggi e restituisci il contenuto del file
        pass
    elif command == 'str_replace':
        # Sostituisci il testo nel file
        pass
    elif command == 'create':
        # Crea un nuovo file
        pass
    elif command == 'insert':
        # Inserisci testo nella posizione
        pass
    elif command == 'undo_edit':
        # Controlla se è un modello Claude 4
        if 'str_replace_based_edit_tool' in model_version:
            return {"error": "il comando undo_edit non è supportato in Claude 4"}
        # Ripristina dal backup per Claude 3.7/3.5
        pass
3

Implementa misure di sicurezza

Aggiungi validazione e controlli di sicurezza:

  • Valida i percorsi dei file per prevenire l’attraversamento delle directory
  • Crea backup prima di apportare modifiche
  • Gestisci gli errori con grazia
  • Implementa controlli dei permessi
4

Elabora le risposte di Claude

Estrai e gestisci le chiamate di strumento dalle risposte di Claude:

# Elabora l'uso dello strumento nella risposta di Claude
for content in response.content:
    if content.type == "tool_use":
        # Esegui lo strumento basato sul comando
        result = handle_editor_tool(content)
        
        # Restituisci il risultato a Claude
        tool_result = {
            "type": "tool_result",
            "tool_use_id": content.id,
            "content": result
        }

Quando implementi lo strumento editor di testo, tieni presente:

  1. Sicurezza: Lo strumento ha accesso al tuo filesystem locale, quindi implementa misure di sicurezza appropriate.
  2. Backup: Crea sempre backup prima di permettere modifiche a file importanti.
  3. Validazione: Valida tutti gli input per prevenire modifiche non intenzionali.
  4. Corrispondenza unica: Assicurati che le sostituzioni corrispondano esattamente a una posizione per evitare modifiche non intenzionali.

Gestisci gli errori

Quando utilizzi lo strumento editor di testo, possono verificarsi vari errori. Ecco una guida su come gestirli:

Segui le migliori pratiche di implementazione


Prezzi e utilizzo dei token

The text editor tool uses the same pricing structure as other tools used with Claude. It follows the standard input and output token pricing based on the Claude model you’re using.

In addition to the base tokens, the following additional input tokens are needed for the text editor tool:

ToolAdditional input tokens
text_editor_20250429 (Claude 4)700 tokens
text_editor_20250124 (Claude Sonnet 3.7)700 tokens
text_editor_20241022 (Claude Sonnet 3.5)700 tokens

Per informazioni più dettagliate sui prezzi degli strumenti, vedi Prezzi dell’uso degli strumenti.

Integra lo strumento editor di testo con altri strumenti

Lo strumento editor di testo può essere utilizzato insieme ad altri strumenti Claude. Quando combini strumenti, assicurati di:

  • Abbinare la versione dello strumento con il modello che stai utilizzando
  • Tenere conto dell’utilizzo aggiuntivo di token per tutti gli strumenti inclusi nella tua richiesta

Registro delle modifiche

DataVersioneModifiche
29 aprile 2025text_editor_20250429Rilascio dello Strumento editor di testo per Claude 4. Questa versione rimuove il comando undo_edit ma mantiene tutte le altre capacità. Il nome dello strumento è stato aggiornato per riflettere la sua architettura basata su str_replace.
13 marzo 2025text_editor_20250124Introduzione della documentazione autonoma dello Strumento editor di testo. Questa versione è ottimizzata per Claude Sonnet 3.7 ma ha capacità identiche alla versione precedente.
22 ottobre 2024text_editor_20241022Rilascio iniziale dello Strumento editor di testo con Claude Sonnet 3.5. Fornisce capacità per visualizzare, creare e modificare file attraverso i comandi view, create, str_replace, insert e undo_edit.

Prossimi passi

Ecco alcune idee su come utilizzare lo strumento editor di testo in modi più convenienti e potenti:

  • Integra con il tuo flusso di lavoro di sviluppo: Costruisci lo strumento editor di testo nei tuoi strumenti di sviluppo o IDE
  • Crea un sistema di revisione del codice: Fai rivedere il tuo codice a Claude e apportare miglioramenti
  • Costruisci un assistente di debug: Crea un sistema dove Claude può aiutarti a diagnosticare e correggere problemi nel tuo codice
  • Implementa la conversione di formati di file: Lascia che Claude ti aiuti a convertire file da un formato all’altro
  • Automatizza la documentazione: Configura flussi di lavoro per Claude per documentare automaticamente il tuo codice

Mentre costruisci applicazioni con lo strumento editor di testo, siamo entusiasti di vedere come sfrutti le capacità di Claude per migliorare il tuo flusso di lavoro di sviluppo e la produttività.