Claude Platform Docs
MessagesИнструменты

Инструмент текстового редактора

Предоставьте 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)

Используйте инструмент текстового редактора следующим образом:

  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, он формирует правильно оформленный запрос на использование инструментов со старым текстом и новым текстом, на который его нужно заменить
  5. Выполните правку и верните результаты

    • Извлеките путь к файлу, старый текст и новый текст из запроса Claude на использование инструментов
    • Выполните замену текста в файле
    • Верните результаты Claude
  6. Claude предоставляет свой анализ и объяснение

    • После изучения и, возможно, редактирования файлов Claude предоставляет полное объяснение того, что он обнаружил и какие изменения внёс

Команды инструмента текстового редактора

Инструмент текстового редактора поддерживает несколько команд для просмотра и изменения файлов:

view

Команда view позволяет Claude изучить содержимое файла или вывести список содержимого каталога. Она может прочитать весь файл или определённый диапазон строк.

Параметры:

  • command: должно быть "view"
  • path: путь к файлу или каталогу для просмотра
  • view_range (необязательно): массив из двух целых чисел, задающих номера начальной и конечной строк для просмотра. Нумерация строк начинается с 1, а значение -1 для конечной строки означает чтение до конца файла. Этот параметр применяется только при просмотре файлов, а не каталогов.

str_replace

Команда str_replace позволяет Claude заменить определённую строку в файле новой строкой. Она используется для внесения точных правок.

Параметры:

  • command: должно быть "str_replace"
  • path: путь к изменяемому файлу
  • old_str: заменяемый текст (должен совпадать точно, включая пробелы и отступы)
  • new_str: новый текст, вставляемый вместо старого

create

Команда create позволяет Claude создать новый файл с указанным содержимым.

Параметры:

  • command: должно быть "create"
  • path: путь, по которому должен быть создан новый файл
  • file_text: содержимое для записи в новый файл

insert

Команда insert позволяет Claude вставить текст в определённое место файла.

Параметры:

  • command: должно быть "insert"
  • path: путь к изменяемому файлу
  • insert_line: номер строки, после которой нужно вставить текст (0 — начало файла)
  • insert_text: вставляемый текст

Пример: исправление синтаксической ошибки с помощью инструмента текстового редактора

Этот пример демонстрирует, как 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 использует инструмент текстового редактора для просмотра файла:

Output
{
  "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 для её исправления:

Output
{
  "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 предоставляет полное объяснение исправления:

Output
{
  "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 и более поздних.

  1. Инициализируйте вашу реализацию редактора

    Создайте вспомогательные функции для выполнения файловых операций, таких как чтение, запись и изменение файлов. Рассмотрите возможность реализации функции резервного копирования для восстановления после ошибок.

  2. Обрабатывайте вызовы инструмента редактора

    Создайте функцию, которая обрабатывает вызовы инструмента от 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
  3. Реализуйте меры безопасности

    Добавьте валидацию и проверки безопасности:

    • Проверяйте пути к файлам, чтобы предотвратить обход каталогов
    • Создавайте резервные копии перед внесением изменений
    • Корректно обрабатывайте ошибки
    • Реализуйте проверки прав доступа
  4. Обрабатывайте ответы 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. Он следует стандартному ценообразованию входных и выходных токенов в зависимости от используемой вами модели 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?