Claude puede usar una herramienta de editor de texto definida por Anthropic para ver y modificar archivos de texto, ayudándote a depurar, corregir y mejorar tu código u otros documentos de texto. Esto permite a Claude interactuar directamente con tus archivos, proporcionando asistencia práctica en lugar de solo sugerir cambios.

Antes de usar la herramienta de editor de texto

Usa un modelo compatible

La herramienta de editor de texto de Anthropic está disponible para múltiples modelos de 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 requiere el encabezado beta computer-use-2024-10-22 al usar la herramienta de editor de texto.

La herramienta de editor de texto está generalmente disponible en Claude 4 y Sonnet 3.7.

El más nuevo text_editor_20250429 para modelos Claude 4 no incluye el comando undo_edit. Si requieres esta funcionalidad, necesitarás usar Claude 3.7 o Sonnet 3.5 con sus respectivas versiones de herramientas.

Evalúa si tu caso de uso es adecuado

Algunos ejemplos de cuándo usar la herramienta de editor de texto son:

  • Depuración de código: Haz que Claude identifique y corrija errores en tu código, desde errores de sintaxis hasta problemas de lógica.
  • Refactorización de código: Permite que Claude mejore la estructura, legibilidad y rendimiento de tu código a través de ediciones dirigidas.
  • Generación de documentación: Pide a Claude que agregue docstrings, comentarios o archivos README a tu base de código.
  • Creación de pruebas: Haz que Claude cree pruebas unitarias para tu código basándose en su comprensión de la implementación.

Usar la herramienta de editor de texto

Proporciona la herramienta de editor de texto (llamada str_replace_based_edit_tool) a Claude usando la API de 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": "Hay un error de sintaxis en mi archivo primes.py. ¿Puedes ayudarme a corregirlo?"
      }
    ]
  }'

La herramienta de editor de texto se puede usar de la siguiente manera:

1

Proporciona a Claude la herramienta de editor de texto y un prompt del usuario

  • Incluye la herramienta de editor de texto en tu solicitud de API
  • Proporciona un prompt del usuario que pueda requerir examinar o modificar archivos, como “¿Puedes corregir el error de sintaxis en mi código?”
2

Claude usa la herramienta para examinar archivos o directorios

  • Claude evalúa lo que necesita examinar y usa el comando view para examinar el contenido de archivos o listar el contenido de directorios
  • La respuesta de la API contendrá un bloque de contenido tool_use con el comando view
3

Ejecuta el comando view y devuelve los resultados

  • Extrae la ruta del archivo o directorio de la solicitud de uso de herramienta de Claude
  • Lee el contenido del archivo o lista el contenido del directorio y devuélvelos a Claude
  • Devuelve los resultados a Claude continuando la conversación con un nuevo mensaje user que contenga un bloque de contenido tool_result
4

Claude usa la herramienta para modificar archivos

  • Después de examinar el archivo o directorio, Claude puede usar un comando como str_replace para hacer cambios o insert para agregar texto en un número de línea específico.
  • Si Claude usa el comando str_replace, Claude construye una solicitud de uso de herramienta correctamente formateada con el texto antiguo y el nuevo texto para reemplazarlo
5

Ejecuta la edición y devuelve los resultados

  • Extrae la ruta del archivo, el texto antiguo y el nuevo texto de la solicitud de uso de herramienta de Claude
  • Realiza el reemplazo de texto en el archivo
  • Devuelve los resultados a Claude
6

Claude proporciona su análisis y explicación

  • Después de examinar y posiblemente editar los archivos, Claude proporciona una explicación completa de lo que encontró y qué cambios hizo

Comandos de la herramienta de editor de texto

La herramienta de editor de texto admite varios comandos para ver y modificar archivos:

view

El comando view permite a Claude examinar el contenido de un archivo o listar el contenido de un directorio. Puede leer todo el archivo o un rango específico de líneas.

Parámetros:

  • command: Debe ser “view”
  • path: La ruta al archivo o directorio a ver
  • view_range (opcional): Un array de dos enteros especificando los números de línea de inicio y fin a ver. Los números de línea están indexados en 1, y -1 para la línea final significa leer hasta el final del archivo. Este parámetro solo se aplica al ver archivos, no directorios.

str_replace

El comando str_replace permite a Claude reemplazar una cadena específica en un archivo con una nueva cadena. Esto se usa para hacer ediciones precisas.

Parámetros:

  • command: Debe ser “str_replace”
  • path: La ruta al archivo a modificar
  • old_str: El texto a reemplazar (debe coincidir exactamente, incluyendo espacios en blanco e indentación)
  • new_str: El nuevo texto a insertar en lugar del texto antiguo

create

El comando create permite a Claude crear un nuevo archivo con contenido especificado.

Parámetros:

  • command: Debe ser “create”
  • path: La ruta donde se debe crear el nuevo archivo
  • file_text: El contenido a escribir en el nuevo archivo

