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

Многофайловое чтение (read_many_files)

Note

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

Описание

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 (list[string], required): Массив шаблонов glob или путей относительно целевого каталога инструмента (например, ["src/**/*.ts"], ["README.md", "docs/*", "assets/logo.png"]).
  • exclude (list[string], optional): Шаблоны glob для исключения файлов/каталогов (например, ["**/*.log", "temp/"]). Они добавляются к исключениям по умолчанию, если useDefaultExcludes равно true.
  • include (list[string], optional): Дополнительные шаблоны glob для включения. Они объединяются с paths (например, ["*.test.ts"] для добавления тестовых файлов, если они были широко исключены, или ["images/*.jpg"] для включения определенных типов изображений).
  • recursive (boolean, optional): Определяет, выполнять ли рекурсивный поиск. В основном контролируется с помощью ** в шаблонах glob. По умолчанию true.
  • useDefaultExcludes (boolean, optional): Применять ли список шаблонов исключения по умолчанию (например, node_modules, .git, не изображения/PDF двоичные файлы). По умолчанию true.
  • respect_git_ignore (boolean, optional): Учитывать ли шаблоны .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=["Your files or paths here."], include=["Additional files to include."], exclude=["Files to 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