複数ファイル読み取りツール (read_many_files)
このドキュメントでは、Qwen Code の read_many_files ツールについて説明します。
説明
read_many_files を使用すると、パスまたはグロブパターンで指定された複数のファイルから内容を読み取ることができます。このツールの動作は、提供されたファイルの種類によって異なります。
- テキストファイルの場合、その内容が単一の文字列に連結されます。
- 画像(例:PNG、JPEG)、PDF、音声(MP3、WAV)、動画(MP4、MOV)ファイルの場合、明示的にファイル名または拡張子で要求された場合に限り、base64 エンコードされたデータとして読み取り・返却されます。
read_many_files は、コードベースの概要を取得する、特定の機能が実装されている場所を特定する、ドキュメントをレビューする、あるいは複数の設定ファイルからコンテキストを収集するなどのタスクに利用できます。
[!note]
read_many_filesは、指定されたパスまたはグロブパターンに一致するファイルを検索します。たとえば"/docs"のようなディレクトリパスを指定しても空の結果が返されます。関連するファイルを特定するには、"/docs/*"や"/docs/*.md"のようなパターンを指定する必要があります。
引数
read_many_files は以下の引数を取ります。
paths(文字列のリスト、必須):ツールのターゲットディレクトリを基準とした、グロブパターンまたはパスの配列(例:["src/**/*.ts"]、["README.md", "docs/*", "assets/logo.png"])。exclude(文字列のリスト、任意):除外するファイル/ディレクトリのためのグロブパターン(例:["**/*.log", "temp/"])。useDefaultExcludesがtrueの場合、これらのパターンはデフォルト除外パターンに追加されます。include(文字列のリスト、任意):追加で含めるグロブパターン。これらはpathsとマージされます(例:広範に除外されたテストファイルを明示的に追加するために["*.test.ts"]を指定、または特定の画像形式を含めるために["images/*.jpg"]を指定)。recursive(ブール値、任意):再帰的に検索するかどうか。この動作は主にグロブパターン内の**によって制御されます。デフォルト値はtrueです。useDefaultExcludes(ブール値、任意):デフォルトの除外パターン(例:node_modules、.git、画像/PDF以外のバイナリファイルなど)を適用するかどうか。デフォルト値はtrueです。respect_git_ignore(ブール値、任意):ファイル検索時に.gitignoreのパターンを尊重するかどうか。デフォルト値はtrueです。
read_many_files を Qwen Code で使用する方法
read_many_files は、指定された paths および include パターンに一致するファイルを検索し、exclude パターンおよび(有効な場合の)デフォルト除外ルールを尊重します。
- テキストファイルの場合:明示的に画像/PDF として要求されていないバイナリファイルをスキップしようとする一方で、各一致ファイルの内容を読み取り、UTF-8 エンコーディングで文字列として連結します。各ファイルの内容の間には区切り文字
--- {filePath} ---が挿入されます。 - ツールは、最後のファイルの後に
--- 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 の使用例
src ディレクトリ内のすべての TypeScript ファイルを読み込みます:
read_many_files(paths=["src/**/*.ts"])メインの README、docs ディレクトリ内のすべての Markdown ファイル、および特定のロゴ画像を読み込みますが、特定のファイルは除外します:
read_many_files(paths=["README.md", "docs/**/*.md", "assets/logo.png"], exclude=["docs/OLD_README.md"])すべての JavaScript ファイルを読み込みますが、テストファイルと images フォルダー内のすべての JPEG は明示的に含め、デフォルトの除外ルールは無効化します:
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 エンコードされたデータとして返します。これらのファイルは、
- パフォーマンス: 多数のファイルや非常に大きな個別のファイルを読み取ると、リソースを大量に消費する可能性があります。
- パスの具体性: パスおよびグロブパターンは、ツールの対象ディレクトリを基準として正しく指定してください。画像/PDF ファイルについては、それらを含めるのに十分具体的なパターンを指定してください。
- デフォルトの除外設定:
node_modules、.gitなどのデフォルト除外パターンに注意してください。必要に応じてuseDefaultExcludes=Falseを指定して上書きできますが、慎重に使用してください。