insert

El comando insert permite a Claude insertar texto en una ubicación específica en un archivo.

Parámetros:

  • command: Debe ser “insert”
  • path: La ruta al archivo a modificar
  • insert_line: El número de línea después del cual insertar el texto (0 para el inicio del archivo)
  • new_str: El texto a insertar

undo_edit

El comando undo_edit permite a Claude revertir la última edición hecha a un archivo.

Este comando solo está disponible en Claude Sonnet 3.7 y Claude Sonnet 3.5. No está soportado en modelos Claude 4 usando el text_editor_20250429.

Parámetros:

  • command: Debe ser “undo_edit”
  • path: La ruta al archivo cuya última edición debe deshacerse

Ejemplo: Corrigiendo un error de sintaxis con la herramienta de editor de texto

Este ejemplo demuestra cómo Claude 4 usa la herramienta de editor de texto para corregir un error de sintaxis en un archivo Python.

Primero, tu aplicación proporciona a Claude la herramienta de editor de texto y un prompt para corregir un error de sintaxis:

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": "Hay un error de sintaxis en mi archivo primes.py. ¿Puedes ayudarme a corregirlo?"
      }
    ]
  }'

Claude usará la herramienta de editor de texto primero para ver el archivo:

{
  "id": "msg_01XAbCDeFgHiJkLmNoPQrStU",
  "model": "claude-opus-4-20250514",
  "stop_reason": "tool_use",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Te ayudaré a corregir el error de sintaxis en tu archivo primes.py. Primero, déjame echar un vistazo al archivo para identificar el problema."
    },
    {
      "type": "tool_use",
      "id": "toolu_01AbCdEfGhIjKlMnOpQrStU",
      "name": "str_replace_based_edit_tool",
      "input": {
        "command": "view",
        "path": "primes.py"
      }
    }
  ]
}

Tu aplicación debería entonces leer el archivo y devolver su contenido 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": "Hay un error de sintaxis en mi archivo primes.py. ¿Puedes ayudarme a corregirlo?"
      },
      {
            "role": "assistant",
            "content": [
                {
                    "type": "text",
                    "text": "Te ayudaré a corregir el error de sintaxis en tu archivo primes.py. Primero, déjame echar un vistazo al archivo para identificar el 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:     \"\"\"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()"
                }
            ]
        }
    ]
  }'

Números de línea

En el ejemplo anterior, el resultado de la herramienta view incluye el contenido del archivo con números de línea antepuestos a cada línea (ej., “1: def is_prime(n):”). Los números de línea no son requeridos, pero son esenciales para usar exitosamente el parámetro view_range para examinar secciones específicas de archivos y el parámetro insert_line para agregar contenido en ubicaciones precisas.

Claude identificará el error de sintaxis y usará el comando str_replace para corregirlo:

{
  "id": "msg_01VwXyZAbCdEfGhIjKlMnO",
  "model": "claude-opus-4-20250514",
  "stop_reason": "tool_use",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Encontré el error de sintaxis en tu archivo primes.py. En la función `get_primes`, falta dos puntos (:) al final de la línea del bucle for. Déjame corregir eso por ti."
    },
    {
      "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):"
      }
    }
  ]
}

Tu aplicación debería entonces hacer la edición y devolver el resultado:

response = client.messages.create(
    model="claude-opus-4-20250514",
    max_tokens=1024,
    tools=[
        {
            "type": "text_editor_20250429",
            "name": "str_replace_based_edit_tool"
        }
    ],
    messages=[
        # Mensajes anteriores...
        {
            "role": "assistant",
            "content": [
                {
                    "type": "text",
                    "text": "Encontré el error de sintaxis en tu archivo primes.py. En la función `get_primes`, falta dos puntos (:) al final de la línea del bucle for. Déjame corregir eso por ti."
                },
                {
                    "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": "Texto reemplazado exitosamente en exactamente una ubicación."
                }
            ]
        }
    ]
)

Finalmente, Claude proporcionará una explicación completa de la corrección:

{
  "id": "msg_01IjKlMnOpQrStUvWxYzAb",
  "model": "claude-opus-4-20250514",
  "stop_reason": "end_turn",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "He corregido el error de sintaxis en tu archivo primes.py. El problema estaba en la función `get_primes` en la línea 19. Faltaban dos puntos (:) al final de la línea del bucle for.\n\nAquí está lo que cambié:\n\nDe:\n```python\nfor num in range(2, limit + 1)\n```\n\nA:\n```python\nfor num in range(2, limit + 1):\n```\n\nEn Python, se requieren dos puntos al final de declaraciones que inician un nuevo bloque de código, como bucles for, declaraciones if, definiciones de funciones, etc. Sin los dos puntos, Python genera un error de sintaxis porque no sabe dónde comienza el bloque de código.\n\nTu código ahora debería ejecutarse correctamente. La función generará apropiadamente una lista de números primos hasta el límite especificado."
    }
  ]
}

