大規模プロジェクトでの作業

Bob Shellで大規模なコードベースを管理します。コンテキストウィンドウの最適化、ファイル処理、エンタープライズスケールのプロジェクトのベストプラクティスを理解します。

大規模プロジェクトにおけるコンテキストの制限

Bobは限られたコンテキストウィンドウを持つ大規模言語モデルを使用しています。これはBobが一度に処理できる最大テキスト量(tokenで測定)です。コンテキストが大きすぎると、Bobはリクエストを理解したり正確な応答を生成できなくなる場合があります。

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

  • システムプロンプト(Bobへのインストラクション)
  • 会話履歴
  • チャットプロンプトに含めたファイルの内容
  • Bobが使用するコマンドやツールの出力

コンテキスト管理の戦略

  1. 具体的に指定する:ファイルやコードを参照するときは、特定のファイルパスと関数名を使用します。「メインファイル」などの曖昧な参照は避けます。
  2. ファイルを正確に参照する:チャットプロンプトにパスを使って特定のファイルを含めます(例:src/components/MyComponent.tsx)、またはコミットハッシュを参照してBobを特定のGitの状態に向けます。
  3. タスクを分割する:大きなタスクをより小さく管理しやすいサブタスクに分割します。これにより、コンテキストを集中させることができます。
  4. 必要に応じて要約する:大量のコードを参照する必要がある場合、コード全体を含める代わりに、プロンプトで関連する部分を要約することを検討します。
  5. 最近の履歴を優先する:Bobはコンテキストウィンドウ内に収めるために会話履歴の古いメッセージを自動的に要約します。これを念頭に置いて、必要に応じて重要なコンテキストを再度含めます。
  6. MCPツールの使用を管理する:MCPサービスの特定のツールを無効・有効にして、必要なものだけを使用することができます。これにより未使用のツール定義からのコンテキスト消費を削減できます。
  7. 独立した作業にはsubagentまたはsubtaskを使用する:大きく自己完結した作業には、subagentまたはsubtaskの使用を検討します。どちらも独自の別々のコンテキストウィンドウで実行されるため、メインのターミナルセッションをスリムに保てます。spawn_subagentstart_subtaskの詳細についてはツールを参照してください。

例:大きなファイルのリファクタリング

大きなTypeScriptファイル(src/components/MyComponent.tsx)をリファクタリングする必要がある場合、効果的なアプローチを示します:

  1. 初期概要を取得する
    src/components/MyComponent.tsxの関数とクラスを一覧表示する
  2. 特定の関数をターゲットにする
    src/components/MyComponent.tsxの`processData`関数をPromisesの代わりにasync/awaitを使用するようにリファクタリングする。
  3. 反復的な変更を行う:小さく段階的な変更を行い、各ステップを確認して承認します。

タスクを分割して具体的なコンテキストを提供することで、コンテキストウィンドウの制限内で大きなファイルを効果的に作業できます。

このトピックはいかがですか?