Claude kann ein von Anthropic definiertes Text-Editor-Tool verwenden, um Textdateien anzuzeigen und zu bearbeiten, und Ihnen dabei helfen, Ihren Code oder andere Textdokumente zu debuggen, zu reparieren und zu verbessern.
Claude kann ein von Anthropic definiertes Text-Editor-Tool verwenden, um Textdateien anzuzeigen und zu bearbeiten, und Ihnen dabei helfen, Ihren Code oder andere Textdokumente zu debuggen, zu reparieren und zu verbessern. Dies ermöglicht es Claude, direkt mit Ihren Dateien zu interagieren und praktische Hilfe zu leisten, anstatt nur Änderungen vorzuschlagen.
Das Text-Editor-Tool von Anthropic ist für mehrere Claude-Modelle verfügbar:
Claude Sonnet 4, Opus 4 und Opus 4.1: text_editor_20250728
Claude Sonnet 3.7: text_editor_20250124
Claude Sonnet 3.5 (veraltet): text_editor_20241022
Claude Sonnet 3.5 (veraltet) benötigt den computer-use-2024-10-22 Beta-Header bei der Verwendung des Text-Editor-Tools.Das Text-Editor-Tool ist allgemein verfügbar in Claude 4-Modellen und Claude Sonnet 3.7.
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 oder Sonnet 3.5 mit ihren jeweiligen Tool-Versionen verwenden.
Stellen Sie Claude das Text-Editor-Tool (namens str_replace_based_edit_tool) ü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-opus-4-1-20250805", "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 folgendermaßen verwendet werden:
1
Stellen Sie Claude das Text-Editor-Tool und eine Benutzeraufforderung zur Verfügung
Fügen Sie das Text-Editor-Tool in Ihre API-Anfrage ein
Geben Sie eine Benutzeraufforderung an, die möglicherweise das Untersuchen oder Ändern von Dateien erfordert, wie z.B. “Können Sie den Syntaxfehler in meinem Code beheben?”
2
Claude verwendet das Tool, um Dateien oder Verzeichnisse zu untersuchen
Claude bewertet, was es betrachten 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 die Ergebnisse zurück
Extrahieren Sie den Datei- oder Verzeichnispfad aus Claudes Tool-Use-Anfrage
Lesen Sie den Inhalt der Datei oder listen Sie den Inhalt des Verzeichnisses 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 die Unterhaltung mit einer neuen user-Nachricht fortsetzen, die einen tool_result-Inhaltsblock enthält
4
Claude verwendet das Tool, um Dateien zu ändern
Nach der Untersuchung 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, durch den er ersetzt werden soll
5
Führen Sie die Bearbeitung aus und geben Sie die Ergebnisse zurück
Extrahieren Sie den Dateipfad, den alten Text und den neuen Text aus Claudes Tool-Use-Anfrage
Führen Sie die Textersetzung in der Datei durch
Geben Sie die Ergebnisse an Claude zurück
6
Claude liefert seine Analyse und Erklärung
Nach der Untersuchung und möglicherweise Bearbeitung der Dateien liefert Claude eine vollständige Erklärung dessen, was es gefunden hat und welche Änderungen es vorgenommen hat
Der view-Befehl ermöglicht es 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 Datei oder zum Verzeichnis, das angezeigt werden soll
view_range (optional): Ein Array aus zwei Ganzzahlen, das die Start- und Endzeilennummern zum Anzeigen angibt. Zeilennummern sind 1-indiziert, und -1 für die Endzeile bedeutet bis zum Ende der Datei lesen. Dieser Parameter gilt nur beim Anzeigen von Dateien, nicht von Verzeichnissen.
Beispiel view-Befehle
Copy
// Beispiel für das Anzeigen einer Datei{ "type": "tool_use", "id": "toolu_01A09q90qw90lq917835lq9", "name": "str_replace_editor", "input": { "command": "view", "path": "primes.py" }}// Beispiel für das Anzeigen eines Verzeichnisses{ "type": "tool_use", "id": "toolu_02B19r91rw91mr917835mr9", "name": "str_replace_editor", "input": { "command": "view", "path": "src/" }}
Der str_replace-Befehl ermöglicht es Claude, eine bestimmte Zeichenkette in einer Datei durch eine neue Zeichenkette 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 exakt ü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 es 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 Dateianfang)
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" }}
Der undo_edit-Befehl ermöglicht es Claude, die letzte an einer Datei vorgenommene Bearbeitung rückgängig zu machen.
Dieser Befehl ist nur in Claude Sonnet 3.7 und Claude Sonnet 3.5 (veraltet) verfügbar. Er wird in Claude 4-Modellen mit dem text_editor_20250728 nicht unterstützt.
Parameter:
command: Muss “undo_edit” sein
path: Der Pfad zur Datei, deren letzte Bearbeitung rückgängig gemacht werden soll
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.Zuerst stellt Ihre Anwendung Claude das Text-Editor-Tool und eine Aufforderung 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-opus-4-1-20250805", "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 zuerst verwenden, um die Datei anzuzeigen:
Copy
{ "id": "msg_01XAbCDeFgHiJkLmNoPQrStU", "model": "claude-opus-4-1-20250805", "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-opus-4-1-20250805", "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 wesentlich für die erfolgreiche Verwendung des view_range-Parameters zur Untersuchung 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-opus-4-1-20250805", "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 vornehmen und das Ergebnis zurückgeben:
Copy
response = client.messages.create( model="claude-opus-4-1-20250805", max_tokens=1024, tools=[ { "type": "text_editor_20250728", "name": "str_replace_based_edit_tool" } ], messages=[ # Previous messages... { "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." } ] } ])
Schließlich wird Claude eine vollständige Erklärung der Behebung liefern:
Copy
{ "id": "msg_01IjKlMnOpQrStUvWxYzAb", "model": "claude-opus-4-1-20250805", "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 schema-loses Tool implementiert. Bei der Verwendung dieses Tools müssen Sie kein Eingabeschema wie bei anderen Tools bereitstellen; das Schema ist in Claudes Modell eingebaut 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"
Claude Sonnet 3.5 (veraltet): type: "text_editor_20241022"
1
Initialisieren Sie Ihre Editor-Implementierung
Erstellen Sie Hilfsfunktionen zur Behandlung von Dateioperationen wie Lesen, Schreiben und Ändern von Dateien. Erwägen Sie die Implementierung einer Backup-Funktionalität zur Wiederherstellung nach Fehlern.
2
Behandeln 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': # Read and return file contents pass elif command == 'str_replace': # Replace text in file pass elif command == 'create': # Create new file pass elif command == 'insert': # Insert text at location pass elif command == 'undo_edit': # Check if it's a Claude 4 model if 'str_replace_based_edit_tool' in model_version: return {"error": "undo_edit command is not supported in Claude 4"} # Restore from backup for Claude 3.7/3.5 pass
3
Implementieren Sie Sicherheitsmaßnahmen
Fügen Sie Validierung und Sicherheitsprüfungen hinzu:
Validieren Sie Dateipfade, um Directory Traversal zu verhindern
Erstellen Sie Backups vor Änderungen
Behandeln Sie Fehler elegant
Implementieren Sie Berechtigungsprüfungen
4
Verarbeiten Sie Claudes Antworten
Extrahieren und behandeln Sie Tool-Aufrufe aus Claudes Antworten:
Copy
# Process tool use in Claude's responsefor content in response.content: if content.type == "tool_use": # Execute the tool based on command result = handle_editor_tool(content) # Return result to Claude tool_result = { "type": "tool_result", "tool_use_id": content.id, "content": result }
Bei der Implementierung des Text-Editor-Tools beachten Sie:
Sicherheit: Das Tool hat Zugriff auf Ihr lokales Dateisystem, implementieren Sie daher angemessene Sicherheitsmaßnahmen.
Backup: Erstellen Sie immer Backups, bevor Sie Bearbeitungen wichtiger 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 trifft, 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 trifft, 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:
Wenn Sie Claude bitten, Code zu reparieren oder zu ändern, seien Sie spezifisch darüber, welche Dateien untersucht werden müssen oder welche Probleme behoben werden müssen. Klarer Kontext hilft Claude, die richtigen Dateien zu identifizieren und angemessene Änderungen vorzunehmen.Weniger hilfreiche Aufforderung: “Können Sie meinen Code reparieren?”Bessere Aufforderung: “Es gibt einen Syntaxfehler in meiner primes.py-Datei, der verhindert, dass sie läuft. Können Sie ihn beheben?”
Seien Sie explizit über Dateipfade
Geben Sie Dateipfade klar an, wenn nötig, besonders wenn Sie mit mehreren Dateien oder Dateien in verschiedenen Verzeichnissen arbeiten.Weniger hilfreiche Aufforderung: “Überprüfen Sie meine Hilfsdatei”Bessere Aufforderung: “Können Sie meine utils/helpers.py-Datei auf Leistungsprobleme überprüfen?”
Erstellen Sie Backups vor der Bearbeitung
Implementieren Sie ein Backup-System in Ihrer Anwendung, das Kopien von Dateien erstellt, bevor Claude sie bearbeiten darf, besonders für wichtigen oder Produktionscode.
Copy
def backup_file(file_path): """Create a backup of a file before editing.""" 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 exakte Ü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): """Replace text only if there's exactly one match.""" 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
Nachdem Claude Änderungen an einer Datei vorgenommen hat, überprüfen Sie die Änderungen, indem Sie Tests ausführen oder prüfen, dass der Code noch wie erwartet funktioniert.
Copy
def verify_changes(file_path): """Run tests or checks after making changes.""" try: # For Python files, check for syntax errors 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 bei. Der Tool-Name wurde aktualisiert, um seine str_replace-basierte Architektur zu reflektieren.
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 (veraltet). Bietet Funktionen zum Anzeigen, Erstellen und Bearbeiten von Dateien durch die Befehle view, create, str_replace, insert und undo_edit.
Hier sind einige Ideen, wie Sie das Text-Editor-Tool auf bequemere und leistungsfähigere Weise verwenden können:
In Ihren Entwicklungsworkflow integrieren: Bauen Sie das Text-Editor-Tool in Ihre Entwicklungstools oder IDE ein
Ein Code-Review-System erstellen: Lassen Sie Claude Ihren Code überprüfen und Verbesserungen vornehmen
Einen Debugging-Assistenten bauen: Erstellen Sie ein System, bei dem Claude Ihnen helfen kann, Probleme in Ihrem Code zu diagnostizieren und zu beheben
Dateiformatkonvertierung implementieren: Lassen Sie Claude Ihnen helfen, Dateien von einem Format in ein anderes zu konvertieren
Dokumentation automatisieren: Richten Sie Workflows ein, damit Claude automatisch Ihren Code dokumentiert
Während Sie Anwendungen mit dem Text-Editor-Tool erstellen, sind wir gespannt darauf zu sehen, wie Sie Claudes Funktionen nutzen, um Ihren Entwicklungsworkflow und Ihre Produktivität zu verbessern.