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.
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.
La herramienta de editor de texto de Anthropic está disponible para múltiples modelos de Claude:
Claude Sonnet 4, Opus 4, y Opus 4.1: text_editor_20250728
Claude Sonnet 3.7: text_editor_20250124
Claude Sonnet 3.5 (obsoleto): text_editor_20241022
Claude Sonnet 3.5 (obsoleto) requiere el encabezado beta computer-use-2024-10-22 cuando se usa la herramienta de editor de texto.La herramienta de editor de texto está generalmente disponible en los modelos Claude 4 y Claude Sonnet 3.7.
La herramienta text_editor_20250728 para los modelos Claude 4 no incluye el comando undo_edit. Si requieres esta funcionalidad, necesitarás usar Claude Sonnet 3.7 o Sonnet 3.5 con sus respectivas versiones de herramientas.
Proporciona la herramienta de editor de texto (llamada str_replace_based_edit_tool) a Claude usando la API de Mensajes.Opcionalmente puedes especificar un parámetro max_characters para controlar el truncamiento al ver archivos grandes.
max_characters solo es compatible con text_editor_20250728 y versiones posteriores de la herramienta de editor de texto.
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
Si se especificó un parámetro max_characters en la configuración de la herramienta, trunca el contenido del archivo a esa longitud
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
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.
Ejemplos de comandos view
Copy
// Ejemplo para ver un archivo{ "type": "tool_use", "id": "toolu_01A09q90qw90lq917835lq9", "name": "str_replace_editor", "input": { "command": "view", "path": "primes.py" }}// Ejemplo para ver un directorio{ "type": "tool_use", "id": "toolu_02B19r91rw91mr917835mr9", "name": "str_replace_editor", "input": { "command": "view", "path": "src/" }}
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
Ejemplo de comando str_replace
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):" }}
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
Ejemplo de comando insert
Copy
{ "type": "tool_use", "id": "toolu_01A09q90qw90lq917835lq9", "name": "str_replace_editor", "input": { "command": "insert", "path": "primes.py", "insert_line": 0, "new_str": "\"\"\"Módulo para trabajar con números primos.\n\nEste módulo proporciona funciones para verificar si un número es primo\ny para generar una lista de números primos hasta un límite dado.\n\"\"\"\n" }}
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 (obsoleto). No es compatible con los modelos Claude 4 que usan el text_editor_20250728.
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 los modelos Claude 4 usan 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:
Claude usará la herramienta de editor de texto primero para ver el archivo:
Copy
{ "id": "msg_01XAbCDeFgHiJkLmNoPQrStU", "model": "claude-opus-4-1-20250805", "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:
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": "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íneaEn el ejemplo anterior, el resultado de la herramienta view incluye contenido del archivo con números de línea antepuestos a cada línea (por ejemplo, “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:
Copy
{ "id": "msg_01VwXyZAbCdEfGhIjKlMnO", "model": "claude-opus-4-1-20250805", "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:
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=[ # 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:
Copy
{ "id": "msg_01IjKlMnOpQrStUvWxYzAb", "model": "claude-opus-4-1-20250805", "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\nEsto es 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." } ]}
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á integrado 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_20250728"
Claude Sonnet 3.7: type: "text_editor_20250124"
Claude Sonnet 3.5 (obsoleto): 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 herramienta del editor
Crea una función que procese las llamadas de herramienta de Claude basándose en el tipo de comando:
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': # 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 es compatible 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 herramienta de las respuestas de Claude:
Copy
# Procesar uso de herramienta en la respuesta de Claudefor 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:
Seguridad: La herramienta tiene acceso a tu sistema de archivos local, así que implementa medidas de seguridad apropiadas.
Respaldo: Siempre crea respaldos antes de permitir ediciones a archivos importantes.
Validación: Valida todas las entradas para prevenir cambios no deseados.
Coincidencia única: Asegúrate de que los reemplazos coincidan exactamente con una ubicación para evitar ediciones no deseadas.
Si el comando str_replace de Claude coincide con múltiples ubicaciones en el archivo, devuelve un mensaje de error apropiado:
Copy
{ "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_01A09q90qw90lq917835lq9", "content": "Error: Se encontraron 3 coincidencias para el texto de reemplazo. Por favor proporciona más contexto para hacer una coincidencia única.", "is_error": true } ]}
Sin coincidencias para reemplazo
Si el comando str_replace de Claude no coincide con ningún texto en el archivo, devuelve un mensaje de error apropiado:
Copy
{ "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_01A09q90qw90lq917835lq9", "content": "Error: No se encontró coincidencia para el reemplazo. Por favor verifica tu texto e inténtalo de nuevo.", "is_error": true } ]}
Errores de permisos
Si hay problemas de permisos al crear, leer o modificar archivos, devuelve un mensaje de error apropiado:
Copy
{ "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_01A09q90qw90lq917835lq9", "content": "Error: Permiso denegado. No se puede escribir al archivo.", "is_error": true } ]}
Al pedir a Claude que corrija o modifique código, sé específico sobre qué archivos necesitan ser examinados o qué problemas necesitan ser abordados. Un contexto claro ayuda a Claude a identificar los archivos correctos y hacer cambios apropiados.Prompt menos útil: “¿Puedes corregir mi código?”Mejor prompt: “Hay un error de sintaxis en mi archivo primes.py que impide que se ejecute. ¿Puedes corregirlo?”
Ser explícito sobre rutas de archivos
Especifica rutas de archivos claramente cuando sea necesario, especialmente si estás trabajando con múltiples archivos o archivos en diferentes directorios.Prompt menos útil: “Revisa mi archivo auxiliar”Mejor prompt: “¿Puedes verificar mi archivo utils/helpers.py para cualquier problema de rendimiento?”
Crear respaldos antes de editar
Implementa un sistema de respaldo en tu aplicación que cree copias de archivos antes de permitir que Claude los edite, especialmente para código importante o de producción.
Copy
def backup_file(file_path): """Crear un respaldo de un archivo antes de editarlo.""" 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())
Manejar reemplazo de texto único cuidadosamente
El comando str_replace requiere una coincidencia exacta para el texto a ser reemplazado. Tu aplicación debería asegurar que hay exactamente una coincidencia para el texto antiguo o proporcionar mensajes de error apropiados.
Copy
def safe_replace(file_path, old_text, new_text): """Reemplazar texto solo si hay exactamente una coincidencia.""" with open(file_path, 'r') as f: content = f.read() count = content.count(old_text) if count == 0: return "Error: No se encontró coincidencia" elif count > 1: return f"Error: Se encontraron {count} coincidencias" else: new_content = content.replace(old_text, new_text) with open(file_path, 'w') as f: f.write(new_content) return "Texto reemplazado exitosamente"
Verificar cambios
Después de que Claude haga cambios a un archivo, verifica los cambios ejecutando pruebas o verificando que el código aún funcione como se espera.
Copy
def verify_changes(file_path): """Ejecutar pruebas o verificaciones después de hacer cambios.""" try: # Para archivos Python, verificar errores de sintaxis if file_path.endswith('.py'): import ast with open(file_path, 'r') as f: ast.parse(f.read()) return "Verificación de sintaxis pasada" except Exception as e: return f"Verificación falló: {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:
Lanzamiento de una herramienta de editor de texto actualizada que corrige algunos problemas y agrega un parámetro opcional max_characters. Por lo demás es idéntica a text_editor_20250429.
29 de abril, 2025
text_editor_20250429
Lanzamiento de la herramienta de editor de texto para Claude 4. Esta versión elimina el comando undo_edit pero mantiene todas las otras capacidades. El nombre de la herramienta ha sido actualizado para reflejar su arquitectura basada en str_replace.
13 de marzo, 2025
text_editor_20250124
Introducció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, 2024
text_editor_20241022
Lanzamiento inicial de la herramienta de editor de texto con Claude Sonnet 3.5 (obsoleto). Proporciona capacidades para ver, crear y editar archivos a través de los comandos view, create, str_replace, insert y undo_edit.
Aquí hay algunas ideas de cómo usar la herramienta de editor de texto de maneras más convenientes y poderosas:
Integrar con tu flujo de trabajo de desarrollo: Construye 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.