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

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