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 Unterstützung zu bieten, anstatt nur Änderungen vorzuschlagen.

Vor der Verwendung des Text-Editor-Tools

Verwenden Sie ein kompatibles Modell

Das Text-Editor-Tool von Anthropic ist für mehrere Claude-Modelle verfügbar:

  • 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 erfordert 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 und Sonnet 3.7.

Das neuere text_editor_20250429 für Claude 4-Modelle enthält nicht den undo_edit-Befehl. Wenn Sie diese Funktionalität benötigen, müssen Sie Claude 3.7 oder Sonnet 3.5 mit ihren jeweiligen Tool-Versionen verwenden.

Bewerten Sie die Eignung Ihres Anwendungsfalls

Einige Beispiele für die Verwendung des Text-Editor-Tools sind:

  • Code-Debugging: Lassen Sie Claude Bugs in Ihrem Code identifizieren und beheben, von Syntaxfehlern bis hin zu Logikproblemen.
  • Code-Refactoring: Lassen Sie Claude Ihre Code-Struktur, Lesbarkeit und Leistung durch gezielte Bearbeitungen verbessern.
  • Dokumentationserstellung: Bitten Sie Claude, Docstrings, Kommentare oder README-Dateien zu Ihrer Codebasis hinzuzufügen.
  • Testerstellung: Lassen Sie Claude Unit-Tests für Ihren Code basierend auf seinem Verständnis der Implementierung erstellen.

Verwenden Sie das Text-Editor-Tool

Stellen Sie Claude das Text-Editor-Tool (namens str_replace_based_edit_tool) über die Messages API zur Verfügung:

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": "Es gibt einen Syntaxfehler in meiner primes.py-Datei. Können Sie mir helfen, ihn zu beheben?"
      }
    ]
  }'

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 Ergebnisse zurück

  • Extrahieren Sie den Datei- oder Verzeichnispfad aus Claudes Tool-Verwendungsanfrage
  • Lesen Sie den Inhalt der Datei oder listen Sie den Verzeichnisinhalt auf und geben Sie ihn an Claude zurück
  • 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-Verwendungsanfrage mit dem alten Text und dem neuen Text, durch den er ersetzt werden soll
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-Verwendungsanfrage
  • 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

Text-Editor-Tool-Befehle

Das Text-Editor-Tool unterstützt mehrere Befehle zum Anzeigen und Ändern von Dateien:

view

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.

str_replace

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

create

Der create-Befehl ermöglicht es Claude, eine neue Datei mit angegebenem Inhalt zu erstellen.

Parameter:

  • command: Muss “create” sein
  • path: Der Pfad, wo die neue Datei erstellt werden soll
  • file_text: Der Inhalt, der in die neue Datei geschrieben werden soll

insert

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 den Anfang der Datei)
  • new_str: Der einzufügende Text

undo_edit

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 verfügbar. Er wird in Claude 4-Modellen mit dem text_editor_20250429 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 das Text-Editor-Tool verwendet, 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:

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": "Es gibt einen Syntaxfehler in meiner primes.py-Datei. Können Sie mir helfen, ihn zu beheben?"
      }
    ]
  }'

Claude wird das Text-Editor-Tool zuerst verwenden, um die Datei anzuzeigen:

{
  "id": "msg_01XAbCDeFgHiJkLmNoPQrStU",
  "model": "claude-opus-4-20250514",
  "stop_reason": "tool_use",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Ich helfe Ihnen dabei, den Syntaxfehler in Ihrer primes.py-Datei zu beheben. Lassen Sie mich zuerst einen Blick auf die Datei werfen, um das Problem zu identifizieren."
    },
    {
      "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:

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": "Es gibt einen Syntaxfehler in meiner primes.py-Datei. Können Sie mir helfen, ihn zu beheben?"
      },
      {
            "role": "assistant",
            "content": [
                {
                    "type": "text",
                    "text": "Ich helfe Ihnen dabei, den Syntaxfehler in Ihrer primes.py-Datei zu beheben. Lassen Sie mich zuerst einen Blick auf die Datei werfen, um das Problem zu identifizieren."
                },
                {
                    "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()"
                }
            ]
        }
    ]
  }'

Zeilennummern

Im 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:

