Multi-File Read (read_many_files)
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). - Другие бинарные файлы: Инструмент пытается обнаружить и пропустить другие типы бинарных файлов, проверяя их начальное содержимое на наличие нулевых байтов. Инструмент исключает эти файлы из вывода.
- Файлы изображений/PDF/аудио/видео: Инструмент может читать распространенные типы изображений (PNG, JPEG и т.д.), PDF, аудио (mp3, wav) и видео (mp4, mov), возвращая их как данные в кодировке base64. Эти файлы должны быть явно указаны в шаблонах
- Производительность: Чтение очень большого количества файлов или очень больших отдельных файлов может быть ресурсоемким.
- Уточнение путей: Убедитесь, что пути и glob-шаблоны правильно указаны относительно целевого каталога инструмента. Для файлов изображений/PDF убедитесь, что шаблоны достаточно конкретны для их включения.
- Исключения по умолчанию: Помните о шаблонах исключений по умолчанию (например,
node_modules,.git) и используйтеuseDefaultExcludes=False, если вам нужно их переопределить, но делайте это с осторожностью.