Позволяет Claude просматривать и изменять текстовые файлы, помогая отлаживать, исправлять и улучшать код или другие текстовые документы.
Claude может использовать определенный Anthropic инструмент текстового редактора для просмотра и изменения текстовых файлов, помогая вам отлаживать, исправлять и улучшать ваш код или другие текстовые документы. Это позволяет Claude напрямую взаимодействовать с вашими файлами, предоставляя практическую помощь, а не просто предлагая изменения.
Claude Sonnet 3.5 (устарел) требует заголовок бета-версии computer-use-2024-10-22 при использовании инструмента текстового редактора.Инструмент текстового редактора общедоступен в моделях Claude 4 и Claude Sonnet 3.7.
Инструмент text_editor_20250728 для моделей Claude 4 не включает команду undo_edit. Если вам требуется эта функциональность, вам нужно будет использовать Claude Sonnet 3.7 или Sonnet 3.5 с их соответствующими версиями инструментов.
Предоставьте инструмент текстового редактора (названный str_replace_based_edit_tool) Claude, используя Messages API.Вы можете дополнительно указать параметр max_characters для контроля усечения при просмотре больших файлов.
max_characters совместим только с text_editor_20250728 и более поздними версиями инструмента текстового редактора.
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?" } ] }'
Инструмент текстового редактора может использоваться следующим образом:
1
Предоставьте Claude инструмент текстового редактора и пользовательский запрос
Включите инструмент текстового редактора в ваш API-запрос
Предоставьте пользовательский запрос, который может потребовать изучения или изменения файлов, например “Можете ли вы исправить синтаксическую ошибку в моем коде?”
2
Claude использует инструмент для изучения файлов или каталогов
Claude оценивает, что ему нужно посмотреть, и использует команду view для изучения содержимого файлов или списка содержимого каталогов
Ответ API будет содержать блок содержимого tool_use с командой view
3
Выполните команду view и верните результаты
Извлеките путь к файлу или каталогу из запроса использования инструмента Claude
Прочитайте содержимое файла или перечислите содержимое каталога
Если параметр max_characters был указан в конфигурации инструмента, усеките содержимое файла до этой длины
Верните результаты Claude, продолжив разговор новым сообщением user, содержащим блок содержимого tool_result
4
Claude использует инструмент для изменения файлов
После изучения файла или каталога Claude может использовать команду, такую как str_replace, для внесения изменений или insert для добавления текста в определенном номере строки.
Если Claude использует команду str_replace, Claude создает правильно отформатированный запрос использования инструмента со старым текстом и новым текстом для замены
5
Выполните редактирование и верните результаты
Извлеките путь к файлу, старый текст и новый текст из запроса использования инструмента Claude
Выполните замену текста в файле
Верните результаты Claude
6
Claude предоставляет свой анализ и объяснение
После изучения и возможного редактирования файлов Claude предоставляет полное объяснение того, что он нашел и какие изменения внес
Команда view позволяет Claude изучать содержимое файла или перечислять содержимое каталога. Она может читать весь файл или определенный диапазон строк.Параметры:
command: Должно быть “view”
path: Путь к файлу или каталогу для просмотра
view_range (необязательно): Массив из двух целых чисел, указывающих номера начальной и конечной строк для просмотра. Номера строк индексируются с 1, и -1 для конечной строки означает чтение до конца файла. Этот параметр применяется только при просмотре файлов, а не каталогов.
Примеры команд view
Copy
// Пример для просмотра файла{ "type": "tool_use", "id": "toolu_01A09q90qw90lq917835lq9", "name": "str_replace_editor", "input": { "command": "view", "path": "primes.py" }}// Пример для просмотра каталога{ "type": "tool_use", "id": "toolu_02B19r91rw91mr917835mr9", "name": "str_replace_editor", "input": { "command": "view", "path": "src/" }}
Команда insert позволяет Claude вставить текст в определенном месте в файле.Параметры:
command: Должно быть “insert”
path: Путь к файлу для изменения
insert_line: Номер строки, после которой нужно вставить текст (0 для начала файла)
new_str: Текст для вставки
Пример команды insert
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" }}
Команда undo_edit позволяет Claude отменить последнее редактирование, сделанное в файле.
Эта команда доступна только в Claude Sonnet 3.7 и Claude Sonnet 3.5 (устарел). Она не поддерживается в моделях Claude 4, использующих text_editor_20250728.
Параметры:
command: Должно быть “undo_edit”
path: Путь к файлу, последнее редактирование которого должно быть отменено
аксической ошибки с помощью инструмента текстового редактора
Этот пример демонстрирует, как модели Claude 4 используют инструмент текстового редактора для исправления синтаксической ошибки в файле Python.Сначала ваше приложение предоставляет 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": "There'\''s a syntax error in my primes.py file. Can you help me fix it?" } ] }'
Claude сначала будет использовать инструмент текстового редактора для просмотра файла:
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" } } ]}
Ваше приложение должно затем прочитать файл и вернуть его содержимое 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": "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()" } ] } ] }'
Номера строкВ приведенном выше примере результат инструмента view включает содержимое файла с номерами строк, добавленными к каждой строке (например, “1: def is_prime(n):”). Номера строк не обязательны, но они необходимы для успешного использования параметра view_range для изучения определенных разделов файлов и параметра insert_line для добавления содержимого в точных местах.
Claude выявит синтаксическую ошибку и использует команду str_replace для ее исправления:
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):" } } ]}
Ваше приложение должно затем внести правку и вернуть результат:
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." } ] } ])
Наконец, Claude предоставит полное объяснение исправления:
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." } ]}
Инструмент текстового редактора реализован как инструмент без схемы. При использовании этого инструмента вам не нужно предоставлять входную схему, как с другими инструментами; схема встроена в модель Claude и не может быть изменена.Тип инструмента зависит от версии модели:
Claude 4: type: "text_editor_20250728"
Claude Sonnet 3.7: type: "text_editor_20250124"
Claude Sonnet 3.5 (устарел): type: "text_editor_20241022"
1
Инициализируйте вашу реализацию редактора
Создайте вспомогательные функции для обработки файловых операций, таких как чтение, запись и изменение файлов. Рассмотрите реализацию функциональности резервного копирования для восстановления после ошибок.
2
Обработайте вызовы инструмента редактора
Создайте функцию, которая обрабатывает вызовы инструментов от Claude на основе типа команды:
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
Реализуйте меры безопасности
Добавьте валидацию и проверки безопасности:
Валидируйте пути к файлам для предотвращения обхода каталогов
Создавайте резервные копии перед внесением изменений
Обрабатывайте ошибки корректно
Реализуйте проверки разрешений
4
Обработайте ответы Claude
Извлеките и обработайте вызовы инструментов из ответов Claude:
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 }
При реализации инструмента текстового редактора имейте в виду:
Безопасность: Инструмент имеет доступ к вашей локальной файловой системе, поэтому реализуйте надлежащие меры безопасности.
Резервное копирование: Всегда создавайте резервные копии перед разрешением правок важных файлов.
Валидация: Валидируйте все входные данные для предотвращения непреднамеренных изменений.
Уникальное соответствие: Убедитесь, что замены соответствуют точно одному месту, чтобы избежать непреднамеренных правок.
Если команда str_replace Claude соответствует нескольким местам в файле, верните соответствующее сообщение об ошибке:
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 } ]}
Нет совпадений для замены
Если команда str_replace Claude не соответствует никакому тексту в файле, верните соответствующее сообщение об ошибке:
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 } ]}
Ошибки разрешений
Если есть проблемы с разрешениями при создании, чтении или изменении файлов, верните соответствующее сообщение об ошибке:
Когда просите Claude исправить или изменить код, будьте конкретны в отношении того, какие файлы нужно изучить или какие проблемы нужно решить. Четкий контекст помогает Claude выявить правильные файлы и внести соответствующие изменения.Менее полезный запрос: “Можете ли вы исправить мой код?”Лучший запрос: “В моем файле primes.py есть синтаксическая ошибка, которая не позволяет ему запускаться. Можете ли вы исправить ее?”
Будьте явными в отношении путей к файлам
Четко указывайте пути к файлам при необходимости, особенно если вы работаете с несколькими файлами или файлами в разных каталогах.Менее полезный запрос: “Просмотрите мой вспомогательный файл”Лучший запрос: “Можете ли вы проверить мой файл utils/helpers.py на предмет проблем с производительностью?”
Создавайте резервные копии перед редактированием
Реализуйте систему резервного копирования в вашем приложении, которая создает копии файлов перед разрешением Claude редактировать их, особенно для важного или производственного кода.
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())
Осторожно обрабатывайте уникальную замену текста
Команда str_replace требует точного совпадения для текста, который нужно заменить. Ваше приложение должно обеспечить, что есть точно одно совпадение для старого текста, или предоставить соответствующие сообщения об ошибках.
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"
Проверяйте изменения
После того, как Claude внесет изменения в файл, проверьте изменения, запустив тесты или убедившись, что код все еще работает как ожидается.
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:
Выпуск обновленного инструмента текстового редактора, который исправляет некоторые проблемы и добавляет необязательный параметр max_characters. В остальном он идентичен text_editor_20250429.
29 апреля 2025
text_editor_20250429
Выпуск инструмента текстового редактора для Claude 4. Эта версия удаляет команду undo_edit, но сохраняет все остальные возможности. Имя инструмента было обновлено, чтобы отразить его архитектуру на основе str_replace.
13 марта 2025
text_editor_20250124
Введение автономной документации инструмента текстового редактора. Эта версия оптимизирована для Claude Sonnet 3.7, но имеет идентичные возможности с предыдущей версией.
22 октября 2024
text_editor_20241022
Первоначальный выпуск инструмента текстового редактора с Claude Sonnet 3.5 (устарел). Предоставляет возможности для просмотра, создания и редактирования файлов через команды view, create, str_replace, insert и undo_edit.
Вот несколько идей о том, как использовать инструмент текстового редактора более удобными и мощными способами:
Интегрируйте с вашим рабочим процессом разработки: Встройте инструмент текстового редактора в ваши инструменты разработки или IDE
Создайте систему обзора кода: Попросите Claude просмотреть ваш код и внести улучшения
Создайте помощника по отладке: Создайте систему, где Claude может помочь вам диагностировать и исправить проблемы в вашем коде
Реализуйте конвертацию форматов файлов: Позвольте Claude помочь вам конвертировать файлы из одного формата в другой
Автоматизируйте документацию: Настройте рабочие процессы для автоматического документирования вашего кода Claude
По мере создания приложений с инструментом текстового редактора мы с нетерпением ждем, как вы будете использовать возможности Claude для улучшения вашего рабочего процесса разработки и производительности.