Skip to Content
デベロッパーガイドツール複数ファイルの読み取り

複数ファイル読み取り (read_many_files)

Note

以前は read_many_files がスタンドアロンのツールとして公開されていましたが、現在は内部ユーティリティ関数としてリファクタリングされています。モデルはこのツールを直接呼び出しません。代わりに、read_fileglobgrep_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 は、指定された pathsinclude パターンに一致するファイルを検索し、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 ファイルの場合は、それらを含めるのに十分に具体的なパターンであることを確認してください。
  • デフォルトの除外設定: デフォルトの除外パターン (node_modules.git など) に注意し、オーバーライドする必要がある場合は useDefaultExcludes=False を使用しますが、慎重に行ってください。
Last updated on