Iterative Retrieval

作者 affaan-mef648e01899b無授權條款275K 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫3 天前更新

サブエージェントのコンテキスト問題を解決するために、コンテキスト取得を段階的に洗練するパターン

僅含說明AI & Agents
AI 產生的概覽

一種四階段模式,用於在多代理工作流程中逐步精煉子代理的上下文檢索。

功能
此技能說明一種迭代檢索模式,協助子代理在事先不知道哪些檔案重要的情況下取得所需上下文。它描述一個四階段循環(分派、評估、精煉、循環),包含相關性評分、查詢精煉,以及最多三輪的限制。內容提供虛擬碼、缺陷修正與功能實作的範例,以及將此模式整合到代理提示中的指引。
適用情境
適用於建構或編排多代理工作流程,且子代理初始上下文有限、需要找出相關檔案或程式碼的情境。適合缺陷修正或功能實作等事先不清楚正確上下文的任務。也適合設計需要可重複上下文收集流程的代理提示。
執行需求
不隨附指令碼,僅為說明性指示。此模式假定執行環境具備檔案搜尋或檢索能力以及子代理編排能力,範例使用 JavaScript 風格的虛擬碼。

反復検索パターン

マルチエージェントワークフローにおける「コンテキスト問題」を解決します。サブエージェントは作業を開始するまで、どのコンテキストが必要かわかりません。

問題

サブエージェントは限定的なコンテキストで起動されます。以下を知りません:

  • どのファイルに関連するコードが含まれているか
  • コードベースにどのようなパターンが存在するか
  • プロジェクトがどのような用語を使用しているか

標準的なアプローチは失敗します:

  • すべてを送信: コンテキスト制限を超える
  • 何も送信しない: エージェントに重要な情報が不足
  • 必要なものを推測: しばしば間違い

解決策: 反復検索

コンテキストを段階的に洗練する4フェーズのループ:

┌─────────────────────────────────────────────┐│                                             ││   ┌──────────┐      ┌──────────┐            ││   │ DISPATCH │─────│ EVALUATE │            ││   └──────────┘      └──────────┘            ││        ▲                  │                 ││        │                  ▼                 ││   ┌──────────┐      ┌──────────┐            ││   │   LOOP   │─────│  REFINE  │            ││   └──────────┘      └──────────┘            ││                                             ││        最大3サイクル、その後続行              │└─────────────────────────────────────────────┘

フェーズ1: DISPATCH

候補ファイルを収集する初期の広範なクエリ:

javascript
// 高レベルの意図から開始const initialQuery = {  patterns: ['src/**/*.ts', 'lib/**/*.ts'],  keywords: ['authentication', 'user', 'session'],  excludes: ['*.test.ts', '*.spec.ts']};
// 検索エージェントにディスパッチconst candidates = await retrieveFiles(initialQuery);

フェーズ2: EVALUATE

取得したコンテンツの関連性を評価:

javascript
function evaluateRelevance(files, task) {  return files.map(file => ({    path: file.path,    relevance: scoreRelevance(file.content, task),    reason: explainRelevance(file.content, task),    missingContext: identifyGaps(file.content, task)  }));}

スコアリング基準:

  • 高(0.8-1.0): ターゲット機能を直接実装
  • 中(0.5-0.7): 関連するパターンや型を含む
  • 低(0.2-0.4): 間接的に関連
  • なし(0-0.2): 関連なし、除外

フェーズ3: REFINE

評価に基づいて検索基準を更新:

javascript
function refineQuery(evaluation, previousQuery) {  return {    // 高関連性ファイルで発見された新しいパターンを追加    patterns: [...previousQuery.patterns, ...extractPatterns(evaluation)],
    // コードベースで見つかった用語を追加    keywords: [...previousQuery.keywords, ...extractKeywords(evaluation)],
    // 確認された無関係なパスを除外    excludes: [...previousQuery.excludes, ...evaluation      .filter(e => e.relevance < 0.2)      .map(e => e.path)    ],
    // 特定のギャップをターゲット    focusAreas: evaluation      .flatMap(e => e.missingContext)      .filter(unique)  };}

フェーズ4: LOOP

洗練された基準で繰り返す(最大3サイクル):

javascript
async function iterativeRetrieve(task, maxCycles = 3) {  let query = createInitialQuery(task);  let bestContext = [];
  for (let cycle = 0; cycle < maxCycles; cycle++) {    const candidates = await retrieveFiles(query);    const evaluation = evaluateRelevance(candidates, task);
    // 十分なコンテキストがあるか確認    const highRelevance = evaluation.filter(e => e.relevance >= 0.7);    if (highRelevance.length >= 3 && !hasCriticalGaps(evaluation)) {      return highRelevance;    }
    // 洗練して続行    query = refineQuery(evaluation, query);    bestContext = mergeContext(bestContext, highRelevance);  }
  return bestContext;}

実践例

例1: バグ修正コンテキスト

タスク: "認証トークン期限切れバグを修正"
サイクル1:  DISPATCH: src/**で"token"、"auth"、"expiry"を検索  EVALUATE: auth.ts(0.9)、tokens.ts(0.8)、user.ts(0.3)を発見  REFINE: "refresh"、"jwt"キーワードを追加; user.tsを除外
サイクル2:  DISPATCH: 洗練された用語で検索  EVALUATE: session-manager.ts(0.95)、jwt-utils.ts(0.85)を発見  REFINE: 十分なコンテキスト(2つの高関連性ファイル)
結果: auth.ts、tokens.ts、session-manager.ts、jwt-utils.ts

例2: 機能実装

タスク: "APIエンドポイントにレート制限を追加"
サイクル1:  DISPATCH: routes/**で"rate"、"limit"、"api"を検索  EVALUATE: マッチなし - コードベースは"throttle"用語を使用  REFINE: "throttle"、"middleware"キーワードを追加
サイクル2:  DISPATCH: 洗練された用語で検索  EVALUATE: throttle.ts(0.9)、middleware/index.ts(0.7)を発見  REFINE: ルーターパターンが必要
サイクル3:  DISPATCH: "router"、"express"パターンを検索  EVALUATE: router-setup.ts(0.8)を発見  REFINE: 十分なコンテキスト
結果: throttle.ts、middleware/index.ts、router-setup.ts

エージェントとの統合

エージェントプロンプトで使用:

markdown
このタスクのコンテキストを取得する際:1. 広範なキーワード検索から開始2. 各ファイルの関連性を評価(0-1スケール)3. まだ不足しているコンテキストを特定4. 検索基準を洗練して繰り返す(最大3サイクル)5. 関連性が0.7以上のファイルを返す

ベストプラクティス

  1. 広く開始し、段階的に絞る - 初期クエリで過度に指定しない
  2. コードベースの用語を学ぶ - 最初のサイクルでしばしば命名規則が明らかになる
  3. 不足しているものを追跡 - 明示的なギャップ識別が洗練を促進
  4. 「十分に良い」で停止 - 3つの高関連性ファイルは10個の平凡なファイルより優れている
  5. 確信を持って除外 - 低関連性ファイルは関連性を持つようにならない

関連項目

  • The Longform Guide - サブエージェントオーケストレーションセクション
  • continuous-learningスキル - 時間とともに改善するパターン用
  • ~/.claude/agents/内のエージェント定義

來源與署名

來源:affaan-m/ecc位於docs/ja-JP/skills/iterative-retrieval提交ef648e0

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架