Skip to content

大規模プロジェクト

VJSPは任意の規模のプロジェクトで使用できますが、大規模なコードベースを扱う際にはコンテキスト管理に特に注意を払う必要があります。以下は、大規模リポジトリを扱う際のヒントです。

コンテキスト制限の理解

VJSPが使用する大規模言語モデル(LLM)には「コンテキストウィンドウ」と呼ばれる制限があります。これは、モデルが一度に処理できるテキスト量(トークン数で測定)の上限です。コンテキストが大きくなりすぎると、モデルはあなたのリクエストを正しく理解できなくなったり、正確な応答を生成できなくなったりします。

コンテキストウィンドウには以下の内容が含まれます:

  • システムプロンプト(VJSPへの指示)
  • 会話履歴
  • @ を使って参照したファイルの内容
  • VJSPが使用したコマンドやツールの出力

コンテキスト管理のための戦略

  1. 具体的にする:ファイルやコードを参照する際は、正確なファイルパスや関数名を使用してください。「メインファイル」のような曖昧な表現は避けてください。

  2. コンテキストメンションを効果的に活用する:特定のファイルを含めるには @/path/to/file.ts を使用し、現在のエラーや警告を含めるには @problems を使用します。特定のGitコミットを参照するには、@ の後にコミットハッシュを続けます。

  3. タスクを分割する:大きなタスクを、より小さく管理しやすいサブタスクに分割してください。これにより、コンテキストを集中させることができます。

  4. 要約する:大量のコードを参照する必要がある場合は、コード全体を含める代わりに、プロンプト内で関連部分を要約することを検討してください。

  5. 最近の履歴を優先する:VJSPは自動的に古いメッセージを会話履歴から切り捨てて、コンテキストウィンドウ内に収まるようにします。この仕組みを意識し、重要なコンテキストが必要な場合は再度明示的に含めてください。

  6. プロンプトキャッシングを活用する(利用可能な場合):Anthropic、OpenAI、OpenRouter、Requestyなどの一部のAPIプロバイダーは「プロンプトキャッシング」をサポートしています。これによりプロンプトがキャッシュされ、後続のタスクでのコストとレイテンシを削減できます。

例:大規模ファイルのリファクタリング

たとえば、大規模なTypeScriptファイル(src/components/MyComponent.tsx)をリファクタリングする必要があるとします。以下のようなアプローチが考えられます:

  1. 初期概要の取得

    @/src/components/MyComponent.tsx このファイルに含まれる関数とクラスをリストしてください。
  2. 特定の関数に焦点を当てる

    @/src/components/MyComponent.tsx `processData` 関数をPromiseではなく async/await を使うようにリファクタリングしてください。
  3. 変更を段階的に適用:小さな変更を少しずつ加え、それぞれのステップをレビュー・承認します。

このようにタスクを細かく分割し、正確なコンテキストを提供することで、コンテキストウィンドウの制限内であっても大規模ファイルを効果的に扱うことができます。