Claude kann ein von Anthropic definiertes Text-Editor-Tool verwenden, um Textdateien anzuzeigen und zu ändern und Ihnen beim Debuggen, Beheben und Verbessern Ihres Codes oder anderer Textdokumente zu helfen.
Claude kann ein von Anthropic definiertes Text-Editor-Tool verwenden, um Textdateien anzuzeigen und zu ändern, was Ihnen beim Debuggen, Beheben und Verbessern Ihres Codes oder anderer Textdokumente hilft. Dies ermöglicht Claude, direkt mit Ihren Dateien zu interagieren und praktische Unterstützung zu bieten, anstatt nur Änderungen vorzuschlagen.
Das text_editor_20250728 Tool für Claude 4 Modelle enthält nicht den undo_edit Befehl. Wenn Sie diese Funktionalität benötigen, müssen Sie Claude Sonnet 3.7 (veraltet) verwenden.
Ältere Tool-Versionen sind nicht garantiert rückwärtskompatibel mit neueren Modellen. Verwenden Sie immer die Tool-Version, die Ihrer Modellversion entspricht.
Stellen Sie das Text-Editor-Tool (benannt str_replace_based_edit_tool) Claude über die Messages API zur Verfügung.Sie können optional einen max_characters Parameter angeben, um die Kürzung beim Anzeigen großer Dateien zu steuern.
max_characters ist nur mit text_editor_20250728 und späteren Versionen des Text-Editor-Tools kompatibel.
Copy
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-sonnet-4-5", "max_tokens": 1024, "tools": [ { "type": "text_editor_20250728", "name": "str_replace_based_edit_tool", "max_characters": 10000 } ], "messages": [ { "role": "user", "content": "There'\''s a syntax error in my primes.py file. Can you help me fix it?" } ] }'
Das Text-Editor-Tool kann auf folgende Weise verwendet werden:
1
Stellen Sie Claude das Text-Editor-Tool und eine Benutzereingabe zur Verfügung
Fügen Sie das Text-Editor-Tool in Ihre API-Anfrage ein
Geben Sie eine Benutzereingabe an, die möglicherweise das Untersuchen oder Ändern von Dateien erfordert, z. B. „Kannst du den Syntaxfehler in meinem Code beheben?”
2
Claude verwendet das Tool, um Dateien oder Verzeichnisse zu untersuchen
Claude bewertet, was es sich ansehen muss, und verwendet den view Befehl, um Dateiinhalte zu untersuchen oder Verzeichnisinhalte aufzulisten
Die API-Antwort enthält einen tool_use Inhaltsblock mit dem view Befehl
3
Führen Sie den view-Befehl aus und geben Sie Ergebnisse zurück
Extrahieren Sie den Datei- oder Verzeichnispfad aus Claudes Tool-Use-Anfrage
Lesen Sie den Dateiinhalt oder listen Sie die Verzeichnisinhalte auf
Wenn ein max_characters Parameter in der Tool-Konfiguration angegeben wurde, kürzen Sie den Dateiinhalt auf diese Länge
Geben Sie die Ergebnisse an Claude zurück, indem Sie das Gespräch mit einer neuen user Nachricht mit einem tool_result Inhaltsblock fortsetzen
4
Claude verwendet das Tool, um Dateien zu ändern
Nach dem Untersuchen der Datei oder des Verzeichnisses kann Claude einen Befehl wie str_replace verwenden, um Änderungen vorzunehmen, oder insert, um Text an einer bestimmten Zeilennummer hinzuzufügen.
Wenn Claude den str_replace Befehl verwendet, erstellt Claude eine ordnungsgemäß formatierte Tool-Use-Anfrage mit dem alten Text und dem neuen Text, um ihn zu ersetzen
5
Führen Sie die Bearbeitung aus und geben Sie Ergebnisse zurück
Extrahieren Sie den Dateipfad, den alten Text und den neuen Text aus Claudes Tool-Use-Anfrage
Führen Sie den Textersatz in der Datei durch
Geben Sie die Ergebnisse an Claude zurück
6
Claude bietet seine Analyse und Erklärung
Nach dem Untersuchen und möglicherweise Bearbeiten der Dateien bietet Claude eine vollständige Erklärung dessen, was es gefunden hat und welche Änderungen es vorgenommen hat
Der view Befehl ermöglicht Claude, den Inhalt einer Datei zu untersuchen oder den Inhalt eines Verzeichnisses aufzulisten. Er kann die gesamte Datei oder einen bestimmten Zeilenbereich lesen.Parameter:
command: Muss „view” sein
path: Der Pfad zur anzuzeigenden Datei oder zum Verzeichnis
view_range (optional): Ein Array von zwei Ganzzahlen, das die Start- und Endzeilennummern zum Anzeigen angibt. Zeilennummern sind 1-indiziert, und -1 für die Endzeilennummer bedeutet bis zum Ende der Datei lesen. Dieser Parameter gilt nur beim Anzeigen von Dateien, nicht von Verzeichnissen.
Beispiel-view-Befehle
Copy
// Beispiel zum Anzeigen einer Datei{ "type": "tool_use", "id": "toolu_01A09q90qw90lq917835lq9", "name": "str_replace_editor", "input": { "command": "view", "path": "primes.py" }}// Beispiel zum Anzeigen eines Verzeichnisses{ "type": "tool_use", "id": "toolu_02B19r91rw91mr917835mr9", "name": "str_replace_editor", "input": { "command": "view", "path": "src/" }}
Der str_replace Befehl ermöglicht Claude, einen bestimmten String in einer Datei durch einen neuen String zu ersetzen. Dies wird für präzise Bearbeitungen verwendet.Parameter:
command: Muss „str_replace” sein
path: Der Pfad zur zu ändernden Datei
old_str: Der zu ersetzende Text (muss genau übereinstimmen, einschließlich Leerzeichen und Einrückung)
new_str: Der neue Text, der anstelle des alten Textes eingefügt werden soll
Beispiel str_replace Befehl
Copy
{ "type": "tool_use", "id": "toolu_01A09q90qw90lq917835lq9", "name": "str_replace_editor", "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):" }}
Der insert Befehl ermöglicht Claude, Text an einer bestimmten Stelle in einer Datei einzufügen.Parameter:
command: Muss „insert” sein
path: Der Pfad zur zu ändernden Datei
insert_line: Die Zeilennummer, nach der der Text eingefügt werden soll (0 für Anfang der Datei)
new_str: Der einzufügende Text
Beispiel insert Befehl
Copy
{ "type": "tool_use", "id": "toolu_01A09q90qw90lq917835lq9", "name": "str_replace_editor", "input": { "command": "insert", "path": "primes.py", "insert_line": 0, "new_str": "\"\"\"Module for working with prime numbers.\n\nThis module provides functions to check if a number is prime\nand to generate a list of prime numbers up to a given limit.\n\"\"\"\n" }}
Beispiel: Beheben eines Syntaxfehlers mit dem Text-Editor-Tool
Dieses Beispiel zeigt, wie Claude 4 Modelle das Text-Editor-Tool verwenden, um einen Syntaxfehler in einer Python-Datei zu beheben.Zunächst stellt Ihre Anwendung Claude das Text-Editor-Tool und eine Eingabeaufforderung zur Behebung eines Syntaxfehlers zur Verfügung:
Copy
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-sonnet-4-5", "max_tokens": 1024, "tools": [ { "type": "text_editor_20250728", "name": "str_replace_based_edit_tool" } ], "messages": [ { "role": "user", "content": "There'\''s a syntax error in my primes.py file. Can you help me fix it?" } ] }'
Claude wird das Text-Editor-Tool zunächst verwenden, um die Datei anzuzeigen:
Copy
{ "id": "msg_01XAbCDeFgHiJkLmNoPQrStU", "model": "claude-sonnet-4-5", "stop_reason": "tool_use", "role": "assistant", "content": [ { "type": "text", "text": "I'll help you fix the syntax error in your primes.py file. First, let me take a look at the file to identify the issue." }, { "type": "tool_use", "id": "toolu_01AbCdEfGhIjKlMnOpQrStU", "name": "str_replace_based_edit_tool", "input": { "command": "view", "path": "primes.py" } } ]}
Ihre Anwendung sollte dann die Datei lesen und ihren Inhalt an Claude zurückgeben:
Copy
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-sonnet-4-5", "max_tokens": 1024, "tools": [ { "type": "text_editor_20250728", "name": "str_replace_based_edit_tool" } ], "messages": [ { "role": "user", "content": "There'\''s a syntax error in my primes.py file. Can you help me fix it?" }, { "role": "assistant", "content": [ { "type": "text", "text": "I'\''ll help you fix the syntax error in your primes.py file. First, let me take a look at the file to identify the issue." }, { "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: \"\"\"Check if a number is prime.\"\"\"\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: \"\"\"Generate a list of prime numbers up to the given limit.\"\"\"\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: \"\"\"Main function to demonstrate prime number generation.\"\"\"\n26: limit = 100\n27: prime_list = get_primes(limit)\n28: print(f\"Prime numbers up to {limit}:\")\n29: print(prime_list)\n30: print(f\"Found {len(prime_list)} prime numbers.\")\n31: \n32: if __name__ == \"__main__\":\n33: main()" } ] } ] }'
ZeilennummernIm obigen Beispiel enthält das view Tool-Ergebnis Dateiinhalte mit Zeilennummern, die jeder Zeile vorangestellt sind (z. B. „1: def is_prime(n):”). Zeilennummern sind nicht erforderlich, aber sie sind essentiell für die erfolgreiche Verwendung des view_range Parameters zum Untersuchen bestimmter Dateibereiche und des insert_line Parameters zum Hinzufügen von Inhalten an präzisen Stellen.
Claude wird den Syntaxfehler identifizieren und den str_replace Befehl verwenden, um ihn zu beheben:
Copy
{ "id": "msg_01VwXyZAbCdEfGhIjKlMnO", "model": "claude-sonnet-4-5", "stop_reason": "tool_use", "role": "assistant", "content": [ { "type": "text", "text": "I found the syntax error in your primes.py file. In the `get_primes` function, there is a missing colon (:) at the end of the for loop line. Let me fix that for you." }, { "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):" } } ]}
Ihre Anwendung sollte dann die Bearbeitung durchführen und das Ergebnis zurückgeben:
Copy
response = client.messages.create( model="claude-sonnet-4-5", max_tokens=1024, tools=[ { "type": "text_editor_20250728", "name": "str_replace_based_edit_tool" } ], messages=[ # Vorherige Nachrichten... { "role": "assistant", "content": [ { "type": "text", "text": "I found the syntax error in your primes.py file. In the `get_primes` function, there is a missing colon (:) at the end of the for loop line. Let me fix that for you." }, { "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": "Successfully replaced text at exactly one location." } ] } ])
Abschließend wird Claude eine vollständige Erklärung der Behebung bieten:
Copy
{ "id": "msg_01IjKlMnOpQrStUvWxYzAb", "model": "claude-sonnet-4-5", "stop_reason": "end_turn", "role": "assistant", "content": [ { "type": "text", "text": "I've fixed the syntax error in your primes.py file. The issue was in the `get_primes` function at line 19. There was a missing colon (:) at the end of the for loop line.\n\nHere's what I changed:\n\nFrom:\n```python\nfor num in range(2, limit + 1)\n```\n\nTo:\n```python\nfor num in range(2, limit + 1):\n```\n\nIn Python, a colon is required at the end of statements that start a new code block, such as for loops, if statements, function definitions, etc. Without the colon, Python raises a syntax error because it doesn't know where the code block begins.\n\nYour code should now run correctly. The function will properly generate a list of prime numbers up to the specified limit." } ]}
Das Text-Editor-Tool wird als schemafreies Tool implementiert. Bei der Verwendung dieses Tools müssen Sie kein Eingabeschema wie bei anderen Tools bereitstellen; das Schema ist in das Modell integriert und kann nicht geändert werden.Der Tool-Typ hängt von der Modellversion ab:
Claude 4: type: "text_editor_20250728"
Claude Sonnet 3.7: type: "text_editor_20250124"
1
Initialisieren Sie Ihre Editor-Implementierung
Erstellen Sie Hilfsfunktionen zur Verarbeitung von Dateivorgängen wie Lesen, Schreiben und Ändern von Dateien. Erwägen Sie die Implementierung von Sicherungsfunktionen, um sich von Fehlern zu erholen.
2
Verarbeiten Sie Editor-Tool-Aufrufe
Erstellen Sie eine Funktion, die Tool-Aufrufe von Claude basierend auf dem Befehlstyp verarbeitet:
Copy
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': # Dateiinhalt lesen und zurückgeben pass elif command == 'str_replace': # Text in Datei ersetzen pass elif command == 'create': # Neue Datei erstellen pass elif command == 'insert': # Text an Stelle einfügen pass elif command == 'undo_edit': # Überprüfen Sie, ob es ein Claude 4 Modell ist if 'str_replace_based_edit_tool' in model_version: return {"error": "undo_edit command is not supported in Claude 4"} # Aus Sicherung für Claude 3.7 wiederherstellen pass
3
Implementieren Sie Sicherheitsmaßnahmen
Fügen Sie Validierungs- und Sicherheitsprüfungen hinzu:
Validieren Sie Dateipfade, um Directory-Traversal zu verhindern
Erstellen Sie Sicherungen vor Änderungen
Behandeln Sie Fehler elegant
Implementieren Sie Berechtigungsprüfungen
4
Verarbeiten Sie Claudes Antworten
Extrahieren und verarbeiten Sie Tool-Aufrufe aus Claudes Antworten:
Copy
# Verarbeiten Sie Tool-Use in Claudes Antwortfor content in response.content: if content.type == "tool_use": # Führen Sie das Tool basierend auf dem Befehl aus result = handle_editor_tool(content) # Geben Sie das Ergebnis an Claude zurück tool_result = { "type": "tool_result", "tool_use_id": content.id, "content": result }
Bei der Implementierung des Text-Editor-Tools beachten Sie bitte:
Sicherheit: Das Tool hat Zugriff auf Ihr lokales Dateisystem, daher implementieren Sie bitte angemessene Sicherheitsmaßnahmen.
Sicherung: Erstellen Sie immer Sicherungen, bevor Sie Änderungen an wichtigen Dateien zulassen.
Validierung: Validieren Sie alle Eingaben, um unbeabsichtigte Änderungen zu verhindern.
Eindeutige Übereinstimmung: Stellen Sie sicher, dass Ersetzungen genau an einer Stelle übereinstimmen, um unbeabsichtigte Bearbeitungen zu vermeiden.
Wenn Claudes str_replace Befehl mehrere Stellen in der Datei übereinstimmt, geben Sie eine entsprechende Fehlermeldung zurück:
Copy
{ "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_01A09q90qw90lq917835lq9", "content": "Error: Found 3 matches for replacement text. Please provide more context to make a unique match.", "is_error": true } ]}
Keine Übereinstimmungen für Ersetzung
Wenn Claudes str_replace Befehl keinen Text in der Datei übereinstimmt, geben Sie eine entsprechende Fehlermeldung zurück:
Copy
{ "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_01A09q90qw90lq917835lq9", "content": "Error: No match found for replacement. Please check your text and try again.", "is_error": true } ]}
Berechtigungsfehler
Wenn es Berechtigungsprobleme beim Erstellen, Lesen oder Ändern von Dateien gibt, geben Sie eine entsprechende Fehlermeldung zurück:
Befolgen Sie Best Practices für die Implementierung
Bieten Sie klaren Kontext
Wenn Sie Claude bitten, Code zu beheben oder zu ändern, seien Sie spezifisch darüber, welche Dateien untersucht werden müssen oder welche Probleme behoben werden müssen. Ein klarer Kontext hilft Claude, die richtigen Dateien zu identifizieren und angemessene Änderungen vorzunehmen.Weniger hilfreiche Eingabeaufforderung: „Kannst du meinen Code beheben?”Bessere Eingabeaufforderung: „Es gibt einen Syntaxfehler in meiner primes.py Datei, der verhindert, dass sie ausgeführt wird. Kannst du ihn beheben?”
Seien Sie explizit bei Dateipfaden
Geben Sie Dateipfade klar an, wenn nötig, besonders wenn Sie mit mehreren Dateien oder Dateien in verschiedenen Verzeichnissen arbeiten.Weniger hilfreiche Eingabeaufforderung: „Überprüfe meine Hilfsdatei”Bessere Eingabeaufforderung: „Kannst du meine utils/helpers.py Datei auf Leistungsprobleme überprüfen?”
Erstellen Sie Sicherungen vor der Bearbeitung
Implementieren Sie ein Sicherungssystem in Ihrer Anwendung, das Kopien von Dateien erstellt, bevor Claude sie bearbeitet, besonders für wichtige oder Produktionscode.
Copy
def backup_file(file_path): """Erstellen Sie eine Sicherung einer Datei vor der Bearbeitung.""" backup_path = f"{file_path}.backup" if os.path.exists(file_path): with open(file_path, 'r') as src, open(backup_path, 'w') as dst: dst.write(src.read())
Behandeln Sie eindeutige Textersetzung sorgfältig
Der str_replace Befehl erfordert eine genaue Übereinstimmung für den zu ersetzenden Text. Ihre Anwendung sollte sicherstellen, dass es genau eine Übereinstimmung für den alten Text gibt oder entsprechende Fehlermeldungen bereitstellen.
Copy
def safe_replace(file_path, old_text, new_text): """Ersetzen Sie Text nur, wenn es genau eine Übereinstimmung gibt.""" with open(file_path, 'r') as f: content = f.read() count = content.count(old_text) if count == 0: return "Error: No match found" elif count > 1: return f"Error: Found {count} matches" else: new_content = content.replace(old_text, new_text) with open(file_path, 'w') as f: f.write(new_content) return "Successfully replaced text"
Überprüfen Sie Änderungen
Nach Claude macht Änderungen an einer Datei, überprüfen Sie die Änderungen durch Ausführen von Tests oder Überprüfung, dass der Code noch wie erwartet funktioniert.
Copy
def verify_changes(file_path): """Führen Sie Tests oder Überprüfungen nach Änderungen durch.""" try: # Überprüfen Sie für Python-Dateien auf Syntaxfehler if file_path.endswith('.py'): import ast with open(file_path, 'r') as f: ast.parse(f.read()) return "Syntax check passed" except Exception as e: return f"Verification failed: {str(e)}"
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:
Veröffentlichung eines aktualisierten Text-Editor-Tools, das einige Probleme behebt und einen optionalen max_characters Parameter hinzufügt. Es ist ansonsten identisch mit text_editor_20250429.
29. April 2025
text_editor_20250429
Veröffentlichung des Text-Editor-Tools für Claude 4. Diese Version entfernt den undo_edit Befehl, behält aber alle anderen Funktionen. Der Tool-Name wurde aktualisiert, um seine str_replace-basierte Architektur widerzuspiegeln.
13. März 2025
text_editor_20250124
Einführung der eigenständigen Text-Editor-Tool-Dokumentation. Diese Version ist für Claude Sonnet 3.7 optimiert, hat aber identische Funktionen wie die vorherige Version.
22. Oktober 2024
text_editor_20241022
Erste Veröffentlichung des Text-Editor-Tools mit Claude Sonnet 3.5 (eingestellt). Bietet Funktionen zum Anzeigen, Erstellen und Bearbeiten von Dateien über die view, create, str_replace, insert und undo_edit Befehle.
Hier sind einige Ideen, wie Sie das Text-Editor-Tool auf bequemere und leistungsfähigere Weise verwenden können:
Integrieren Sie mit Ihrem Entwicklungs-Workflow: Integrieren Sie das Text-Editor-Tool in Ihre Entwicklungstools oder IDE
Erstellen Sie ein Code-Review-System: Lassen Sie Claude Ihren Code überprüfen und verbessern
Erstellen Sie einen Debugging-Assistenten: Erstellen Sie ein System, in dem Claude Ihnen bei der Diagnose und Behebung von Problemen in Ihrem Code helfen kann
Implementieren Sie Dateiformat-Konvertierung: Lassen Sie Claude Ihnen bei der Konvertierung von Dateien von einem Format zu einem anderen helfen
Automatisieren Sie Dokumentation: Richten Sie Workflows ein, damit Claude Ihren Code automatisch dokumentiert
Während Sie Anwendungen mit dem Text-Editor-Tool erstellen, freuen wir uns darauf zu sehen, wie Sie Claudes Funktionen nutzen, um Ihren Entwicklungs-Workflow und Ihre Produktivität zu verbessern.