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

Более новый 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:

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    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

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

  • Извлеките путь к файлу или каталогу из запроса на использование инструмента 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 инструмент текстового редактора и запрос на исправление синтаксической ошибки:

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    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?"
        }
    ]
)

print(response)

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:

response = client.messages.create(
    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. Уникальное соответствие: Убедитесь, что замены соответствуют точно одному месту, чтобы избежать непреднамеренных правок.

Обработка ошибок

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

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


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

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

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

ИнструментДополнительные входные токены
text_editor_20250429 (Claude 4)700 токенов
text_editor_20250124 (Claude Sonnet 3.7)700 токенов
text_editor_20241022 (Claude Sonnet 3.5)700 токенов

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

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

Инструмент текстового редактора может использоваться вместе с инструментом использования компьютера и другими инструментами, определенными Anthropic. При комбинировании этих инструментов вам нужно:

  1. Включить соответствующий заголовок бета-версии (если используется с инструментом использования компьютера)
  2. Сопоставить версию инструмента с используемой моделью
  3. Учитывать дополнительное использование токенов для всех инструментов, включенных в ваш запрос

Для получения дополнительной информации об использовании инструмента текстового редактора в контексте использования компьютера см. Использование компьютера.

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

ДатаВерсияИзменения
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 для улучшения вашего рабочего процесса разработки и продуктивности.