Claude может использовать определенный Anthropic инструмент текстового редактора для просмотра и изменения текстовых файлов, помогая вам отлаживать, исправлять и улучшать ваш код или другие текстовые документы. Это позволяет Claude напрямую взаимодействовать с вашими файлами, предоставляя практическую помощь, а не просто предлагая изменения.

Перед использованием инструмента текстового редактора

Используйте совместимую модель

Инструмент текстового редактора Anthropic доступен для нескольких моделей 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 требует заголовок бета-версии computer-use-2024-10-22 при использовании инструмента текстового редактора.

Инструмент текстового редактора общедоступен в Claude 4 и Sonnet 3.7.

Более новый text_editor_20250429 для моделей Claude 4 не включает команду undo_edit. Если вам требуется эта функциональность, вам нужно будет использовать Claude 3.7 или Sonnet 3.5 с их соответствующими версиями инструментов.

Оцените соответствие вашего случая использования

Некоторые примеры того, когда использовать инструмент текстового редактора:

  • Отладка кода: Пусть Claude выявляет и исправляет ошибки в вашем коде, от синтаксических ошибок до логических проблем.
  • Рефакторинг кода: Позвольте Claude улучшить структуру вашего кода, читаемость и производительность через целевые правки.
  • Генерация документации: Попросите Claude добавить строки документации, комментарии или README файлы в вашу кодовую базу.
  • Создание тестов: Пусть Claude создает модульные тесты для вашего кода на основе его понимания реализации.

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

Предоставьте инструмент текстового редактора (названный str_replace_based_edit_tool) Claude, используя Messages API:

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": "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
  • Прочитайте содержимое файла или перечислите содержимое каталога и верните их Claude
  • Верните результаты Claude, продолжив разговор новым сообщением user, содержащим блок содержимого tool_result
4

Claude использует инструмент для изменения файлов

  • После изучения файла или каталога Claude может использовать команду, такую как str_replace, для внесения изменений или insert для добавления текста в определенный номер строки.
  • Если Claude использует команду str_replace, Claude создает правильно отформатированный запрос использования инструмента со старым текстом и новым текстом для замены
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 для начала файла)
  • new_str: Текст для вставки

undo_edit

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

Эта команда доступна только в Claude Sonnet 3.7 и Claude Sonnet 3.5. Она не поддерживается в моделях Claude 4, использующих text_editor_20250429.

Параметры:

  • command: Должно быть “undo_edit”
  • path: Путь к файлу, последнее редактирование которого должно быть отменено

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

Этот пример демонстрирует, как Claude 4 использует инструмент текстового редактора для исправления синтаксической ошибки в файле Python.

Сначала ваше приложение предоставляет 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": "There'\''s a syntax error in my primes.py file. Can you help me fix it?"
      }
    ]
  }'

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

{
  "id": "msg_01XAbCDeFgHiJkLmNoPQrStU",
  "model": "claude-opus-4-20250514",
  "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:

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

{
  "id": "msg_01VwXyZAbCdEfGhIjKlMnO",
  "model": "claude-opus-4-20250514",
  "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-4-20250514",
    max_tokens=1024,
    tools=[
        {
            "type": "text_editor_20250429",
            "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 предоставит полное объяснение исправления:

{
  "id": "msg_01IjKlMnOpQrStUvWxYzAb",
  "model": "claude-opus-4-20250514",
  "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_20250429"
  • Claude Sonnet 3.7: type: "text_editor_20250124"
  • Claude Sonnet 3.5: type: "text_editor_20241022"
1

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

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

2

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

Создайте функцию, которая обрабатывает вызовы инструментов от Claude на основе типа команды:

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:

# Process tool use in Claude's response
for 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
        }

При реализации инструмента текстового редактора имейте в виду:

  1. Безопасность: Инструмент имеет доступ к вашей локальной файловой системе, поэтому реализуйте соответствующие меры безопасности.
  2. Резервное копирование: Всегда создавайте резервные копии перед разрешением редактирования важных файлов.
  3. Проверка: Проверяйте все входные данные для предотвращения непреднамеренных изменений.
  4. Уникальное соответствие: Убедитесь, что замены соответствуют точно одному месту, чтобы избежать непреднамеренных правок.

Обрабатывайте ошибки

При использовании инструмента текстового редактора могут возникать различные ошибки. Вот руководство по их обработке:

Следуйте лучшим практикам реализации


Ценообразование и использование токенов

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

Для более подробной информации о ценообразовании инструментов см. Ценообразование использования инструментов.

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

Инструмент текстового редактора может использоваться вместе с другими инструментами Claude. При объединении инструментов убедитесь, что вы:

  • Сопоставляете версию инструмента с используемой моделью
  • Учитываете дополнительное использование токенов для всех инструментов, включенных в ваш запрос

Журнал изменений

ДатаВерсияИзменения
29 апреля 2025text_editor_20250429Выпуск инструмента текстового редактора для Claude 4. Эта версия удаляет команду undo_edit, но сохраняет все остальные возможности. Имя инструмента было обновлено, чтобы отразить его архитектуру на основе str_replace.
13 марта 2025text_editor_20250124Введение автономной документации инструмента текстового редактора. Эта версия оптимизирована для Claude Sonnet 3.7, но имеет идентичные возможности с предыдущей версией.
22 октября 2024text_editor_20241022Первоначальный выпуск инструмента текстового редактора с Claude Sonnet 3.5. Предоставляет возможности для просмотра, создания и редактирования файлов через команды view, create, str_replace, insert и undo_edit.

Следующие шаги

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

  • Интегрируйте с вашим рабочим процессом разработки: Встройте инструмент текстового редактора в ваши инструменты разработки или IDE
  • Создайте систему обзора кода: Пусть Claude просматривает ваш код и вносит улучшения
  • Постройте помощника по отладке: Создайте систему, где Claude может помочь вам диагностировать и исправить проблемы в вашем коде
  • Реализуйте преобразование форматов файлов: Позвольте Claude помочь вам преобразовать файлы из одного формата в другой
  • Автоматизируйте документацию: Настройте рабочие процессы для автоматического документирования вашего кода Claude

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