Инструмент текстового редактора
Предоставьте Claude определённый Anthropic инструмент текстового редактора для просмотра, создания и редактирования файлов, а также обрабатывайте его команды view, str_replace, create и insert.
Claude может использовать инструмент текстового редактора со схемой Anthropic для просмотра и изменения текстовых файлов, помогая вам отлаживать, исправлять и улучшать ваш код или другие текстовые документы. Это позволяет Claude напрямую взаимодействовать с вашими файлами, оказывая практическую помощь, а не просто предлагая изменения.
Информацию о поддержке моделей см. в Справочнике по инструментам.
Когда использовать инструмент текстового редактора
Некоторые примеры того, когда стоит использовать инструмент текстового редактора:
- Отладка кода: поручите Claude находить и исправлять ошибки в вашем коде — от синтаксических ошибок до логических проблем.
- Рефакторинг кода: позвольте Claude улучшить структуру, читаемость и производительность вашего кода с помощью точечных правок.
- Генерация документации: попросите Claude добавить строки документации, комментарии или файлы README в вашу кодовую базу.
- Создание тестов: поручите Claude создать модульные тесты для вашего кода на основе анализа реализации.
Использование инструмента текстового редактора
Предоставьте Claude инструмент текстового редактора (с именем str_replace_based_edit_tool) с помощью Messages API.
При желании вы можете указать параметр max_characters, чтобы управлять усечением при просмотре больших файлов.
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
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?",
}
],
)
print(response)Используйте инструмент текстового редактора следующим образом:
Предоставьте Claude инструмент текстового редактора и пользовательскую подсказку
- Включите инструмент текстового редактора в ваш запрос к API
- Предоставьте пользовательскую подсказку, которая может потребовать изучения или изменения файлов, например «Можешь исправить синтаксическую ошибку в моём коде?»
Claude использует инструмент для изучения файлов или каталогов
- Claude оценивает, что ему нужно посмотреть, и использует команду
viewдля изучения содержимого файла или вывода списка содержимого каталога - Ответ API будет содержать блок содержимого
tool_useс командойview
- Claude оценивает, что ему нужно посмотреть, и использует команду
Выполните команду view и верните результаты
- Извлеките путь к файлу или каталогу из запроса Claude на использование инструментов
- Прочитайте содержимое файла или получите список содержимого каталога
- Если в конфигурации инструмента был указан параметр
max_characters, усеките содержимое файла до этой длины - Верните результаты Claude, продолжив разговор новым сообщением
user, содержащим блок содержимогоtool_result
Claude использует инструмент для изменения файлов
- После изучения файла или каталога Claude может использовать команду, например
str_replace, для внесения изменений илиinsertдля добавления текста на определённой строке. - Если Claude использует команду
str_replace, он формирует правильно оформленный запрос на использование инструментов со старым текстом и новым текстом, на который его нужно заменить
- После изучения файла или каталога Claude может использовать команду, например
Выполните правку и верните результаты
- Извлеките путь к файлу, старый текст и новый текст из запроса Claude на использование инструментов
- Выполните замену текста в файле
- Верните результаты Claude
Claude предоставляет свой анализ и объяснение
- После изучения и, возможно, редактирования файлов Claude предоставляет полное объяснение того, что он обнаружил и какие изменения внёс
Команды инструмента текстового редактора
Инструмент текстового редактора поддерживает несколько команд для просмотра и изменения файлов:
view
Команда view позволяет Claude изучить содержимое файла или вывести список содержимого каталога. Она может прочитать весь файл или определённый диапазон строк.
Параметры:
command: должно быть "view"path: путь к файлу или каталогу для просмотраview_range(необязательно): массив из двух целых чисел, задающих номера начальной и конечной строк для просмотра. Нумерация строк начинается с 1, а значение -1 для конечной строки означает чтение до конца файла. Этот параметр применяется только при просмотре файлов, а не каталогов.
Пример просмотра файла:
{
"type": "tool_use",
"id": "toolu_01A09q90qw90lq917835lq9",
"name": "str_replace_based_edit_tool",
"input": {
"command": "view",
"path": "primes.py"
}
}Пример просмотра каталога:
{
"type": "tool_use",
"id": "toolu_02B19r91rw91mr917835mr9",
"name": "str_replace_based_edit_tool",
"input": {
"command": "view",
"path": "src/"
}
}str_replace
Команда str_replace позволяет Claude заменить определённую строку в файле новой строкой. Она используется для внесения точных правок.
Параметры:
command: должно быть "str_replace"path: путь к изменяемому файлуold_str: заменяемый текст (должен совпадать точно, включая пробелы и отступы)new_str: новый текст, вставляемый вместо старого
{
"type": "tool_use",
"id": "toolu_01A09q90qw90lq917835lq9",
"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):"
}
}create
Команда create позволяет Claude создать новый файл с указанным содержимым.
Параметры:
command: должно быть "create"path: путь, по которому должен быть создан новый файлfile_text: содержимое для записи в новый файл
{
"type": "tool_use",
"id": "toolu_01A09q90qw90lq917835lq9",
"name": "str_replace_based_edit_tool",
"input": {
"command": "create",
"path": "test_primes.py",
"file_text": "import unittest\nimport primes\n\nclass TestPrimes(unittest.TestCase):\n def test_is_prime(self):\n self.assertTrue(primes.is_prime(2))\n self.assertTrue(primes.is_prime(3))\n self.assertFalse(primes.is_prime(4))\n\nif __name__ == '__main__':\n unittest.main()"
}
}insert
Команда insert позволяет Claude вставить текст в определённое место файла.
Параметры:
command: должно быть "insert"path: путь к изменяемому файлуinsert_line: номер строки, после которой нужно вставить текст (0 — начало файла)insert_text: вставляемый текст
{
"type": "tool_use",
"id": "toolu_01A09q90qw90lq917835lq9",
"name": "str_replace_based_edit_tool",
"input": {
"command": "insert",
"path": "primes.py",
"insert_line": 0,
"insert_text": "\"\"\"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"
}
}Пример: исправление синтаксической ошибки с помощью инструмента текстового редактора
Этот пример демонстрирует, как Claude использует инструмент текстового редактора для исправления синтаксической ошибки в файле Python.
Сначала ваше приложение предоставляет Claude инструмент текстового редактора и подсказку с просьбой исправить синтаксическую ошибку:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
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?",
}
],
)
print(response)Сначала Claude использует инструмент текстового редактора для просмотра файла:
{
"id": "msg_01XAbCDeFgHiJkLmNoPQrStU",
"model": "claude-opus-5-5",
"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:
response = client.messages.create(
model="claude-opus-5-5",
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()',
}
],
},
],
)
print(response)Claude находит синтаксическую ошибку и использует команду str_replace для её исправления:
{
"id": "msg_01VwXyZAbCdEfGhIjKlMnO",
"model": "claude-opus-5-5",
"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):"
}
}
]
}Затем ваше приложение должно внести правку и вернуть результат:
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
tools=[{"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"}],
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.",
}
],
},
],
)
print(response)Наконец, Claude предоставляет полное объяснение исправления:
{
"id": "msg_01IjKlMnOpQrStUvWxYzAb",
"model": "claude-opus-5-5",
"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 и не может быть изменена.
Тип инструмента — type: "text_editor_20250728" для моделей Claude 4 и более поздних.
Инициализируйте вашу реализацию редактора
Создайте вспомогательные функции для выполнения файловых операций, таких как чтение, запись и изменение файлов. Рассмотрите возможность реализации функции резервного копирования для восстановления после ошибок.
Обрабатывайте вызовы инструмента редактора
Создайте функцию, которая обрабатывает вызовы инструмента от Claude в зависимости от типа команды:
def handle_editor_tool(tool_call): input_params = tool_call.input command = input_params.get("command", "") file_path = input_params.get("path", "") match command: case "view": # Прочитать и вернуть содержимое файла pass case "str_replace": # Заменить текст в файле pass case "create": # Создать новый файл pass case "insert": # Вставить текст в указанное место passРеализуйте меры безопасности
Добавьте валидацию и проверки безопасности:
- Проверяйте пути к файлам, чтобы предотвратить обход каталогов
- Создавайте резервные копии перед внесением изменений
- Корректно обрабатывайте ошибки
- Реализуйте проверки прав доступа
Обрабатывайте ответы Claude
Извлекайте и обрабатывайте вызовы инструмента из ответов Claude:
# Обработка использования инструментов в ответе Claude for content in response.content: if content.type == "tool_use": # Выполнение инструмента в зависимости от команды result = handle_editor_tool(content) # Возврат результата Claude tool_result = { "type": "tool_result", "tool_use_id": content.id, "content": result, }
Обработка ошибок
При использовании инструмента текстового редактора могут возникать различные ошибки. Вот рекомендации по их обработке:
Если Claude пытается просмотреть или изменить несуществующий файл, верните соответствующее сообщение об ошибке в tool_result:
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01A09q90qw90lq917835lq9",
"content": "Error: File not found",
"is_error": true
}
]
}Если команда str_replace от Claude соответствует нескольким местам в файле, верните соответствующее сообщение об ошибке:
{
"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 не соответствует никакому тексту в файле, верните соответствующее сообщение об ошибке:
{
"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
}
]
}Если возникают проблемы с правами доступа при создании, чтении или изменении файлов, верните соответствующее сообщение об ошибке:
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01A09q90qw90lq917835lq9",
"content": "Error: Permission denied. Cannot write to file.",
"is_error": true
}
]
}Следуйте лучшим практикам реализации
Когда вы просите Claude исправить или изменить код, конкретно указывайте, какие файлы нужно изучить или какие проблемы нужно решить. Чёткий контекст помогает Claude определить нужные файлы и внести соответствующие изменения.
Менее полезная подсказка: «Можешь исправить мой код?»
Лучшая подсказка: «В моём файле primes.py есть синтаксическая ошибка, из-за которой он не запускается. Можешь её исправить?»
Чётко указывайте пути к файлам, когда это необходимо, особенно если вы работаете с несколькими файлами или файлами в разных каталогах.
Менее полезная подсказка: «Проверь мой вспомогательный файл»
Лучшая подсказка: «Можешь проверить мой файл utils/helpers.py на наличие проблем с производительностью?»
Реализуйте в вашем приложении систему резервного копирования, которая создаёт копии файлов, прежде чем разрешить Claude их редактировать, особенно для важного или производственного кода.
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 требует точного совпадения заменяемого текста. Ваше приложение должно убедиться, что для старого текста существует ровно одно совпадение, или выдавать соответствующие сообщения об ошибках.
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 внесёт изменения в файл, проверьте их, запустив тесты или убедившись, что код по-прежнему работает как ожидается.
def verify_changes(file_path):
"""Run tests or checks after making changes."""
try:
# Для файлов Python проверьте наличие синтаксических ошибок
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)}"Цены и использование токенов
Инструмент текстового редактора использует ту же структуру ценообразования, что и другие инструменты, используемые с Claude. Он следует стандартному ценообразованию входных и выходных токенов в зависимости от используемой вами модели Claude.
В дополнение к базовым токенам для инструмента текстового редактора требуются следующие дополнительные входные токены:
| Инструмент | Дополнительные входные токены |
|---|---|
text_editor_20250429 (Claude 4.x) | 700 токенов |
Более подробную информацию о ценах на инструменты см. в разделе Цены на использование инструментов.
Интеграция инструмента текстового редактора с другими инструментами
Вы можете использовать инструмент текстового редактора вместе с другими инструментами Claude. При комбинировании инструментов убедитесь, что вы:
- Согласуете версию инструмента с используемой моделью
- Учитываете дополнительное использование токенов для всех инструментов, включённых в ваш запрос
Журнал изменений
| Дата | Версия | Изменения |
|---|---|---|
| 28 июля 2025 г. | text_editor_20250728 | Выпуск обновлённого инструмента текстового редактора, который исправляет некоторые проблемы и добавляет необязательный параметр 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 работать напрямую с вашей кодовой базой, поддерживая рабочие процессы от отладки до автоматизированной документации.
Узнайте, как реализовать рабочие процессы с инструментами для использования с Claude.
Выполняйте команды оболочки с помощью Claude.
Was this page helpful?