Работа с файлами
Read, Write, Edit
Read
Читает файлы, изображения, PDF и ноутбуки
Write
Создаёт новые файлы или полностью заменяет
Edit
Точечные замены строк в существующих файлах
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 может читать до 2000 строк по умолчанию. Для больших файлов используйте offset и limit.
Edit заменяет конкретные строки в файле. Требует точного совпадения текста:
Когда использовать
- • Исправление багов
- • Добавление импортов
- • Рефакторинг функций
- • Обновление констант
Ограничения
- • old_string должен быть уникальным
- • Файл должен существовать
- • Требуется предварительный Read
Write создаёт новый файл или полностью перезаписывает существующий:
⚠️ Write полностью заменяет содержимое файла. Для изменения существующих файлов используйте Edit.
Edit
Точечные изменения в существующем файле
Примеры:
- • Исправить баг в функции
- • Добавить импорт
- • Переименовать переменную
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, чтобы прочитать нужный фрагмент.
Этот урок — часть структурированного курса по LLM.
Мой путь обучения