Урок 6Инструменты

Работа с файлами

Read, Write, Edit

Read

Читает файлы, изображения, PDF и ноутбуки

Write

Создаёт новые файлы или полностью заменяет

Edit

Точечные замены строк в существующих файлах

Как работают файловые инструменты Claude Code

Claude Code взаимодействует с вашим проектом не напрямую, а через набор файловых инструментов (file tools): Read, Write и Edit. Это специализированные функции, которые модель вызывает по мере необходимости, а среда выполнения (harness) исполняет их и возвращает результат обратно в контекст. Такой подход важен по двум причинам. Во-первых, модель не «угадывает» содержимое файлов из памяти — она читает реальный код прямо перед изменением, поэтому правки опираются на актуальное состояние репозитория. Во-вторых, каждое действие становится явным и проверяемым: вы видите, какой файл прочитан, что именно создаётся и какая строка заменяется.

Read — это точка входа. Инструмент загружает содержимое файла в контекст модели и понимает разные форматы: текстовый код (.ts, .py, .md), изображения (.png, .jpg), PDF и Jupyter-ноутбуки (.ipynb). По умолчанию Read читает до 2000 строк; для крупных файлов применяются параметры offset и limit, чтобы загрузить нужный фрагмент и не переполнять контекстное окно. Именно поэтому в примерах на этой странице запросы вида «Прочитай файл src/auth.ts» сначала приводят к вызову Read, а уже потом к анализу или редактированию.

Edit делает точечную замену: вы задаёте old_string (фрагмент, который нужно заменить) и new_string (на что заменить). Блок кода выше — old_string: "return null;" new_string: "return data ?? null;" — иллюстрирует ровно это: одна строка меняется без переписывания всего файла. Ключевое ограничение — old_string должен быть уникальным в пределах файла, иначе инструмент не поймёт, какое вхождение менять, и вернёт ошибку. Поэтому при неоднозначности нужно включать в old_string больше контекста (соседние строки, отступы).

Write создаёт новый файл или полностью перезаписывает существующий — как в примере с src/components/Button.tsx на этой странице. Главная ошибка новичков — использовать Write для правки существующего файла: это сотрёт всё прежнее содержимое. Практическое правило простое: для изменений в существующих файлах — Edit (он показывает diff, безопаснее и сохраняет форматирование), для создания с нуля — Write. И помните: Edit и Write требуют, чтобы файл был прочитан через Read заранее — это страховка от слепых правок.

Read — чтение файлов

Инструмент Read читает содержимое файлов и может обрабатывать разные форматы:

Текстовые файлы.ts, .js, .py, .md, etc.
Изображения.png, .jpg, .gif, .webp
PDF.pdf
Jupyter Notebooks.ipynb
JSON/YAML.json, .yaml, .yml
# Примеры использования:
> Прочитай файл src/auth.ts
> Покажи скриншот error.png
> Проанализируй PDF документ

📖 Read может читать до 2000 строк по умолчанию. Для больших файлов используйте offset и limit.

Edit — точечное редактирование

Edit заменяет конкретные строки в файле. Требует точного совпадения текста:

# Claude выполняет:
Edit file: src/utils.ts
- old_string: "return null;"
+ new_string: "return data ?? null;"

Когда использовать

  • Исправление багов
  • Добавление импортов
  • Рефакторинг функций
  • Обновление констант

Ограничения

  • old_string должен быть уникальным
  • Файл должен существовать
  • Требуется предварительный Read
Write — создание файлов

Write создаёт новый файл или полностью перезаписывает существующий:

> Создай новый компонент Button
Write file: src/components/Button.tsx
import React from 'react'; export const Button = ({ children }) => { return <button>{children}</button>; };

⚠️ Write полностью заменяет содержимое файла. Для изменения существующих файлов используйте Edit.

Edit vs Write: когда что использовать

Edit

Точечные изменения в существующем файле

Примеры:

  • Исправить баг в функции
  • Добавить импорт
  • Переименовать переменную
Показывает diff, Безопасно, Сохраняет форматирование
Только для существующих файлов

Write

Создание нового файла или полная замена

Примеры:

  • Создать новый компонент
  • Сгенерировать конфиг
  • Написать тест с нуля
Для новых файлов, Полный контроль
Перезаписывает всё, Нужно быть осторожным

Лучшие практики

  • 1.Claude всегда читает файл перед редактированием — это гарантирует точность
  • 2.Предпочитайте Edit для существующих файлов — это безопаснее и показывает diff
  • 3.Используйте Write только для новых файлов или полной перегенерации
  • 4.Для больших файлов указывайте конкретные строки или функции

Частые вопросы

Чем Edit отличается от Write в Claude Code?

Edit делает точечную замену строки (old_string → new_string) в существующем файле, показывает diff и сохраняет остальное содержимое. Write создаёт новый файл или полностью перезаписывает существующий, стирая прежнее содержимое. Для правок существующих файлов используйте Edit, для создания с нуля — Write.

Почему Claude Code требует прочитать файл перед редактированием?

Инструменты Edit и Write требуют предварительного вызова Read, чтобы модель опиралась на реальное актуальное содержимое файла, а не на догадки из памяти. Это страхует от слепых правок и гарантирует, что old_string точно совпадает с тем, что есть в файле.

Что значит ошибка old_string must be unique в Claude Code?

Edit заменяет фрагмент только если old_string встречается в файле ровно один раз. Если такой текст есть в нескольких местах, инструмент не знает, какое вхождение менять, и возвращает ошибку. Решение — добавить в old_string больше контекста: соседние строки и отступы, чтобы фрагмент стал уникальным.

Какие форматы файлов умеет читать Read в Claude Code?

Read читает текстовый код (.ts, .js, .py, .md), изображения (.png, .jpg, .gif, .webp), PDF и Jupyter-ноутбуки (.ipynb), а также JSON и YAML. По умолчанию загружается до 2000 строк; для больших файлов применяют параметры offset и limit, чтобы прочитать нужный фрагмент.

Квиз по уроку

1 из 1

1.Какой инструмент должен использовать Claude Code для изменения существующего файла?

Этот урок — часть структурированного курса по LLM.

Мой путь обучения