{
  "id": "msg_01VwXyZAbCdEfGhIjKlMnO",
  "model": "claude-opus-4-20250514",
  "stop_reason": "tool_use",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Ich habe den Syntaxfehler in Ihrer primes.py-Datei gefunden. In der `get_primes`-Funktion fehlt ein Doppelpunkt (:) am Ende der for-Schleifenzeile. Lassen Sie mich das für Sie beheben."
    },
    {
      "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:

response = client.messages.create(
    model="claude-opus-4-20250514",
    max_tokens=1024,
    tools=[
        {
            "type": "text_editor_20250429",
            "name": "str_replace_based_edit_tool"
        }
    ],
    messages=[
        # Vorherige Nachrichten...
        {
            "role": "assistant",
            "content": [
                {
                    "type": "text",
                    "text": "Ich habe den Syntaxfehler in Ihrer primes.py-Datei gefunden. In der `get_primes`-Funktion fehlt ein Doppelpunkt (:) am Ende der for-Schleifenzeile. Lassen Sie mich das für Sie beheben."
                },
                {
                    "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": "Text erfolgreich an genau einer Stelle ersetzt."
                }
            ]
        }
    ]
)

Schließlich wird Claude eine vollständige Erklärung der Behebung liefern:

{
  "id": "msg_01IjKlMnOpQrStUvWxYzAb",
  "model": "claude-opus-4-20250514",
  "stop_reason": "end_turn",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Ich habe den Syntaxfehler in Ihrer primes.py-Datei behoben. Das Problem war in der `get_primes`-Funktion in Zeile 19. Es fehlte ein Doppelpunkt (:) am Ende der for-Schleifenzeile.\n\nHier ist, was ich geändert habe:\n\nVon:\n```python\nfor num in range(2, limit + 1)\n```\n\nZu:\n```python\nfor num in range(2, limit + 1):\n```\n\nIn Python ist ein Doppelpunkt am Ende von Anweisungen erforderlich, die einen neuen Codeblock beginnen, wie for-Schleifen, if-Anweisungen, Funktionsdefinitionen usw. Ohne den Doppelpunkt löst Python einen Syntaxfehler aus, weil es nicht weiß, wo der Codeblock beginnt.\n\nIhr Code sollte jetzt korrekt ausgeführt werden. Die Funktion wird ordnungsgemäß eine Liste von Primzahlen bis zum angegebenen Limit generieren."
    }
  ]
}

Implementieren Sie das Text-Editor-Tool

Das Text-Editor-Tool wird als schemafreies Tool implementiert. Bei der Verwendung dieses Tools müssen Sie kein Eingabeschema bereitstellen wie bei anderen Tools; 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_20250429"
  • Claude Sonnet 3.7: type: "text_editor_20250124"
  • Claude Sonnet 3.5: 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 von 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:

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':
        # Dateiinhalte 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':
        # Prüfen, ob es ein Claude 4-Modell ist
        if 'str_replace_based_edit_tool' in model_version:
            return {"error": "undo_edit-Befehl wird in Claude 4 nicht unterstützt"}
        # Aus Backup für Claude 3.7/3.5 wiederherstellen
        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:

# Tool-Verwendung in Claudes Antwort verarbeiten
for content in response.content:
    if content.type == "tool_use":
        # Tool basierend auf Befehl ausführen
        result = handle_editor_tool(content)
        
        # Ergebnis an Claude zurückgeben
        tool_result = {
            "type": "tool_result",
            "tool_use_id": content.id,
            "content": result
        }

Bei der Implementierung des Text-Editor-Tools beachten Sie:

  1. Sicherheit: Das Tool hat Zugriff auf Ihr lokales Dateisystem, implementieren Sie daher angemessene Sicherheitsmaßnahmen.
  2. Backup: Erstellen Sie immer Backups, bevor Sie Bearbeitungen wichtiger Dateien zulassen.
  3. Validierung: Validieren Sie alle Eingaben, um unbeabsichtigte Änderungen zu verhindern.
  4. Eindeutige Übereinstimmung: Stellen Sie sicher, dass Ersetzungen genau einer Stelle entsprechen, um unbeabsichtigte Bearbeitungen zu vermeiden.

Behandeln Sie Fehler

Bei der Verwendung des Text-Editor-Tools können verschiedene Fehler auftreten. Hier ist eine Anleitung, wie Sie sie behandeln:

Befolgen Sie bewährte Implementierungspraktiken


Preise und Token-Verbrauch

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

Für detailliertere Informationen über Tool-Preise siehe Tool-Verwendungspreise.

Integrieren Sie das Text-Editor-Tool mit anderen Tools

Das Text-Editor-Tool kann zusammen mit anderen Claude-Tools verwendet werden. Beim Kombinieren von Tools stellen Sie sicher, dass Sie:

  • Die Tool-Version mit dem verwendeten Modell abgleichen
  • Den zusätzlichen Token-Verbrauch für alle in Ihrer Anfrage enthaltenen Tools berücksichtigen

Änderungsprotokoll

DatumVersionÄnderungen
29. April 2025text_editor_20250429Verö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 2025text_editor_20250124Einfü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 2024text_editor_20241022Erste Veröffentlichung des Text-Editor-Tools mit Claude Sonnet 3.5. Bietet Funktionen zum Anzeigen, Erstellen und Bearbeiten von Dateien durch die Befehle view, create, str_replace, insert und undo_edit.

Nächste Schritte

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 Fähigkeiten nutzen, um Ihren Entwicklungsworkflow und Ihre Produktivität zu verbessern.