複数ファイル読み取り (read_many_files)
以前は read_many_files がスタンドアロンのツールとして公開されていましたが、現在は内部ユーティリティ関数としてリファクタリングされています。モデルはこのツールを直接呼び出しません。代わりに、read_file、glob、grep_search の各ツールが個別および複数ファイルの読み取りをカバーします。以下の情報は参考として保持されています。
説明
read_many_files は、パスまたはグロブパターンで指定された複数のファイルからコンテンツを読み取ります。動作はファイルの種類によって異なります。
- テキストファイルの場合、このツールはそれらのコンテンツを1つの文字列に連結します。
- 画像 (例: PNG、JPEG)、PDF、音声 (MP3、WAV)、動画 (MP4、MOV) ファイルの場合、これらが名前または拡張子で明示的に要求された場合に限り、base64 エンコードされたデータとして読み取って返します。
read_many_files は、コードベースの概要把握、特定機能の実装場所の特定、ドキュメントのレビュー、複数の設定ファイルからのコンテキスト収集などのタスクに使用できます。
注: read_many_files は、指定されたパスまたはグロブパターンに従ってファイルを検索します。"/docs" のようなディレクトリパスは空の結果を返します。該当ファイルを特定するには、"/docs/*" や "/docs/*.md" のようなパターンが必要です。
引数
read_many_files は以下の引数を取ります。
paths(list[string], 必須): ツールの対象ディレクトリからの相対パスまたはグロブパターンの配列 (例:["src/**/*.ts"],["README.md", "docs/*", "assets/logo.png"])。exclude(list[string], オプション): 除外するファイル/ディレクトリのグロブパターン (例:["**/*.log", "temp/"])。useDefaultExcludesが true の場合、デフォルトの除外パターンに追加されます。include(list[string], オプション): 追加で含めるグロブパターン。pathsとマージされます (例: テストファイルを広く除外した場合に["*.test.ts"]で追加、または特定の画像タイプを含めるために["images/*.jpg"])。recursive(boolean, オプション): 再帰的に検索するかどうか。主にグロブパターン内の**で制御されます。デフォルトはtrue。useDefaultExcludes(boolean, オプション): デフォルトの除外パターン (例:node_modules,.git、画像/PDF 以外のバイナリファイル) を適用するかどうか。デフォルトはtrue。respect_git_ignore(boolean, オプション): ファイル検索時に.gitignoreパターンを尊重するかどうか。デフォルトはtrue。
Qwen Code で read_many_files を使用する方法
read_many_files は、指定された paths と include パターンに一致するファイルを検索し、exclude パターンとデフォルトの除外設定 (有効な場合) を尊重します。
- テキストファイルの場合: 各一致ファイルのコンテンツを読み取り (画像/PDF として明示的に要求されていないバイナリファイルはスキップを試みます)、各ファイルのコンテンツの間に区切り文字
--- {filePath} ---を挿入して1つの文字列に連結します。デフォルトでは UTF-8 エンコーディングを使用します。 - ツールは最後のファイルの後に
--- End of content ---を挿入します。 - 画像および PDF ファイルの場合: 名前または拡張子で明示的に要求された場合 (例:
paths: ["logo.png"]またはinclude: ["*.pdf"])、ツールはファイルを読み取り、そのコンテンツを base64 エンコードされた文字列として返します。 - ツールは、最初のコンテンツ内の null バイトをチェックすることで、他のバイナリファイル (一般的な画像/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 の例
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を指定する)。 - その他のバイナリファイル: このツールは、最初のコンテンツ内の null バイトを検査することで、他の種類のバイナリファイルを検出してスキップしようとします。これらのファイルは出力から除外されます。
- 画像/PDF/音声/動画ファイル: このツールは、一般的な画像タイプ (PNG、JPEG など)、PDF、音声 (mp3、wav)、動画 (mp4、mov) ファイルを読み取り、base64 エンコードされたデータとして返すことができます。これらのファイルは、
- パフォーマンス: 非常に多数のファイルや非常に大きな個別ファイルを読み取ると、リソースを大量に消費する可能性があります。
- パスの具体性: パスとグロブパターンがツールの対象ディレクトリに対して正しく指定されていることを確認してください。画像/PDF ファイルの場合は、それらを含めるのに十分に具体的なパターンであることを確認してください。
- デフォルトの除外設定: デフォルトの除外パターン (
node_modules、.gitなど) に注意し、オーバーライドする必要がある場合はuseDefaultExcludes=Falseを使用しますが、慎重に行ってください。