Implementar la herramienta de editor de texto

La herramienta de editor de texto se implementa como una herramienta sin esquema. Al usar esta herramienta, no necesitas proporcionar un esquema de entrada como con otras herramientas; el esquema está incorporado en el modelo de Claude y no se puede modificar.

El tipo de herramienta depende de la versión del modelo:

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

Inicializa tu implementación del editor

Crea funciones auxiliares para manejar operaciones de archivos como leer, escribir y modificar archivos. Considera implementar funcionalidad de respaldo para recuperarse de errores.

2

Maneja las llamadas de herramientas del editor

Crea una función que procese las llamadas de herramientas de Claude basándose en el tipo de 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':
        # Leer y devolver contenido del archivo
        pass
    elif command == 'str_replace':
        # Reemplazar texto en archivo
        pass
    elif command == 'create':
        # Crear nuevo archivo
        pass
    elif command == 'insert':
        # Insertar texto en ubicación
        pass
    elif command == 'undo_edit':
        # Verificar si es un modelo Claude 4
        if 'str_replace_based_edit_tool' in model_version:
            return {"error": "el comando undo_edit no está soportado en Claude 4"}
        # Restaurar desde respaldo para Claude 3.7/3.5
        pass
3

Implementa medidas de seguridad

Agrega validación y verificaciones de seguridad:

  • Valida rutas de archivos para prevenir traversal de directorios
  • Crea respaldos antes de hacer cambios
  • Maneja errores con gracia
  • Implementa verificaciones de permisos
4

Procesa las respuestas de Claude

Extrae y maneja las llamadas de herramientas de las respuestas de Claude:

# Procesar uso de herramienta en la respuesta de Claude
for content in response.content:
    if content.type == "tool_use":
        # Ejecutar la herramienta basándose en el comando
        result = handle_editor_tool(content)
        
        # Devolver resultado a Claude
        tool_result = {
            "type": "tool_result",
            "tool_use_id": content.id,
            "content": result
        }

Al implementar la herramienta de editor de texto, ten en cuenta:

  1. Seguridad: La herramienta tiene acceso a tu sistema de archivos local, así que implementa medidas de seguridad apropiadas.
  2. Respaldo: Siempre crea respaldos antes de permitir ediciones a archivos importantes.
  3. Validación: Valida todas las entradas para prevenir cambios no deseados.
  4. Coincidencia única: Asegúrate de que los reemplazos coincidan exactamente con una ubicación para evitar ediciones no deseadas.

Manejar errores

Al usar la herramienta de editor de texto, pueden ocurrir varios errores. Aquí hay orientación sobre cómo manejarlos:

Sigue las mejores prácticas de implementación


Precios y uso de tokens

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

Para información más detallada sobre precios de herramientas, consulta Precios de uso de herramientas.

Integrar la herramienta de editor de texto con otras herramientas

La herramienta de editor de texto se puede usar junto con otras herramientas de Claude. Al combinar herramientas, asegúrate de:

  • Hacer coincidir la versión de la herramienta con el modelo que estás usando
  • Considerar el uso adicional de tokens para todas las herramientas incluidas en tu solicitud

Registro de cambios

FechaVersiónCambios
29 de abril, 2025text_editor_20250429Lanzamiento de la Herramienta de editor de texto para Claude 4. Esta versión elimina el comando undo_edit pero mantiene todas las demás capacidades. El nombre de la herramienta ha sido actualizado para reflejar su arquitectura basada en str_replace.
13 de marzo, 2025text_editor_20250124Introducción de documentación independiente de la Herramienta de editor de texto. Esta versión está optimizada para Claude Sonnet 3.7 pero tiene capacidades idénticas a la versión anterior.
22 de octubre, 2024text_editor_20241022Lanzamiento inicial de la Herramienta de editor de texto con Claude Sonnet 3.5. Proporciona capacidades para ver, crear y editar archivos a través de los comandos view, create, str_replace, insert y undo_edit.

Próximos pasos

Aquí hay algunas ideas sobre cómo usar la herramienta de editor de texto de maneras más convenientes y poderosas:

  • Integrar con tu flujo de trabajo de desarrollo: Incorpora la herramienta de editor de texto en tus herramientas de desarrollo o IDE
  • Crear un sistema de revisión de código: Haz que Claude revise tu código y haga mejoras
  • Construir un asistente de depuración: Crea un sistema donde Claude pueda ayudarte a diagnosticar y corregir problemas en tu código
  • Implementar conversión de formato de archivos: Permite que Claude te ayude a convertir archivos de un formato a otro
  • Automatizar documentación: Configura flujos de trabajo para que Claude documente automáticamente tu código

Mientras construyes aplicaciones con la herramienta de editor de texto, estamos emocionados de ver cómo aprovechas las capacidades de Claude para mejorar tu flujo de trabajo de desarrollo y productividad.