Skip to content

read_file

read_file ツールは、プロジェクト内のファイル内容を確認するために使用されます。VJSP がコード、設定ファイル、ドキュメントを理解し、より良い支援を提供できるようにします。

パラメータ

このツールは以下のパラメータを受け取ります:

  • path (必須): 読み込むファイルのパス(現在の作業ディレクトリからの相対パス)
  • start_line (オプション): 読み込みを開始する行番号(1 から始まるインデックス)
  • end_line (オプション): 読み込みを終了する行番号(1 から始まり、含まれる)
  • auto_truncate (オプション): 行範囲が指定されていない場合に大きなファイルを自動的に切り詰めるかどうか(true/false)

機能

このツールは、指定されたファイルの内容を読み取り、参照しやすいように行番号付きで返します。ファイル全体または特定の部分を読み込むことができ、PDF や Word ドキュメントからテキストを抽出することさえ可能です。

いつ使用するか?

  • VJSP が既存のコード構造を理解する必要がある場合
  • VJSP が設定ファイルを分析する必要がある場合
  • VJSP がテキストファイルから情報を抽出する必要がある場合
  • VJSP が変更を提案する前にコードを確認する必要がある場合
  • 議論で特定の行番号を参照する必要がある場合

主な機能

  • 参照しやすいように行番号付きでファイル内容を表示
  • 行範囲を指定してファイルの特定の部分を読み込める
  • PDF および DOCX ファイルから読み取り可能なテキストを抽出
  • 大きなファイルをインテリジェントに切り詰め、最も関連性の高い部分に集中
  • 大きなコードファイルの行範囲を含むメソッドの概要を提供
  • パフォーマンス向上のために要求された行範囲のみを効率的にストリーミング
  • 行番号付けによりコードの特定の部分を簡単に議論

制限事項

  • 行範囲パラメータを使用しない場合、非常に大きなファイルを効率的に処理できない可能性があります
  • バイナリファイル(PDF と DOCX を除く)の場合、読み取り不可能な内容が返される可能性があります

動作原理

read_file ツールが呼び出されると、次のプロセスに従います:

  1. パラメータ検証: 必須の path パラメータとオプションパラメータを検証
  2. パス解決: 相対パスを絶対パスに解決
  3. 読み込み戦略の選択:
    • ツールは厳密な優先順位階層(以下で詳細説明)を使用します
    • 範囲読み込み、自動切り詰め、または完全ファイル読み込みのいずれかを選択します
  4. コンテンツ処理:
    • コンテンツに行番号を追加します(例:「1 | const x = 13」、ここで 1 | は行番号)
    • 切り詰められたファイルの場合、切り詰め通知とメソッド定義を追加
    • 特別なフォーマット(PDF、DOCX、IPYNB)の場合、読み取り可能なテキストを抽出

読み込み戦略の優先順位

このツールは、ファイルをどのように読み込むかを決定するために明確な決定階層を使用します:

1. 第一優先: 明示的な行範囲

  • start_line または end_line のいずれかが提供された場合、ツールは常に範囲読み込みを実行します
  • 実装は要求された行のみを効率的にストリーミングし、大きなファイルの処理に適しています
  • これは他のすべてのオプションよりも優先されます

2. 第二優先: 大きなファイルの自動切り詰め

これは以下のすべての条件が満たされた場合にのみ適用されます:

  • start_lineend_line も指定されていない
  • auto_truncate パラメータが true に設定されている
  • ファイルがバイナリファイルではない
  • ファイルが設定された行しきい値を超えている(通常は 500-1000 行)

自動切り詰めが有効な場合、ツールは次のように動作します:

  • ファイルの最初の部分のみを読み込みます(maxReadFileLine 設定によって決定)
  • 表示された行数と総行数を示す切り詰め通知を追加
  • 行範囲を含むメソッド定義の概要を提供

3. デフォルトの動作: ファイル全体を読み込む

  • 上記のいずれの条件も満たされない場合、ファイル全体の内容を読み込みます
  • PDF、DOCX、IPYNB などの特別な形式の場合、専用の抽出器を使用します

使用例

以下は、read_file ツールの使用方法と受信する可能性のある典型的な出力を示すいくつかのシナリオです。

ファイル全体を読み込む

ファイルの完全な内容を読み込むには:

入力:

xml
<read_file>
<path>src/app.js</path>
</read_file>

シミュレートされた出力(example_small.txt のような小さなファイルの場合):

1 | これは最初の行です。
2 | これは2行目です。
3 | これは3行目です。

(出力は実際のファイル内容によって異なります)

特定の行を読み込む

特定の行範囲(46-68 など)のみを読み込むには:

入力:

xml
<read_file>
<path>src/app.js</path>
<start_line>46</start_line>
<end_line>68</end_line>
</read_file>

シミュレートされた出力(example_five_lines.txt の 2-3 行目の場合):

2 | 2行目の内容。
3 | 3行目の内容。

(出力は要求された行とその元の行番号のみを表示します)

大きなファイルを読み込む(自動切り詰め)

行が指定されておらず、auto_truncate が有効になっている場合(または設定に基づいてデフォルトで true の場合)に大きなファイルを読み込むには:

入力:

xml
<read_file>
<path>src/large-module.js</path>
<auto_truncate>true</auto_truncate> <!-- デフォルトが true の場合はオプション -->
</read_file>

シミュレートされた出力(1500 行ある large_file.log の場合、1000 行に制限):

1 | ログエントリ 1...
2 | ログエントリ 2...
...
1000 | ログエントリ 1000...
[... 500 行を切り詰め ...]

(出力は設定された最大行数に制限され、切り詰め通知が付きます)

存在しないファイルを読み込もうとする

指定されたファイルが存在しない場合:

入力:

xml
<read_file>
<path>non_existent_file.txt</path>
</read_file>

シミュレートされた出力(エラー):

エラー: パス 'non_existent_file.txt' でファイルが見つかりませんでした。

ブロックされたファイルを読み込もうとする

ファイルが .vjspignore ファイルのルールによって除外されている場合:

入力:

xml
<read_file>
<path>.env</path>
</read_file>

シミュレートされた出力(エラー):

エラー: .vjspignore ルールにより、ファイル '.env' へのアクセスが拒否されました。