Communitygithub.com

反復検索パターン

サブエージェントのコンテキスト問題を解決するために、コンテキスト検索を段階的に洗練するパターンです。サブエージェントが必要なコンテキストを持たず、検索を複数回に分けて洗練する必要がある場合に使用します。

反復検索パターン とは?

「反復検索パターン」は、マルチエージェントワークフローにおいて、サブエージェントが事前に必要なコンテキストを予測できない場合に、段階的にコンテキストを洗練しながら検索するための設計パターンです。サブエージェントは起動時に限られたコンテキストしか持たないため、必要なファイルやパターン、用語を事前に知ることができません。従来の「すべて送信」「何も送信しない」「推測」などのアプローチは、コンテキスト制限超過や情報不足、誤った推測により失敗する可能性があります。このパターンでは、DISPATCH(初期問い合わせ)→ EVALUATE(関連性評価)→ REFINE(検索条件の更新)→ LOOP(ループ、最大3サイクル)の4フェーズからなるループを実行し、段階的に関連性の高いファイルを収集します。例えば、バグ修正タスクでは最初に「token」「auth」「expiry」などのキーワードで検索し、評価後に「refresh」「jwt」を追加するなど、検索条件を動的に改善します。これにより、コンテキストサイズを最適化しつつ、サブエージェントがタスク遂行に必要な情報を効率的に取得できます。このパターンは、Claude Code、Cursor、CodexなどのAIエージェントツールで利用可能で、特にコードベース探索やRAG風の検索パイプラインの設計に有用です。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/everything-claude-code/tree/main/skills/iterative-retrieval

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

反復検索パターン は何をしますか?

マルチエージェントワークフローにおける「コンテキスト問題」を解決します。サブエージェントは作業を開始するまで自分が必要とするコンテキストを把握できません。

有効化するタイミング

  • サブエージェントが事前に予測できないコードベースコンテキストを必要とする場合
  • コンテキストを段階的に洗練するマルチエージェントワークフローを構築する場合
  • エージェントタスクで「コンテキストが大きすぎる」または「コンテキストが見つからない」エラーが発生する場合
  • コード探索のためのRAG風検索パイプラインを設計する場合
  • エージェントオーケストレーションでトークン使用量を最適化する場合

問題点

サブエージェントは限られたコンテキストで起動されます。サブエージェントは以下の情報を把握していません:

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

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

  • すべて送信: コンテキスト制限を超過
  • 何も送信しない: エージェントが重要な情報を欠く
  • 必要なものを推測: 多くの場合誤っている

解決策: 反復検索

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

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

フェーズ1: DISPATCH

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

// 高レベルの意図から開始
const initialQuery = {
  patterns: ['src/**/*.ts', 'lib/**/*.ts'],
  keywords: ['authentication', 'user', 'session'],
  excludes: ['*.test.ts', '*.spec.ts']
};

// 検索エージェントにディスパッチ
const candidates = await retrieveFiles(initialQuery);

フェーズ2: EVALUATE

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

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

評価に基づいて検索条件を更新します:

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サイクル):

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/** 内で

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/claude-api

Anthropic Claude API patterns for Python and TypeScript. Covers Messages API, streaming, tool use, vision, extended thinking, batches, prompt caching, and Claude Agent SDK. Use when building applications with the Claude API or Anthropic SDKs.

affaan-m/everything-claude-code

End-to-end marketing campaign planning and execution. Covers audience research, positioning, campaign angle definition, landing page copy, email sequences, social posts, ad copy, short-form video scripts, and content calendars. Use as the orchestration layer for multi-channel product launches. Use when planning or executing a multi-channel product launch, or producing landing page, email, social, or ad copy.

affaan-m/everything-claude-code

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/everything-claude-code-conventions

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/frontend-design

Create distinctive, production-grade frontend interfaces with high design quality. Use when the user asks to build web components, pages, or applications and the visual direction matters as much as the code quality.

affaan-m/gget

gget CLI and Python workflow for quick genomic database queries, sequence lookup, BLAST-style searches, enrichment checks, and reproducible bioinformatics evidence logs.

affaan-m/literature-review

Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging.

affaan-m/motion-ui

Production-ready UI motion system for React/Next.js. Use when implementing animations, transitions, or motion patterns.

affaan-m/project-guidelines-example

Example project-specific skill template based on a real production application.

affaan-m/pubmed-database

Direct PubMed and NCBI E-utilities search workflows for biomedical literature, MeSH queries, PMID lookup, citation retrieval, and API-backed literature monitoring.

affaan-m/scholar-evaluation

Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback.

affaan-m/uspto-database

USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

関連スキル