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

Совместимость моделей

МодельВерсия инструмента
Модели Claude 4.xtext_editor_20250728
Claude Sonnet 3.7 (устарело)text_editor_20250124
Инструмент text_editor_20250728 для моделей Claude 4 не включает команду undo_edit. Если вам требуется эта функциональность, вам нужно использовать Claude Sonnet 3.7 (устарело).
Старые версии инструмента не гарантируют обратную совместимость с новыми моделями. Всегда используйте версию инструмента, соответствующую версии вашей модели.

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

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

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

Предоставьте инструмент текстового редактора (названный str_replace_based_edit_tool) Claude, используя Messages API.Вы можете опционально указать параметр max_characters для управления усечением при просмотре больших файлов.
max_characters совместим только с text_editor_20250728 и более поздними версиями инструмента текстового редактора.
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-sonnet-4-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?"
      }
    ]
  }'
Инструмент текстового редактора можно использовать следующим образом:
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

Команда view позволяет Claude изучить содержимое файла или список содержимого директории. Она может прочитать весь файл или определённый диапазон строк. Параметры:
  • command: Должно быть “view”
  • path: Путь к файлу или директории для просмотра
  • view_range (опционально): Массив двух целых чисел, указывающих номера начальной и конечной строк для просмотра. Номера строк начинаются с 1, а -1 для конечной строки означает чтение до конца файла. Этот параметр применяется только при просмотре файлов, а не директорий.
// Пример просмотра файла
{
  "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/"
  }
}

str_replace

Команда str_replace позволяет Claude заменить определённую строку в файле на новую строку. Это используется для внесения точных правок. Параметры:
  • command: Должно быть “str_replace”
  • path: Путь к файлу для изменения
  • old_str: Текст для замены (должен совпадать точно, включая пробелы и отступы)
  • new_str: Новый текст для вставки вместо старого текста
{
  "type": "tool_use",
  "id": "toolu_01A09q90qw90lq917835lq9",
  "name": "str_replace_editor",
  "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_editor",
  "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 для начала файла)
  • new_str: Текст для вставки
{
  "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

Команда undo_edit позволяет Claude отменить последнюю правку, внесённую в файл.
Эта команда доступна только в Claude Sonnet 3.7 (устарело). Она не поддерживается в моделях Claude 4, использующих text_editor_20250728.
Параметры:
  • command: Должно быть “undo_edit”
  • path: Путь к файлу, последняя правка которого должна быть отменена
{
  "type": "tool_use",
  "id": "toolu_01A09q90qw90lq917835lq9",
  "name": "str_replace_editor",
  "input": {
    "command": "undo_edit",
    "path": "primes.py"
  }
}

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

Этот пример демонстрирует, как модели 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-sonnet-4-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?"
      }
    ]
  }'
Claude сначала будет использовать инструмент текстового редактора для просмотра файла:
{
  "id": "msg_01XAbCDeFgHiJkLmNoPQrStU",
  "model": "claude-sonnet-4-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:
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-sonnet-4-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()"
                }
            ]
        }
    ]
  }'
Номера строкВ примере выше результат инструмента view включает содержимое файла с номерами строк, добавленными к каждой строке (например, “1: def is_prime(n):”). Номера строк не требуются, но они необходимы для успешного использования параметра view_range для изучения определённых разделов файлов и параметра insert_line для добавления содержимого в точные места.
Claude выявит синтаксическую ошибку и использует команду str_replace для её исправления:
{
  "id": "msg_01VwXyZAbCdEfGhIjKlMnO",
  "model": "claude-sonnet-4-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-sonnet-4-5",
    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 предоставит полное объяснение исправления:
{
  "id": "msg_01IjKlMnOpQrStUvWxYzAb",
  "model": "claude-sonnet-4-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 4: type: "text_editor_20250728"
  • Claude Sonnet 3.7: type: "text_editor_20250124"
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
        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 пытается просмотреть или изменить файл, который не существует, верните соответствующее сообщение об ошибке в 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:
        # 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:
ToolAdditional input tokens
text_editor_20250429 (Claude 4.x)700 tokens
text_editor_20250124 (Claude Sonnet 3.7 (deprecated))700 tokens
Для получения более подробной информации о ценах на инструменты см. Цены на использование инструментов.

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

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