Skip to Content
Руководство для разработчиковИнструментыЧтение нескольких файлов

Инструмент чтения нескольких файлов (read_many_files)

В этом документе описывается инструмент read_many_files для Qwen Code.

Описание

Используйте read_many_files, чтобы прочитать содержимое нескольких файлов, указанных путями или шаблонами glob. Поведение этого инструмента зависит от предоставленных файлов:

  • Для текстовых файлов инструмент объединяет их содержимое в одну строку.
  • Для изображений (например, PNG, JPEG), PDF-, аудио- (MP3, WAV) и видеофайлов (MP4, MOV) он считывает их и возвращает в виде данных, закодированных в base64, при условии, что они явно запрошены по имени или расширению.

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

Примечание: read_many_files ищет файлы в соответствии с указанными путями или шаблонами glob. Указание пути к каталогу, например "/docs", вернёт пустой результат; для идентификации нужных файлов требуется шаблон, например "/docs/*" или "/docs/*.md".

Аргументы

Функция read_many_files принимает следующие аргументы:

  • paths (список строк, обязательный): Массив шаблонов glob или путей, относительных к целевой директории инструмента (например, ["src/**/*.ts"], ["README.md", "docs/*", "assets/logo.png"]).
  • exclude (список строк, необязательный): Шаблоны glob для исключения файлов и директорий (например, ["**/*.log", "temp/"]). Эти шаблоны добавляются к списку шаблонов по умолчанию, если параметр useDefaultExcludes имеет значение true.
  • include (список строк, необязательный): Дополнительные шаблоны glob для включения. Они объединяются со списком paths (например, ["*.test.ts"], чтобы явно добавить тестовые файлы, если они были исключены на более широком уровне, или ["images/*.jpg"], чтобы включить конкретные типы изображений).
  • recursive (логический тип, необязательный): Определяет, следует ли выполнять рекурсивный поиск. В основном управление этим осуществляется с помощью ** в шаблонах glob. Значение по умолчанию — true.
  • useDefaultExcludes (логический тип, необязательный): Определяет, следует ли применять список шаблонов исключения по умолчанию (например, node_modules, .git, двоичные файлы, отличные от изображений и PDF). Значение по умолчанию — true.
  • respect_git_ignore (логический тип, необязательный): Определяет, следует ли учитывать шаблоны из .gitignore при поиске файлов. Значение по умолчанию — true.

Как использовать read_many_files с Qwen Code

Функция read_many_files ищет файлы, соответствующие указанным шаблонам paths и include, при этом учитывая шаблоны exclude и стандартные исключения (если они включены).

  • Для текстовых файлов: читает содержимое каждого найденного файла (пытаясь пропустить двоичные файлы, если они не запрошены явно как изображения или PDF) и объединяет его в одну строку, разделяя содержимое каждого файла разделителем --- {filePath} ---. По умолчанию используется кодировка UTF-8.
  • После содержимого последнего файла добавляется строка --- End of content ---.
  • Для файлов изображений и PDF: если они запрошены явно по имени или расширению (например, paths: ["logo.png"] или include: ["*.pdf"]), функция читает файл и возвращает его содержимое в виде строки, закодированной в base64.
  • Функция пытается обнаружить и пропустить другие двоичные файлы (не соответствующие распространённым типам изображений/PDF и не запрошенные явно), проверяя наличие нулевых байтов в начале их содержимого.

Использование:

read_many_files(paths=["Ваши файлы или пути здесь."], include=["Дополнительные файлы для включения."], exclude=["Файлы для исключения."], recursive=False, useDefaultExcludes=false, respect_git_ignore=true)

Примеры использования read_many_files

Прочитать все файлы TypeScript в каталоге src:

read_many_files(paths=["src/**/*.ts"])

Прочитать основной файл README, все файлы Markdown в каталоге docs и конкретное изображение логотипа, исключив определённый файл:

read_many_files(paths=["README.md", "docs/**/*.md", "assets/logo.png"], exclude=["docs/OLD_README.md"])

Прочитать все файлы JavaScript, но явно включить тестовые файлы и все файлы JPEG в папке images:

read_many_files(paths=["**/*.js"], include=["**/*.test.js", "images/**/*.jpg"], useDefaultExcludes=False)

Важные замечания

  • Обработка двоичных файлов:
    • Изображения/PDF/аудио/видео: Инструмент может читать распространённые форматы изображений (PNG, JPEG и др.), PDF, аудиофайлы (mp3, wav) и видеофайлы (mp4, mov), возвращая их в виде данных, закодированных в base64. Эти файлы должны быть явно указаны в параметрах paths или include (например, путём указания точного имени файла, например video.mp4, или шаблона, например *.mov).
    • Другие двоичные файлы: Инструмент пытается обнаружить и пропустить другие типы двоичных файлов, анализируя первые байты содержимого на наличие нулевых байтов. Такие файлы исключаются из вывода инструмента.
  • Производительность: Чтение очень большого количества файлов или отдельных очень крупных файлов может быть ресурсоёмким.
  • Точность путей: Убедитесь, что пути и шаблоны glob заданы корректно относительно целевой директории инструмента. Для изображений и PDF-файлов убедитесь, что шаблоны достаточно конкретны, чтобы включать эти файлы.
  • Стандартные исключения: Имейте в виду стандартные шаблоны исключения (например, node_modules, .git) и используйте параметр useDefaultExcludes=False, если вам необходимо их переопределить; делайте это осторожно.
Last updated on